51單片機(jī)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)和原理

發(fā)布時(shí)間:2024-02-27
定時(shí)器/計(jì)數(shù)器簡(jiǎn)稱定時(shí)器,其作用主要包括產(chǎn)生各種時(shí)標(biāo)間隔、記錄外部事件的數(shù)量等,是微機(jī)中最常用、最基本的部件之一。803l單片機(jī)有2個(gè)16位的定時(shí)器/計(jì)數(shù)器:定時(shí)器0(t0)和定時(shí)器1(t1)。 t0由2個(gè)定時(shí)寄存器th0和tl0構(gòu)成,t1則由th1和tl1構(gòu)成,它們都分別映射在特殊功能寄存器中,從而可以通過對(duì)特殊功能寄存器中這些寄存器的讀寫來實(shí)現(xiàn)對(duì)這兩個(gè)定時(shí)器的操作。作定時(shí)器時(shí),每一個(gè)機(jī)器周期定時(shí)寄存器自動(dòng)加l,所以定時(shí)器也可看作是計(jì)量機(jī)器周期的計(jì)數(shù)器。由于每個(gè)機(jī)器周期為12個(gè)時(shí)鐘振蕩周期,所以定時(shí)的分辨率是時(shí)鐘振蕩頻率的1/12。作計(jì)數(shù)器時(shí),只要在單片機(jī)外部引腳t0(或t1)有從1到0電平的負(fù)跳變,計(jì)數(shù)器就自動(dòng)加1。計(jì)數(shù)的最高頻率一般為振蕩頻率的l/24。
工作方式:
t0或t1無論用作定時(shí)器或計(jì)數(shù)器都有4種工作方式:方式0、方式1、方式2和方式3。除方式3外,t0和t1有完全相同的工作狀態(tài)。下面以t1為例,分述各種工作方式的特點(diǎn)和用法。
1、工作方式0:
13位方式由tl1的低5位和th1的8位構(gòu)成13位計(jì)數(shù)器(tl1的高3位無效)。工作方式0的結(jié)構(gòu)見下圖:
圖中,c/t為定時(shí)/計(jì)數(shù)選擇:c/t=0,t1為定時(shí)器,定時(shí)信號(hào)為振蕩周期12分頻后的脈沖;c/t=l,t1為計(jì)數(shù)器,計(jì)數(shù)信號(hào)來自引腳t1的外部信號(hào)。
定時(shí)器t1能否啟動(dòng)工作,還受到了r1、gate和引腳信號(hào)int1的控制。由圖中的邏輯電路可知,當(dāng)gate=0時(shí),只要tr1=1就可打開控制門,使定時(shí)器工作;當(dāng)gate=1時(shí),只有tr1=1且int1=1,才可打開控制門。gate,tr1,c/t的狀態(tài)選擇由定時(shí)器的控制寄存器tmod,tcon中相應(yīng)位狀態(tài)確定,int1則是外部引腳上的信號(hào)。
在一般的應(yīng)用中,通常使gate=0,從而由trl的狀態(tài)控制tl的開閉:trl=1,打開t1;trl=0,關(guān)閉t1。在特殊的應(yīng)用場(chǎng)合,例如利用定時(shí)器測(cè)量接于int1引腳上的外部脈沖高電平的寬度時(shí),可使gate=1,trl=1。當(dāng)外部脈沖出現(xiàn)上升沿,亦即int1由0變1電平時(shí),啟動(dòng)t1定時(shí),測(cè)量開始;一旦外部脈沖出現(xiàn)下降沿,亦即int1由l變o時(shí)就關(guān)閉了t1。
定時(shí)器啟動(dòng)后,定時(shí)或計(jì)數(shù)脈沖加到tll的低5位,從預(yù)先設(shè)置的初值(時(shí)間常數(shù))開始不斷增1。tl1計(jì)滿后,向thl進(jìn)位。當(dāng)tl1和thl都計(jì)滿之后,置位t1的定時(shí)器回零標(biāo)志tfl,以此表明定時(shí)時(shí)間或計(jì)數(shù)次數(shù)已到,以供查詢或在打開中斷的條件下,可向cpu請(qǐng)求中斷。如需進(jìn)一步定時(shí)/計(jì)數(shù),需用指令重置時(shí)間常數(shù)。
2、工作方式1:
16位方式。與工作方式0基本相同,區(qū)別僅在于工作方式1的計(jì)數(shù)器tl1和th1組成16位計(jì)數(shù)器,從而比工作方式0有更寬的定時(shí)/計(jì)數(shù)范圍。工作方式1的結(jié)構(gòu)見下圖。
3、工作方式2
8位自動(dòng)裝入時(shí)間常數(shù)方式。由tll構(gòu)成8位計(jì)數(shù)器,thl僅用來存放時(shí)間常數(shù)。啟動(dòng)t1前,tll和thl裝入相同的時(shí)間常數(shù),當(dāng)tl1計(jì)滿后,除定時(shí)器回零標(biāo)志tfl置位,具有向cpu請(qǐng)求中斷的條件外,thl中的時(shí)間常數(shù)還會(huì)自動(dòng)地裝入tll,并重新開始定時(shí)或計(jì)數(shù)。所以,工作方式2是一種自動(dòng)裝入時(shí)間常數(shù)的8位計(jì)數(shù)器方式。由于這種方式不需要指令重裝時(shí)間常數(shù),因而操作方便,在允許的條件下,應(yīng)盡量使用這種工作方式。當(dāng)然,這種方式的定時(shí)/計(jì)數(shù)范圍要小于方式0和方式1。工作方式2的結(jié)構(gòu)見下圖.
4、工作方式3
2個(gè)8位方式。工作方式3只適用于定時(shí)器0。如果使定時(shí)器1為工作方式3,則定時(shí)器1將處于關(guān)閉狀態(tài)。
當(dāng)t0為工作方式3時(shí),tho和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ā)生器(見1.4),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í),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
通過上面求定時(shí)/計(jì)數(shù)初值的分析可見,不同工作方式的最大計(jì)數(shù)值或定時(shí)機(jī)器周期數(shù)分
別為;
方式0--213
方式l--216
方式2,3--28
例如,當(dāng)晶振(外部振蕩時(shí)鐘)fosc=6mhz時(shí),方式1的最長(zhǎng)定時(shí)時(shí)間tmax=216×12÷6mhz=131.072ms。這在操作上,只需把th和tl都預(yù)置成00h初值即可。
上一個(gè):筆記本電腦安裝軟件,筆記本電腦安裝軟件沒反應(yīng)(筆記本電腦安裝應(yīng)用軟件)
下一個(gè):大于8位的D/A轉(zhuǎn)換器的接口

PID算法的再理解
結(jié)婚當(dāng)天新娘哭好嗎
硅橡膠電纜YGCMLF46R銅帶屏蔽130負(fù)載下伸長(zhǎng)
蘋果筆記本怎么強(qiáng)制關(guān)機(jī)重啟3遍(蘋果筆記本如果強(qiáng)制關(guān)機(jī))
微信怎么雙開蘋果,蘋果手機(jī)怎么多開微信
茶的選擇很重要
tecsis傳感器具有哪些優(yōu)勢(shì)和特點(diǎn)(德國(guó)tecsis傳感器的應(yīng)用領(lǐng)域及市場(chǎng)前景如何)
天璣900和驍龍888g哪個(gè)好(天璣900和驍龍870g哪個(gè)好)
apple 序列號(hào)含義(iphone序列號(hào)字母代表什么)
割繩子電腦選關(guān)版(割繩子1下載安裝)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos