51手記之標(biāo)準(zhǔn)51(五)
MCS51內(nèi)帶有兩個(gè)可編程16位定時(shí)/計(jì)數(shù)器T0和T1,定時(shí)/計(jì)數(shù)器計(jì)數(shù)脈沖源自單片機(jī)時(shí)鐘時(shí)稱定時(shí)器,計(jì)數(shù)器脈沖源自單片機(jī)P3.4或P3.5時(shí)稱計(jì)數(shù)器。
結(jié)構(gòu):2個(gè)16位T/C分別有2個(gè)8位計(jì)數(shù)器TH0(TH1)、TL0(TL1)組成“+1”計(jì)數(shù)器
控制寄存器:TCON
方式寄存器:TMOD
1.工作原理
1)定時(shí)器
定時(shí)輸入信號(hào):內(nèi)部振蕩信號(hào)的1/12分頻(每個(gè)機(jī)器周期做一次“+1”運(yùn)算),若單片機(jī)晶振頻率為12MHZ,則計(jì)數(shù)周期為1us,由于每個(gè)機(jī)器周期為12個(gè)時(shí)鐘振蕩周期,所以定時(shí)的分辨率是時(shí)鐘振蕩頻率的1/12。
2)計(jì)數(shù)器
由外部引腳(T0為P3.4,T1為P3.5)輸入計(jì)數(shù)脈沖,外部輸入脈沖發(fā)生負(fù)跳變時(shí),進(jìn)行“+1”操作,外部輸入脈沖寬度應(yīng)大于2個(gè)機(jī)器周期;計(jì)數(shù)的最高頻率一般為振蕩頻率的l/24。
2.工作方式
T0或T1無論用作定時(shí)器或計(jì)數(shù)器都有4種工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作狀態(tài)。
1)工作方式0
13位方式由TL0的低5位和TH0的8位構(gòu)成13位計(jì)數(shù)器(TL0的高3位無效)。
定時(shí)器T0能否啟動(dòng)工作,還受到了TR0、GATE和引腳信號(hào)INT0的控制。由圖中的邏輯電路可知,當(dāng)GATE=0時(shí),只要TR0=1就可打開控制門,使定時(shí)器工作;當(dāng)GATE=1時(shí),只有TR0=1且INT0=1,才可打開控制門。GATE,TR0,C/T的狀態(tài)選擇由定時(shí)器的控制寄存器TMOD,TCON中相應(yīng)位狀態(tài)確定,INT0則是外部引腳上的信號(hào)。
在一般的應(yīng)用中,通常使GATE=0,從而由TRl的狀態(tài)控制Tl的開閉:TR0=1,打開T0;TR0=0,關(guān)閉T0。在特殊的應(yīng)用場(chǎng)合,例如利用定時(shí)器測(cè)量接于INT0引腳上的外部脈沖高電平的寬度時(shí),可使GATE=1,TR0=1。當(dāng)外部脈沖出現(xiàn)上升沿,亦即INT0由0變1電平時(shí),啟動(dòng)T0定時(shí),測(cè)量開始;一旦外部脈沖出現(xiàn)下降沿,亦即INT0由l變O時(shí)就關(guān)閉了T1。定時(shí)器啟動(dòng)后,定時(shí)或計(jì)數(shù)脈沖加到TL0的低5位,從預(yù)先設(shè)置的初值(時(shí)間常數(shù))開始不斷增1。TL0計(jì)滿后,向TH0進(jìn)位。當(dāng)TL0和TH0都計(jì)滿之后,置位T1的定時(shí)器回零標(biāo)志TF0,以此表明定時(shí)時(shí)間或計(jì)數(shù)次數(shù)已到,以供查詢或在打開中斷的條件下,可向CPU請(qǐng)求中斷。如需進(jìn)一步定時(shí)/計(jì)數(shù),需用指令重置時(shí)間常數(shù)。
定時(shí)初值==(213-(TH0,TL0))/f==(8192-(TH0,TL0))/f,f為計(jì)數(shù)脈沖頻率
2)工作方式1
通常情況下,T0不運(yùn)行于工作方式3,只有在T1處于工作方式2,并不要求中斷的條件下才可能使用。這時(shí),T1往往用作串行口波特率發(fā)生器,TH0用作定時(shí)器,TL0作為定時(shí)器或計(jì)數(shù)器。所以,方式3是為了使單片機(jī)有1個(gè)獨(dú)立的定時(shí)器/計(jì)數(shù)器、1個(gè)定時(shí)器以及1個(gè)串行口波特率發(fā)生器的應(yīng)用場(chǎng)合而特地提供的。這時(shí),可把定時(shí)器l用于工作方式2,把定時(shí)器0用于工作方式3。
2)工作方式1
16位方式,與工作方式0基本相同,區(qū)別僅在于工作方式1的計(jì)數(shù)器TL0和TH0組成16位計(jì)數(shù)器,從而比工作方式0有更寬的定時(shí)/計(jì)數(shù)范圍。
定時(shí)初值==(216-(TH0,TL0))/f==(65536-(TH0,TL0))/f,f為計(jì)數(shù)脈沖頻率
3)工作方式2
8位自動(dòng)裝入時(shí)間常數(shù)方式。由TL0構(gòu)成8位計(jì)數(shù)器,TH0僅用來存放時(shí)間常數(shù)。
啟動(dòng)T0前,TL0和TH0裝入相同的時(shí)間常數(shù),當(dāng)TL0計(jì)滿后,除定時(shí)器回零標(biāo)志TF0置位,具有向CPU請(qǐng)求中斷的條件外,TH0中的時(shí)間常數(shù)還會(huì)自動(dòng)地裝入TL0,并重新開始定時(shí)或計(jì)數(shù)。所以,工作方式2是一種自動(dòng)裝入時(shí)間常數(shù)的8位計(jì)數(shù)器方式。由于這種方式不需要指令重裝時(shí)間常數(shù),因而操作方便,在允許的條件下,應(yīng)盡量使用這種工作方式。
定時(shí)初值==(28-(TL0))/f==(256-(TL0))/f,f為計(jì)數(shù)脈沖頻率
4)工作方式3
2個(gè)8位方式。工作方式3只適用于定時(shí)器0。如果使定時(shí)器1為工作方式3,則定時(shí)器1將處于關(guān)閉狀態(tài)。
當(dāng)T0為工作方式3時(shí),TH0和TL0分成2個(gè)獨(dú)立的8位計(jì)數(shù)器。其中,TL0既可用作定時(shí)器,又可用作計(jì)數(shù)器,并使用原T0的所有控制位及其定時(shí)器回零標(biāo)志和中斷源。TH0只能用作定時(shí)器,并使用T1的控制位TRl、回零標(biāo)志TFl和中斷源。通常情況下,T0不運(yùn)行于工作方式3,只有在T1處于工作方式2,并不要求中斷的條件下才可能使用。這時(shí),T1往往用作串行口波特率發(fā)生器,TH0用作定時(shí)器,TL0作為定時(shí)器或計(jì)數(shù)器。所以,方式3是為了使單片機(jī)有1個(gè)獨(dú)立的定時(shí)器/計(jì)數(shù)器、1個(gè)定時(shí)器以及1個(gè)串行口波特率發(fā)生器的應(yīng)用場(chǎng)合而特地提供的。這時(shí),可把定時(shí)器l用于工作方式2,把定時(shí)器0用于工作方式3。
定時(shí)初值0==(28-(TL0))/f==(256-(TL0))/f,f為計(jì)數(shù)脈沖頻率
定時(shí)初值1==(28-(TH0))/f==(256-(TH0))/f,f為計(jì)數(shù)脈沖頻率
3.控制寄存器
定時(shí)器/計(jì)數(shù)器T0和T1有2個(gè)控制寄存器-TMOD和TCON,它們分別用來設(shè)置各個(gè)定時(shí)器/計(jì)數(shù)器的工作方式,選擇定時(shí)或計(jì)數(shù)功能,控制啟動(dòng)運(yùn)行,以及作為運(yùn)行狀態(tài)的標(biāo)志等。其中,TCON寄存器中另有4位用于中斷系統(tǒng)。
1)定時(shí)器方式控制寄存器TMOD
TMOD的高4位用于T1,低4使用于T0,4種符號(hào)的含義如下:
GATE:門控制位。其作用見圖1.6。GATE和軟件控制位TR、外部引腳信號(hào)INT的狀態(tài),共同控制定時(shí)器/計(jì)數(shù)器的打開或關(guān)閉。
C/T:定時(shí)器/計(jì)數(shù)器選擇位。C/T=1,為計(jì)數(shù)器方式;C/T=0,為定時(shí)器方式。
M1M0:工作方式選擇位,定時(shí)器/計(jì)數(shù)器的4種工作方式由M1M0設(shè)定。
M1M0=00:工作方式0(13位方式)。
M1M0=01:工作方式1(16位方式)。
M1M0=10:工作方式2(8位自動(dòng)裝入時(shí)間常數(shù)方式)。
MlM0=11:工作方式3(2個(gè)8位方式--僅對(duì)T0)。
GATE:門控制位。其作用見圖1.6。GATE和軟件控制位TR、外部引腳信號(hào)INT的狀態(tài),共同控制定時(shí)器/計(jì)數(shù)器的打開或關(guān)閉。
C/T:定時(shí)器/計(jì)數(shù)器選擇位。C/T=1,為計(jì)數(shù)器方式;C/T=0,為定時(shí)器方式。
M1M0:工作方式選擇位,定時(shí)器/計(jì)數(shù)器的4種工作方式由M1M0設(shè)定。
M1M0=00:工作方式0(13位方式)。
M1M0=01:工作方式1(16位方式)。
M1M0=10:工作方式2(8位自動(dòng)裝入時(shí)間常數(shù)方式)。
MlM0=11:工作方式3(2個(gè)8位方式--僅對(duì)T0)。
2)定時(shí)器控制寄存器TCON
TFl,TRl用于定時(shí)器T1;TF0,TR0用于定時(shí)器T0。兩組符號(hào)有相同的含義。
TF:定時(shí)器/計(jì)數(shù)器中斷請(qǐng)求標(biāo)志位。當(dāng)定時(shí)器計(jì)滿回零時(shí),TF=1,并可申請(qǐng)中斷;當(dāng)CPU響應(yīng)中斷并進(jìn)入中斷服務(wù)程序后,TF自動(dòng)清零。如對(duì)TF查詢,定時(shí)器回零后,要用指令將TF清零。
TR:定時(shí)器/計(jì)數(shù)器開閉控制位。
IEl,ITl用于外部中斷1(1NTl);IE0,IT0用于外部中斷0(1NT0)。兩組符號(hào)的含義相同。
IT:下跳沿/低電平引起外部中斷請(qǐng)求的選擇位。IT=1,由下跳沿引起;IT=0,由低電平引起。
IE:外部中斷的中斷申請(qǐng)標(biāo)志。IE=0,表明無外部中斷請(qǐng)求;IE=1,表明有外部中斷請(qǐng)求。當(dāng)有外部中斷請(qǐng)求時(shí),IE自動(dòng)為1,單片機(jī)CPU響應(yīng)此中斷后,IE自動(dòng)清零。
TF:定時(shí)器/計(jì)數(shù)器中斷請(qǐng)求標(biāo)志位。當(dāng)定時(shí)器計(jì)滿回零時(shí),TF=1,并可申請(qǐng)中斷;當(dāng)CPU響應(yīng)中斷并進(jìn)入中斷服務(wù)程序后,TF自動(dòng)清零。如對(duì)TF查詢,定時(shí)器回零后,要用指令將TF清零。
TR:定時(shí)器/計(jì)數(shù)器開閉控制位。
IEl,ITl用于外部中斷1(1NTl);IE0,IT0用于外部中斷0(1NT0)。兩組符號(hào)的含義相同。
IT:下跳沿/低電平引起外部中斷請(qǐng)求的選擇位。IT=1,由下跳沿引起;IT=0,由低電平引起。
IE:外部中斷的中斷申請(qǐng)標(biāo)志。IE=0,表明無外部中斷請(qǐng)求;IE=1,表明有外部中斷請(qǐng)求。當(dāng)有外部中斷請(qǐng)求時(shí),IE自動(dòng)為1,單片機(jī)CPU響應(yīng)此中斷后,IE自動(dòng)清零。
評(píng)論