51單片機(jī)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)和原理
下才可能使用。這時(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í)器/計(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在特殊功能寄存器中,字節(jié)地址為89H,無位地址。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)。
2.定時(shí)器控制寄存器--TCON
TCON在特殊功能寄存器中,字節(jié)地址為88H,位地址(由低位到高位)為88H一8FH,由于有位地址,十分便于進(jìn)行位操作。
TCON的格式如下圖所示。其中,TFl,TRl,TF0和TR0位用于定時(shí)器/計(jì)數(shù)器;IEl,ITl,IEo和IT0位用于中斷系統(tǒng)。
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)清零。
定時(shí)/計(jì)數(shù)初值的求取方法
8031單片機(jī)的定時(shí)器/計(jì)數(shù)器采用增量式計(jì)數(shù)。也就是說,當(dāng)運(yùn)行于定時(shí)器方式時(shí),每隔一個(gè)機(jī)器周期定時(shí)器自動(dòng)加1;當(dāng)運(yùn)行于計(jì)數(shù)器方式時(shí),每當(dāng)引腳出現(xiàn)下跳沿,計(jì)數(shù)器自動(dòng)加1。無論是作定時(shí)用還是計(jì)數(shù)用,當(dāng)T0或Tl加滿回零后,定時(shí)器回零標(biāo)志置1。而當(dāng)允許中斷時(shí),TF可以申請(qǐng)中斷進(jìn)而在中斷服務(wù)程序中作相應(yīng)的操作;TF也可用程序判斷定時(shí)到或計(jì)數(shù)滿的標(biāo)志位。
那么,怎樣確定定時(shí)或計(jì)數(shù)初值(又稱為時(shí)間常數(shù)),以便達(dá)到要求的定時(shí)時(shí)間或計(jì)數(shù)值呢?下面作簡(jiǎn)要介紹,并舉兩個(gè)例子加以說明。
設(shè)T0(或T1)運(yùn)行于計(jì)數(shù)器方式,要求計(jì)數(shù)X個(gè)外部脈沖后T0(或T1)回零,則計(jì)數(shù)初值C的求取方法如下:
因?yàn)榛亓愕暮x是指加滿到計(jì)數(shù)器的模值,即
x十C=模
所以 C=模一x=模十(一x)=(x)求補(bǔ)
由此可見,計(jì)數(shù)初值的大小等于需要計(jì)數(shù)的個(gè)數(shù)x求補(bǔ)運(yùn)算后的結(jié)果。
又若T0(或T1)運(yùn)行于定時(shí)器方式,需定時(shí)tvs,則計(jì)數(shù)脈沖數(shù)為。其中,MC為機(jī)器周期(單片為us)同理可知,定時(shí)初值為。
值的指出的是,對(duì)于定時(shí)器/計(jì)數(shù)器的4種不同工作方式,T0或T1的位數(shù)不同,模值也因而不同,求補(bǔ)運(yùn)算要按相應(yīng)位數(shù)的長(zhǎng)度來求。
例1:T0運(yùn)行于計(jì)數(shù)器狀態(tài),工作于方式1(16位方式),要求外部引腳出現(xiàn)3個(gè)脈沖后,TH0,TL0全回零(以便申請(qǐng)中斷)。求計(jì)數(shù)初值C。
解:C=(0003H)求補(bǔ)=FFFDH
例2:T0運(yùn)行于定時(shí)器狀態(tài),時(shí)鐘振蕩周期為12MHZ,要求定時(shí)100us。求不同工作方式時(shí)的定時(shí)初值。
解:因?yàn)闄C(jī)器周期MC=12/12MHZ=1us
所以要計(jì)數(shù)的賈器周期個(gè)數(shù)為64H。
應(yīng)注意定時(shí)器在工作方式0時(shí)的初值裝入方法。由于方式0是13位定時(shí)/計(jì)數(shù)方式,對(duì)于T0而言,高8位初值裝入TH0,低5位初值裝入TL0的低5位(TL0的高3位無效)。所以對(duì)于上例,要裝入1F9CH初值時(shí),可安排成:
在具體裝入初值時(shí),必須把11111100B裝入TH0,而把***11100B裝入TL0。用指令表示即:
MOV TH0,#0FCH ;#FCHTH0
MOV TL0,#1CH ;#1CHTL0
51單片機(jī)相關(guān)文章:51單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理
評(píng)論