第9課 定時(shí)器
1、定時(shí)器/計數器概述
51單片機內部共有兩個(gè)定時(shí)器/計數器模塊T0和T1,對于52單片機內部又增加了定時(shí)器T3。它們即具有定時(shí)功能,也可以作計數功能,可以通過(guò)相應的寄存器進(jìn)行設置。但不論是用于定時(shí)功能還是計數功能,其基本原理都是一樣的,如圖1所示為定時(shí)器/計數器的結構圖,內部為一個(gè)加1計數器,由高8位TH0(或TH1)和低8位TL0(或TL1)兩個(gè)計數寄存器組成。TMOD是定時(shí)器/計數器的工作模式和工作方式寄存器,用來(lái)確定是處于定時(shí)模式還是計數模式以及何種工種方式,這個(gè)后面講解寄存器的時(shí)會(huì )講到。TCON為控制寄存器,用來(lái)控制定時(shí)器/計數器的啟動(dòng)、停止及溢出標志等的設置。

圖1 定時(shí)器/計數器的結構框圖
工作原理如圖的所示,加1計數器相當于一個(gè)裝數的容器,每來(lái)一個(gè)脈沖自動(dòng)加1,當數裝滿(mǎn)后便自動(dòng)溢出,如果此時(shí)設置的中斷,CPU便會(huì )停止當前正在執行的工作,去執行中斷函數內的程序。這里也可以形象把計數器看作一個(gè)裝水的水桶,每來(lái)一滴水,水桶的水便會(huì )增加一點(diǎn),當水裝滿(mǎn)了后,便會(huì )溢出。
加1計數器的計數脈沖有兩個(gè)來(lái)源,一個(gè)是由系統時(shí)鐘振蕩器輸出脈沖經(jīng)過(guò)12分頻后送來(lái),一個(gè)是由外部引腳T0(P34引腳)和T1(P35引腳)送來(lái)的外部脈沖(通常為下降沿),前者主要用于定時(shí),后者主要用于計數。每來(lái)一個(gè)脈沖時(shí),計數器會(huì )自動(dòng)加1,當加到全為1時(shí),再來(lái)一個(gè)脈沖,計數器便會(huì )自動(dòng)清0,且計數器此時(shí)會(huì )溢出并使TCON寄存器中的TF0和TF1置1,如果此時(shí)設置了定時(shí)器中斷允許,便會(huì )自動(dòng)的向CPU發(fā)出中斷請求。

圖2 定時(shí)器/計數器的工作原圖
可能大家還是不明白,這樣為什么就可以用來(lái)進(jìn)行定時(shí)和計數呢,這里我們以通俗的例子解釋一下定時(shí),還是以水桶裝水為例,假設水桶開(kāi)始一滴水都沒(méi)有(相當于計數器內部全為0),此時(shí)來(lái)一滴水(相當于來(lái)一個(gè)脈沖),水桶的水便會(huì )增加一滴(相當于計數器自動(dòng)加1),而水桶的容積是規定了的(相當于計數器最大計數值),水桶的水總會(huì )有滿(mǎn)的時(shí)候(相當于計數器加到全部為1),此時(shí)假設每來(lái)一滴水的時(shí)間我們知道或者人為可以設置,水桶從一滴水沒(méi)有到全部裝滿(mǎn)就會(huì )有一個(gè)時(shí)間,這個(gè)就是定時(shí)時(shí)間值。
也就是說(shuō),我們如果知道每來(lái)一個(gè)脈沖相應的時(shí)間t,又知道加1計數器最大可以裝多少數n,我們就可以知道這個(gè)時(shí)間值T,即T=nt。而這個(gè)T的時(shí)間通常是固定的,實(shí)際應用時(shí)需要不同的定時(shí)時(shí)間,我們可以采用預先在計數器內裝一定的初值(相當于在水桶內先裝一些水),然后在這個(gè)初值的基本上再來(lái)相應脈沖,計數器自動(dòng)加1,一直到溢出,我們就可以得到任意想要的定時(shí)時(shí)間。
從圖2中我們還可以看出,定時(shí)器/計數器還有一個(gè)控制開(kāi)關(guān),此開(kāi)關(guān)可以控制定時(shí)器計數器相應的啟動(dòng)和停止。而此開(kāi)關(guān)的開(kāi)閉主要是由圖2左下部的TRX 、GATE等信號共同作用,這里都是門(mén)電路,可以由數電的知道解釋?zhuān)驗楸容^簡(jiǎn)單,這里我就不作說(shuō)明,后面結合的相關(guān)的寄存器進(jìn)行介紹。
2、定時(shí)器/計數器相關(guān)寄存器
與定時(shí)器/計數器相關(guān)的寄存器主要有兩個(gè)(編程時(shí)如涉及到中斷,還要用到中斷相關(guān)的寄存器,前面已經(jīng)講可),一個(gè)是工作模式及工作方式設置寄存器TMOD,一個(gè)就是跟控制有關(guān)(就是圖2中開(kāi)關(guān)的設置有關(guān)的)寄存器TCON,下面分別對其進(jìn)行介紹。
注意:對單片機內部寄存器的說(shuō)明相當于對結構原理的解釋?zhuān)栽趩纹瑱C內部功能模塊看不明白時(shí),也可以借助相關(guān)寄存器的說(shuō)明加以理解。
(1)定時(shí)器工作模式及工作方式寄存器TMOD
工作方式寄存器TMOD用于設置定時(shí)/計數器的工作模式及工作方式,低四位用于T0,高四位用于T1。其格式如下:

GATE:門(mén)控位。GATE=0時(shí),只要用軟件使TCON中的TR0或TR1為1,就可以啟動(dòng)定時(shí)/計數器工作;GATA=1時(shí),要用軟件使TR0或TR1為1,同時(shí)外部中斷引腳或也為高電平時(shí),才能啟動(dòng)定時(shí)/計數器工作。即此時(shí)定時(shí)器的啟動(dòng)多了一條件。
C/T :定時(shí)/計數模式選擇位。C/T=0為定時(shí)模式;C/T =1為計數模式。
M1M0:工作方式設置位。定時(shí)/計數器有四種工作方式,由M1M0進(jìn)行設置。具體說(shuō)明如下表:

(2)定時(shí)器/計數器控制寄存器TCON
TCON的低4位用于控制外部中斷,已在前面介紹。TCON的高4位用于控制定時(shí)/計數器的啟動(dòng)和中斷申請。其格式如下:

TF1(TCON.7):T1溢出中斷請求標志位。T1計數溢出時(shí)由硬件自動(dòng)置TF1為1。CPU響應中斷后TF1由硬件自動(dòng)清0。T1工作時(shí),CPU可隨時(shí)查詢(xún)TF1的狀態(tài)。所以,TF1可用作查詢(xún)測試的標志。TF1也可以用軟件置1或清0,同硬件置1或清0的效果一樣。
TR1(TCON.6):T1運行控制位。TR1置1時(shí),T1開(kāi)始工作;TR1置0時(shí),T1停止工作。TR1由軟件置1或清0。所以,用軟件可控制定時(shí)/計數器的啟動(dòng)與停止。
TF0(TCON.5):T0溢出中斷請求標志位,其功能與TF1類(lèi)同。
關(guān)鍵詞:
定時(shí)器單片
相關(guān)推薦
技術(shù)專(zhuān)區
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線(xiàn)
- 開(kāi)關(guān)電源
- 單片機
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機控制
- 藍牙
- PLC
- PWM
- 汽車(chē)電子
- 轉換器
- 電源管理
- 信號放大器
評論