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