單片機(jī)常用功能模塊的使用 Part4. 定時器
①、軟件定時:如常用的延時程序 Delay(),在定時過程中,CPU 循環(huán)測試延時變量是否滿足條件,此時 CPU 利用率低下;
本文引用地址:http://m.butianyuan.cn/article/201611/315368.htm②、硬件定時:如外部芯片555 時基電路,通過外部阻容,達(dá)到一定的延時功能,改變阻容大小可以改變延時長度,這種定時器取決于硬件,設(shè)定好以后不能通過軟件更改;
③、定時器:利用單片機(jī)內(nèi)部定時器,實(shí)現(xiàn)對時間的操作。
1、定時器功能:
(1)、定時:產(chǎn)生一個標(biāo)準(zhǔn)的時間間隔:如 20 ms,100 ms 等,單片機(jī)使用這種方式可以產(chǎn)生一個符合某一要求的脈沖方波;
(2)、計數(shù):對外部的事件(脈沖)進(jìn)行統(tǒng)計,很明顯外部事件的發(fā)生是隨機(jī)的,單片機(jī)不可能預(yù)知外部事件何時發(fā)生,但可以進(jìn)行統(tǒng)計,當(dāng)達(dá)到所要求的數(shù)值時,單片機(jī)進(jìn)行相應(yīng)的操作。
2、四種工作模式:
模式 0:13 位計數(shù)器模式
在某一個初值的基礎(chǔ)上加 1 計數(shù),當(dāng)計數(shù)器計滿為全“1”,再來一個計數(shù)脈沖時,就產(chǎn)生一個“溢出中斷信號”TF1=1。
注:由于低 8 位計數(shù)器中的高三位沒有參與工作,故填裝初值時應(yīng)“避開”此三位。
模式 1:16 位定時/計數(shù)模式
類同于模式 0,由于兩個計數(shù)器為完整的 8 位,故將計算好的 16 位初值可直接填裝到 TH、TL 中。
模式 2:8 位自動重裝初值模式
TL 做計數(shù)器,TH 做初值寄存器,工作前 TL1,TH1 分別預(yù)置相同的初值,TL1 計數(shù)時,產(chǎn)生溢出的同時,將 TH1 中的初值自動重裝 TL1,TL1 繼續(xù)計數(shù)。
模式 3:組合擴(kuò)展模式(僅適用于 T0)
將 T0 和 T1 重新進(jìn)行“拆分、組合”,將 T0 變?yōu)橛?TH0,TL0 組成的兩個獨(dú)立的 8 位定時/計數(shù)器。
補(bǔ)充:四種模式比較:
3、定時器參數(shù):
(1)、定時器的個數(shù):網(wǎng)上見到的 51 單片機(jī)教程都說定時器有 2 個:定時器 0 和定時器 1,實(shí)際上有的單片機(jī)有 3 個定時器,如博主買的開發(fā)板上的單片機(jī):STC89C54RD+,因此,編程時注意看好有幾個定時器……
(2)、TL,TH:初值寄存器,分別是低 8 位,高 8 位,后邊加上一個數(shù)字 0 或 1,代表定時器 0 或定時器 1
(3)、TMOD:模式控制寄存器,屬于 SFR 特殊功能寄存器,地址:89H,決定定時/計數(shù)器的四種工作模式,8 位
GATE 選通門:GATE=0 時,只要 TR=1,計數(shù)器就開始工作
GATE=1 時,只有 INT=TR=1 時,計數(shù)器工作(用來測量 INT 腳高電平脈沖的寬度)
C/T:計數(shù)器輸入脈沖選擇開關(guān),決定著計數(shù)器的“定時”或“計數(shù)”的兩種工作方式
C/T=0:定時方式:計數(shù)器接收內(nèi)部時鐘信號 fosc
C/T=1:計數(shù)方式:計數(shù)器接收引腳上的外部信號
M1、M0 模式選擇:確定 4 種工作模式
(4)、TCON:控制寄存器,屬于 SFR 特殊功能寄存器,地址:88H,8 位
TF:定時器溢出標(biāo)志,計數(shù)器溢出時硬件自動置位,即 TF=1,進(jìn)入中斷后再由硬件自動清除(TF=0)
TR:計數(shù)器的控制位
TR=1:計數(shù)器開始工作
TR=0:計數(shù)器停止計數(shù)
IE:外部中斷 INT 的請求標(biāo)志
當(dāng)單片機(jī)檢測到 INT 引腳上有下降沿時,IE=1 申請中斷,進(jìn)入中斷服務(wù)程序時,硬件自動清除 IE 標(biāo)志
IT:外中斷觸發(fā)類型控制
IT=1 時,外中斷信號的下降沿觸發(fā) IE 標(biāo)志
IT=0 時,外中斷信號的低電平觸發(fā) IE 標(biāo)志
(5)、作為“定時器”使用時,“定時”與“初值”的關(guān)系如下:
T = ( M - TC ) ×t
其中:T:定時時間
M:計數(shù)器的模
TC:計數(shù)初值
t:計數(shù)器計數(shù)脈沖的周期(t = fosc / 12)
注:具體計算實(shí)例,參見前面“四種模式比較”中的第二張圖……
評論