哪些寄存器與定時/計數(shù)器相關(guān)?如何初始化定時/計數(shù)器?
單片機可以通過“定時/計數(shù)模式選擇位C/T”令定時/計數(shù)器工作于定時或計數(shù)模式下,也可通過“工作方式選擇位M1M0”設(shè)定其工作方式。C/T和M1M0等與定時/計數(shù)器有關(guān)的位在寄存器TCON或TMOD中,見表4-8和表4-9。
TCON寄存器(見表4-8)的高4位與定時器有關(guān),其作用分別如下:
1)TR0:定時/計數(shù)器0(T0)的運行控制位,若TR0=0,則定時/計數(shù)器0停止工作,若TR0=1,則定時/計數(shù)器0開始工作;TR0可以由軟件置1和清0,因此可以通過程序控制定時/計數(shù)器的啟動和停止。
2)TF0:定時/計數(shù)器0(T0)的溢出中斷請求標(biāo)志位,定時/計數(shù)器溢出時,由單片機硬件置1;進入定時/計數(shù)器的中斷服務(wù)處理程序后,單片機硬件自動將TF0清0。另外,TF0也可以被位操作指令SETB和CLR置1和清0,其作用與硬件的自動置1和清0相同。
3)TR1:定時/計數(shù)器1(T1)的運行控制位,其作用與TR0相似。
4)TF1:定時/計數(shù)器1(T1)的溢出中斷請求標(biāo)志位,其作用與TF0相似。
TMOD寄存器(見表4-9)是不可按位尋址的寄存器,低4位屬于T0,高4位屬于T1,其中各位的作用分別如下:
1)C/T:定時/計數(shù)器模式選擇位,若C/T=0,則為定時模式,若C/T=1,則為計數(shù)模式。
2)M1M1:定時/計數(shù)器工作方式選擇位,M1M0與工作方式的對應(yīng)關(guān)系見表4-10。
3)GATE:門控位,可以輔助TR0和TR1控制定時/計數(shù)器的啟動和停止。當(dāng)GATE=0時,定時/計數(shù)器的啟動和停止僅受TR0和TR1控制。當(dāng)GATE=1時,要啟動定時/計數(shù)器工作,除了將TR0和TR1置為1,還要求外部中斷引腳INT0和INT1為高電平。GATE=1常用于測量外部中斷引腳INT0和INT1上高電平信號持續(xù)的時間,除此之外,通常將GATE清0。
定時/計數(shù)器的初始化
1.定時/計數(shù)器的初始化編程步驟MCS-51單片機的定時/計數(shù)器是可編程的,在工作前需要進行初始化,其步驟如下:1)通過TMOD寄存器中的M1和M0位確定工作方式。2)根據(jù)要求設(shè)定定時/計數(shù)器的初值M,并將其存入相關(guān)的特殊功能寄存器。3)根據(jù)需要設(shè)定中斷優(yōu)先級別寄存器IP的值,以確定各中斷源的優(yōu)先級別。
4)根據(jù)需要設(shè)定中斷允許寄存器IE,以開放相應(yīng)的中斷。
5)將TCON中的TR0(TR1)置1,以啟動定時/計數(shù)器工作。
2.定時/計數(shù)器初值的計算
在定時/計數(shù)器工作過程中,定時“時間到”或計數(shù)“個數(shù)到”的標(biāo)志是定時/計數(shù)器產(chǎn)生溢出,并將中斷請求標(biāo)志位TF0或TF1置1。定時/計數(shù)器初值的計算即以此為基礎(chǔ)。
(1)定時方式的初值計算
假設(shè):單片機的機器周期為Tm,定時器的位數(shù)和初值分別為N和M,則在定時方式下,當(dāng)定時器溢出時,定時器累計的機器周期個數(shù)Q=2N-M,而Q個機器周期對應(yīng)的時長T=Q×Tm。
基于上述理解可知,定時器定時時間T與Tm、N和M有關(guān),即
由式(4-1)可知,定時器初值M與定時時間T的關(guān)系為
3.定時/計數(shù)器最大定時時間和計數(shù)值的計算
在定時/計數(shù)器的實際應(yīng)用中,往往需要根據(jù)定時/計數(shù)器的最大定時時間和計數(shù)值初步確定定時/計數(shù)器的工作方式,以方便后續(xù)的程序處理。
(1)最大定時時間的計算
由式(4-1)可知,定時/計數(shù)器進行定時操作時,其最大定時時間與單片機的機器周期Tm、定時/計數(shù)器的初值N和工作方式有關(guān)。當(dāng)N和Tm確定后,若初值M=0,即可獲得最大的定時時間Tmax為
(2)最大計數(shù)值的計算
由式(4-3)可知,定時/計數(shù)器進行計數(shù)操作時,其最大計數(shù)值Qmax與定時/計數(shù)器的初值N和工作方式有關(guān)。當(dāng)定時/計數(shù)器的工作方式確定后,若初值M=0,即可獲得最大的計數(shù)值為