版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2第6章定時器計數(shù)器沈陽航空航天大學(xué)2第6章定時器計數(shù)器沈陽航空航天大學(xué)12本講課程主要內(nèi)容(1)定時/計數(shù)器的基本概念(2)定時/計數(shù)器的編程方法(3)定時/計數(shù)器編程舉例2本講課程主要內(nèi)容(1)定時/計數(shù)器的基本概念23定時器/計數(shù)器兩個16位定時/計數(shù)器存放初值的SFR
T0:
TH0、TL0
T1:
TH1、TL1其它相關(guān)的SFR:TMOD(工作方式控制寄存器)TCON(控制寄存器)定時功能時,每個機(jī)器周期定時器加1計數(shù)功能時,在外部相應(yīng)輸入腳(T0和T1)產(chǎn)生下降沿,計數(shù)器加1。3定時器/計數(shù)器兩個16位定時/計數(shù)器其它相關(guān)的SFR:TM346.1
定時計數(shù)器的結(jié)構(gòu)框圖46.1定時計數(shù)器的結(jié)構(gòu)框圖4
6.2
定時器的控制字工作方式控制寄存器TMOD(89H)GATEC/TM1
M0|
GATE
C/T
M1
M0注意:TMOD不能位尋址控制寄存器TCON
(88H)
–
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0復(fù)位后兩個寄存器的狀態(tài)均為00H。
5 6.2定時器的控制字GATEC/TM1M0|566.2.1
TMOD:工作方式控制寄存器GATE:門控位GATE=1,T0、T1是否工作受外部引腳輸入電平的控制,INT0引腳控制T0運(yùn)行,INT1引腳控制T1運(yùn)行。可用于測量在INT0或INT1引腳出現(xiàn)的正脈沖的寬度。GATE=0,定時/計數(shù)器的運(yùn)行不受外部引腳INT0或INT1的控制。C/T位:計數(shù)器模式和定時器模式的選擇位C/T=0,為定時器模式。內(nèi)部計數(shù)器對晶振頻率12分頻后的脈沖計數(shù)(該脈沖的周期等于機(jī)器周期),每個周期計數(shù)值加1。若選擇12MHz晶振,則計數(shù)頻率為1MHz。從計數(shù)值便可求得計數(shù)的時間,所以稱為定時器模式;C/T=1,設(shè)置為計數(shù)器模式,計數(shù)器對由引腳T0(P3.4腳)或T1
(P3.5腳)輸入的外部脈沖(負(fù)跳變)計數(shù),允許最高計數(shù)頻率為晶振頻率的1/24。66.2.1TMOD:工作方式控制寄存器GATE:門控位67工作方式控制寄存器TMODM1、M0工作方式選擇位7工作方式控制寄存器TMODM1、M0工作方式選擇位786.2.2
定時/計數(shù)器控制寄存器TCONTF1位:T1計數(shù)溢出標(biāo)志位。當(dāng)T1計數(shù)溢出時,由硬件置1,申請中斷。進(jìn)入中斷服務(wù)程序后被硬件自動清0。TR1位:T1計數(shù)運(yùn)行控制位。由軟件置1或清0。當(dāng)GATE位(TMOD.7)=0時,若TR1=1,允許T1計數(shù);TR1=0時,禁止T1計數(shù)。當(dāng)GATE位=1時,TR1=1且INT1=1時,允許T1計數(shù)。TF0位:T0計數(shù)溢出標(biāo)志位,功能同TF1。TR0位:T0計數(shù)運(yùn)行控制位,由軟件置1或清0。當(dāng)GATE位(TMOD.3)=0時,若TR0=1,允許T0計數(shù);TR0=0時,禁止T0計數(shù)。當(dāng)GATE位=1時,TR0=1且INT0=1時,允許T0計數(shù)。86.2.2定時/計數(shù)器控制寄存器TCONTF1位:T1896.3
定時/計數(shù)器的4種工作方式方式0、方式1(13位、16位定時計數(shù)方式)T1工作于方式0的等效框圖(M1M0=00、01)GATE=0、A=1、TR1=1GATE=1、INT1=1、TR1=1。注意定時器初值與定時時間的不同96.3定時/計數(shù)器的4種工作方式方式0、方式1(13位910
6.3.1
方式0、方式1的說明定時/計數(shù)器T1工作在方式0時,為13位的計數(shù)器,由TL1的低5位和TH1的8位所構(gòu)成。TL1低5位溢出向TH1進(jìn)位,TH1計數(shù)溢出置位TCON中的溢出標(biāo)志位TF1。GATE位的狀態(tài)決定定時/計數(shù)器運(yùn)行控制取決于TR1一個條件還是TR1和INT1引腳這兩個條件。
當(dāng)GATE=0時,A點電位恒為1,則只要TR1被置為1,B點電位即為1,定時/計數(shù)器被控制為允許計數(shù)(定時/計數(shù)器的計數(shù)控制僅由TR1的狀態(tài)確定,TR1=1計數(shù),TR1=0停止計數(shù))。當(dāng)GATE=1時,B點電位由INT1輸入的電平和TR1的狀
態(tài)確定,當(dāng)TR1=1,且INT1=1時,B點電平才為1,才允許定時器/計數(shù)器計數(shù)(計數(shù)控制由TR1和INT1二個條件控制)。
方式1時,TL1的8位都參與計數(shù),因而屬于16位
定時/計數(shù)器。其控制方式,等效電路與方式0完全相同。10 6.3.1方式0、方式1的說明10116.3.2
方式2(常數(shù)自動重裝入)T1工作于方式2的等效圖116.3.2方式2(常數(shù)自動重裝入)T1工作于方式2的1112方式2的說明TL1作為計數(shù)器,當(dāng)TL1計數(shù)溢出時,在置1溢出標(biāo)志TF1的同時,還自動的將TH1中的常數(shù)送至TL1,使TL1從初值開始重新計數(shù)。12方式2的說明TL1作為計數(shù)器,當(dāng)1213
這種工作方式可以省去用戶軟件中重裝常數(shù)的程序,簡化定時常數(shù)的計算方法(確定計數(shù)初值),可以相當(dāng)精確的確定定時時間。例如:波特率發(fā)生器13 這種工作方式可以省去用戶軟件中重裝常數(shù)值),可以相當(dāng)精13146.3.3
方式3(T0具有)T0工作于方式3時,分為2個獨立的8位計數(shù)器:TL0、TH0。TL0使用T0的狀態(tài)控制位C/T,
GATE,TR0,
INT0,而TH0被固定為一個8位定時器(不能作外部計數(shù)方式),并使用定時器T1的狀態(tài)控制位TR1和TF1,同時占用定時器T1的中斷源。
此時,定時/計數(shù)器T1可為方式0、方式1和方式2,作為串行口的波特率發(fā)生器。146.3.3方式3(T0具有)T0工作于方式3時,分為1415工作于方式3的T015工作于方式3的T01516T0工作于方式3時的T116T0工作于方式3時的T11617定時器的工作方式(總結(jié))方式0:13位定時計數(shù)器?
注意:TLx的低5位和THx共同組成方式1:
16位定時計數(shù)器方式2:
自動重裝入的8位定時計數(shù)器?
溢出后TFx=1,同時由THx→TLx方式3:T0成為兩個獨立的8位計數(shù)器?
TL0作為定時計數(shù)器;TH0僅作定時器用?
TL0的控制用原T0的,TH0占用原T1的控制位TR1和TF1,同時占用定時器T1的中斷源?
此時,T1可工作于方式0~2,溢出時送串行口,經(jīng)常作為串行口波特率發(fā)生器17定時器的工作方式(總結(jié))方式0:13位定時計數(shù)器?注17186.4
定時/計數(shù)器的輸入信號工作于定時器方式:對內(nèi)部時鐘信號計數(shù),內(nèi)部時鐘信號的頻率為時鐘振蕩頻率的1/12,即每個機(jī)器周期計數(shù)值加1。例:采用12MHz頻率的晶體時,每1微秒計數(shù)值將加1。由于定時的精度決定于輸入脈沖的周期,因此當(dāng)需要高分辨率的定時時,應(yīng)盡量選用頻率較高的晶體(MCS51最高為12MHz)。186.4定時/計數(shù)器的輸入信號工作于定時器方式:對內(nèi)部1819
定時/計數(shù)器的輸入信號工作于計數(shù)器方式:當(dāng)定時/計數(shù)器用作計數(shù)器時,計數(shù)脈沖來自外部輸入引腳T0或T1。當(dāng)輸入信號產(chǎn)生由1至0的跳變(即下跳變)時,計數(shù)器的值增1。需要注意:每個機(jī)器周期的S5P2期間,對外部輸入進(jìn)行采樣。如在第一個周期中采得的值為1,而在下一個周期中采得的值為0,則計數(shù)器加1。由于確認(rèn)一次下跳變至少要用兩個機(jī)器周期,即24個振蕩周期,因此外部輸入的計數(shù)脈沖的最高頻率為振蕩器頻率的1/24,同時輸入信號的高、低電平保持一個機(jī)器周期以上。例如:選用6MHz頻率的晶體,允許輸入的脈沖頻率為
250kHz;如果選用12MHz頻率的晶體,則可輸入500kHz的外部脈沖。19 定時/計數(shù)器的輸入信號1920定時/計數(shù)器的輸入信號理想的計數(shù)器輸入信號:脈沖信號的高、低電平至少要各保持一個機(jī)器周期以上,確保電平在變化之前能被采樣一次。20定時/計數(shù)器的輸入信號理想的計數(shù)器輸入信號:脈沖信號的高2021
6.5
定時器/計數(shù)器的編程初始化1
根據(jù)要求給方式寄存器TMOD送一個方式控制
字,以設(shè)定定時器的工作方式;2
根據(jù)需要給TH和TL選送初值,以確定需要的
定時時間或計數(shù)的初值;3
根據(jù)需要給中斷允許寄存器IE送中斷控制字,
以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級;
也可用查詢方式來響應(yīng)定時器。4
給TCON送命令字以啟動或禁止定時/計數(shù)器的運(yùn)行。21 6.5定時器/計數(shù)器的編程運(yùn)行。2122定時器/計數(shù)器的編程6.5.1
初值的計算計數(shù)器初值:
設(shè)計數(shù)模值為M,所需的計數(shù)值為C,計數(shù)初值設(shè)定為TC,則:TC
=
M
-C
(M=213,216,28)定時器初值:定時器的模值為M,需要的定時時間為T,
定時器的初值TC為:TC=M-T/t機(jī)器周期22定時器/計數(shù)器的編程6.5.1初值的計算 設(shè)計數(shù)模值2223幾種工作方式的最大定時時間若定時器初值為0,則定時時間為最大,設(shè)fOSC=12MHz,幾種工作方式下的最大定時時間為:方式0:
TMAX=8.192ms;方式1:
TMAX=65.536ms;方式2、3:
TMAX=0.256ms;23幾種工作方式的最大定時時間若定時器初值為0,則定時時間為2324初值的計算:fOSC=12MHz,試計算定時時間2ms所需的定時器的初值.方式2、方式3
Tmax=0.256ms,所以必須將工作方式設(shè)在方式0或方式1:方式0:TC=213-2ms/1us=6192=1830HTH0=18H
,
TL0=30H方式1:TC=216-2ms/1us
=63536=F830HTH0=F8H
,
TL0=30H24初值的計算:fOSC=12MHz,試計算定時時間2ms所24256.5.2
編程方式采用查詢方式:程序一直檢測TF0(TF1),若TF0=1(TF1=1),說明定時時間到或計滿數(shù),需要軟件清除溢出標(biāo)志位TFx。采用中斷方式:程序初始化時,設(shè)置定時器溢出中斷允許后,內(nèi)部硬件自動檢測到TF0=1(TF1=1)時,自動響應(yīng)中斷,進(jìn)入中斷服務(wù)程序。由硬件自動清除TFx。256.5.2編程方式采用查詢方式:程序一直檢測TF0(25266.6
定時計數(shù)器的應(yīng)用舉例例1
選用T1方式0產(chǎn)生500us的定時,在
P1.1輸出周期為1ms的方波;
FOSC=6MHz注意:T0不用時的處理,一般設(shè)為方式0,禁止進(jìn)入方式3.初值計算:
TC
=
213
-
500us
/2us,
TC=7942TC=7942D=1F06H13位方式下,計數(shù)初值為F806H6.6.1:方式0的應(yīng)用266.6定時計數(shù)器的應(yīng)用舉例例1選用T1方式0產(chǎn)生2627主程序Begin:MOVTMOD,#0MOVMOVSETBTL1,#06HTH1,#0F8HTR1Loop:
JBCTF1,PF0SJMPLOOPPF0:
MOVTL1,#06HMOVCPLAJMPTH1,#0F8HP1.1LOOP27主程序Begin:MOVTMOD,#0MOVTL1,#0276.6.2
T0計數(shù)、T1定時工作于方式2從P3.4
T0輸入低頻脈沖,要求該脈沖每發(fā)生一次跳變時由P1.0輸出一個500us的負(fù)脈沖,與此同時由P1.1輸出一個寬為1ms的正脈沖(6MHz晶振)。先設(shè)T0為計數(shù)方式,工作于方式2,初值設(shè)為0FFH,即加1即刻產(chǎn)生溢出。當(dāng)外部輸入一個負(fù)跳變脈沖時,計數(shù)加1,并產(chǎn)生溢出,TF0=1;引起CPU的T0中斷。中斷服務(wù)程序內(nèi),對定時器T1設(shè)定初值,T1也工作于方式2。
286.6.2T0計數(shù)、T1定時工作于方式2從P3.428296.6.3
含中斷的定時/計數(shù)器響應(yīng)程ORG
0HSJMP
BEGINORG
000BHAJMP
TT1ORG
0030HBEGIN:MOV
TMOD,#26HMOV
TH0,#0FFHMOVTL0,#0FFHCLR
P1.1Setb
ET0
;允許T0中斷Setb
EA
;CPU開中斷SETB
P1.0SETB
TR0SJMP
$
序工作于方式2的定時/計數(shù)器296.6.3含中斷的定時/計數(shù)器響應(yīng)程ORG29中斷服務(wù)程序ORG300HTT1:MOVMOVSETBCLRSETBTH1,#06HTL1,#06H
P1.1P1.0
TR1DEL2:
JBC
TF1,RP1
SJMP
DEL2
30RP1:SETB
P1.0DEL3:RP2:
JBC
TF1,RP2SJMP
DEL3
CLR
P1.1CLR
TR1RETI中斷服務(wù)程序ORG300HTT1:MOVTH1,#06HDE30例假設(shè)系統(tǒng)時鐘為6MHz,編寫定時器T0產(chǎn)生
1秒定時的程序。(1)T0工作方式的確定定時時間較長,采用哪一種工作方式?
由各種工作方式的特性,可計算出:
方式0最長可定時16.384ms;
方式1最長可定時131.072ms;
方式2最長可定時512s。選方式1,每隔100ms中斷一次,中斷10次為1s。
316.6.4
長定時時間的產(chǎn)生例假設(shè)系統(tǒng)時鐘為6MHz,編寫定時器T0產(chǎn)生 1秒定時的程序3132(2)計算計數(shù)初值因為:-100*/2=15536=3CB0H因此:TH0=3CH,TL0=B0H(3)10次計數(shù)的實現(xiàn)采用循環(huán)程序法。(4)程序設(shè)計參考程序
:32(2)計算計數(shù)初值因為:-100*/2=1553233ORG0000HRESET:
LJMP
ORG
LJMP
ORG
MAIN:
MOV
MOV
MOV
MOV
MOV
SETBMAIN000BH
IT0P1000HSP,#60HB,#0AHTMOD,#01HTL0,#0B0HTH0,#3CHTR0;上電,轉(zhuǎn)主程序入口MAIN
;T0的中斷入口;轉(zhuǎn)T0中斷處理程序IT0P
;設(shè)堆棧指針
;設(shè)循環(huán)次數(shù)10次
;設(shè)T0工作在方式1
;給T0設(shè)初值
;啟動T0
SETB
ET0
;允許T0中斷
SETB
EA
;CPU開放中斷HERE:
SJMP
HERE
;等待中斷ITOP:
MOV
TL0,#0B0H
;T0中斷子程序,重裝初值
MOV
TH0,#3CH
;
DJNZ
B,LOOP
CLR
TR0
;1s定時時間到,停止T0工作LOOP:
RETI33ORG0000HRESET:LJMPMAIN;上電,33346.6.5
門控位的應(yīng)用利用GATE位可實現(xiàn):外部輸入正脈沖對定時
計數(shù)器控制。利用這個特性,可測量輸入
脈沖的寬度。如:利用T1門控位測試INT1引腳上出現(xiàn)的正脈沖的寬度,并以周期數(shù)顯示。346.6.5門控位的應(yīng)用利用GATE位可實現(xiàn):外部輸入3435測量原理35測量原理35程序清單ST:MOV
TMOD,
#90H
MOV
TL1,#00H
MOV
TH1,#00HWAIT1:JB
P3.3,WAIT1
;等待INT1為0
SETB
TR1WAIT2:JNB
P3.3,
WAIT2
;等待INT1為1WAIT3:JB
P3.3
,WAIT3
;等待INT1為0
CLR
TR1
MOV
20H,TL1
MOV
21H,TH1
36程序清單ST:MOVTMOD,#90H MOV366.6.6實時時鐘的設(shè)計1.實時時鐘實現(xiàn)的基本思想如何獲得1秒的定時,可把定時時間定為100ms,采用中斷方式進(jìn)行溢出次數(shù)的累計,計滿10次,即得到秒計時。片內(nèi)RAM中規(guī)定3個單元作為秒、分、時單元,具體安排如下:42H:“秒”單元
;41H:“分”單元;40H:“時”單元從秒到分,從分到時是通過軟件累加并進(jìn)行比較的方法來實現(xiàn)的。
376.6.6實時時鐘的設(shè)計1.實時時鐘實現(xiàn)的基本思想37382.程序設(shè)計(1)主程序的設(shè)計382.程序設(shè)計(1)主程序的設(shè)計3839(2)中斷服務(wù)程序的設(shè)計中斷服務(wù)程序的主要功能是實現(xiàn)秒、分、時的計時處理。參考程序略。39(2)中斷服務(wù)程序的設(shè)計中斷服務(wù)程序的主要功能是實現(xiàn)秒、396.6.7
運(yùn)行中讀定時器/計數(shù)器在讀取運(yùn)行中的定時器/計數(shù)器時,需注意:若恰好出現(xiàn)TLX溢出向THX進(jìn)位的情況,則讀得的(TLX)值就完全不對。同樣,先讀(THX)再讀(TLX)也可能出錯。方法:先讀(THX),后讀(TLX),再讀(THX)。若兩次讀得(THX)相同,則讀的內(nèi)容正確。若前后兩次讀的(THX)有變化,則再重復(fù)上述過程,這次重復(fù)讀得的內(nèi)容就應(yīng)是正確的。下面是有關(guān)的程序,讀得的(TH0)和(TL0)放置在R1和R0內(nèi)。
406.6.7運(yùn)行中讀定時器/計數(shù)器在讀取運(yùn)行中的定時器/計40RDTIME:MOV
MOV
CJNE
MOVA,TH0
;讀(TH0)R0,TL0
;讀(TL0)A,TH0,RDTIME;比較2次讀得的(TH0)
;不相等則重復(fù)讀R1,A
;(TH0)送入R1中RET
41RDTIME:MOVA,TH0;4142習(xí)題1.
如果采用的晶振的頻率為3MHz,定時器/計數(shù)器工作在方式0、1、2下,其最大的定時時間各為多少?答:方式0下,其最大的定時時間為32.768ms;方式1下,其最大的定時時間為262.144ms;方式2下,其最大的定時時間為1.024ms;2.
定時器/計數(shù)器用作定時器時,其計數(shù)脈沖由誰提供?定時時間與哪些因素有關(guān)?答:計數(shù)脈沖由MCS51提供,每個機(jī)器周期定時器加一;定時時間與外接晶振,定時器初值有關(guān)。3.
定時器/計數(shù)器作計數(shù)器模式使用時,對外界計數(shù)頻率有何限制?答:外加信號的頻率為系統(tǒng)時鐘頻率的1/24,且高低電平的持續(xù)時間不小于一個機(jī)器周期。4.
定時器/計數(shù)器的工作方式2有什么特點?適用于什么應(yīng)用場合?答:方式2特點為計數(shù)初值由硬件自動裝入,避免了用軟件裝入帶來的誤差,可實現(xiàn)精確的定時和計數(shù)。42習(xí)題1.如果采用的晶振的頻率為3MHz,定時器/計數(shù)器42435.THX與TLX(X=0,1)是普通寄存器還是計數(shù)器?其內(nèi)容可以隨時用指
令更改嗎?更改后的新值是立即刷新還是等當(dāng)前計數(shù)器計滿之后才能
刷新?答:THX與TLX(X=0,1)是計數(shù)器,正在計數(shù)的內(nèi)容不可以隨時用指令更改,更改后的新值要等當(dāng)前計數(shù)器計滿之后才能刷新.6.
判斷下列說法是否正確?特殊功能寄存器SCON,與定時器/計數(shù)器的控制無關(guān)。特殊功能寄存器TCON,與定時器/計數(shù)器的控制無關(guān)。特殊功能寄存器IE,與定時器/計數(shù)器的控制無關(guān)。特殊功能寄存器TMOD,與定時器/計數(shù)器的控制無關(guān)。答:特殊功能寄存器SCON,與定時器/計數(shù)器的控制無關(guān)。(對)特殊功能寄存器TCON,與定時器/計數(shù)器的控制無關(guān)。(錯)特殊功能寄存器IE,與定時器/計數(shù)器的控制無關(guān)。(對)特殊功能寄存器TMOD,與定時器/計數(shù)器的控制無關(guān)。(錯)435.THX與TLX(X=0,1)是普通寄存器還是計數(shù)器?4344END44END442第6章定時器計數(shù)器沈陽航空航天大學(xué)2第6章定時器計數(shù)器沈陽航空航天大學(xué)452本講課程主要內(nèi)容(1)定時/計數(shù)器的基本概念(2)定時/計數(shù)器的編程方法(3)定時/計數(shù)器編程舉例2本講課程主要內(nèi)容(1)定時/計數(shù)器的基本概念463定時器/計數(shù)器兩個16位定時/計數(shù)器存放初值的SFR
T0:
TH0、TL0
T1:
TH1、TL1其它相關(guān)的SFR:TMOD(工作方式控制寄存器)TCON(控制寄存器)定時功能時,每個機(jī)器周期定時器加1計數(shù)功能時,在外部相應(yīng)輸入腳(T0和T1)產(chǎn)生下降沿,計數(shù)器加1。3定時器/計數(shù)器兩個16位定時/計數(shù)器其它相關(guān)的SFR:TM4746.1
定時計數(shù)器的結(jié)構(gòu)框圖46.1定時計數(shù)器的結(jié)構(gòu)框圖48
6.2
定時器的控制字工作方式控制寄存器TMOD(89H)GATEC/TM1
M0|
GATE
C/T
M1
M0注意:TMOD不能位尋址控制寄存器TCON
(88H)
–
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0復(fù)位后兩個寄存器的狀態(tài)均為00H。
5 6.2定時器的控制字GATEC/TM1M0|4966.2.1
TMOD:工作方式控制寄存器GATE:門控位GATE=1,T0、T1是否工作受外部引腳輸入電平的控制,INT0引腳控制T0運(yùn)行,INT1引腳控制T1運(yùn)行??捎糜跍y量在INT0或INT1引腳出現(xiàn)的正脈沖的寬度。GATE=0,定時/計數(shù)器的運(yùn)行不受外部引腳INT0或INT1的控制。C/T位:計數(shù)器模式和定時器模式的選擇位C/T=0,為定時器模式。內(nèi)部計數(shù)器對晶振頻率12分頻后的脈沖計數(shù)(該脈沖的周期等于機(jī)器周期),每個周期計數(shù)值加1。若選擇12MHz晶振,則計數(shù)頻率為1MHz。從計數(shù)值便可求得計數(shù)的時間,所以稱為定時器模式;C/T=1,設(shè)置為計數(shù)器模式,計數(shù)器對由引腳T0(P3.4腳)或T1
(P3.5腳)輸入的外部脈沖(負(fù)跳變)計數(shù),允許最高計數(shù)頻率為晶振頻率的1/24。66.2.1TMOD:工作方式控制寄存器GATE:門控位507工作方式控制寄存器TMODM1、M0工作方式選擇位7工作方式控制寄存器TMODM1、M0工作方式選擇位5186.2.2
定時/計數(shù)器控制寄存器TCONTF1位:T1計數(shù)溢出標(biāo)志位。當(dāng)T1計數(shù)溢出時,由硬件置1,申請中斷。進(jìn)入中斷服務(wù)程序后被硬件自動清0。TR1位:T1計數(shù)運(yùn)行控制位。由軟件置1或清0。當(dāng)GATE位(TMOD.7)=0時,若TR1=1,允許T1計數(shù);TR1=0時,禁止T1計數(shù)。當(dāng)GATE位=1時,TR1=1且INT1=1時,允許T1計數(shù)。TF0位:T0計數(shù)溢出標(biāo)志位,功能同TF1。TR0位:T0計數(shù)運(yùn)行控制位,由軟件置1或清0。當(dāng)GATE位(TMOD.3)=0時,若TR0=1,允許T0計數(shù);TR0=0時,禁止T0計數(shù)。當(dāng)GATE位=1時,TR0=1且INT0=1時,允許T0計數(shù)。86.2.2定時/計數(shù)器控制寄存器TCONTF1位:T15296.3
定時/計數(shù)器的4種工作方式方式0、方式1(13位、16位定時計數(shù)方式)T1工作于方式0的等效框圖(M1M0=00、01)GATE=0、A=1、TR1=1GATE=1、INT1=1、TR1=1。注意定時器初值與定時時間的不同96.3定時/計數(shù)器的4種工作方式方式0、方式1(13位5310
6.3.1
方式0、方式1的說明定時/計數(shù)器T1工作在方式0時,為13位的計數(shù)器,由TL1的低5位和TH1的8位所構(gòu)成。TL1低5位溢出向TH1進(jìn)位,TH1計數(shù)溢出置位TCON中的溢出標(biāo)志位TF1。GATE位的狀態(tài)決定定時/計數(shù)器運(yùn)行控制取決于TR1一個條件還是TR1和INT1引腳這兩個條件。
當(dāng)GATE=0時,A點電位恒為1,則只要TR1被置為1,B點電位即為1,定時/計數(shù)器被控制為允許計數(shù)(定時/計數(shù)器的計數(shù)控制僅由TR1的狀態(tài)確定,TR1=1計數(shù),TR1=0停止計數(shù))。當(dāng)GATE=1時,B點電位由INT1輸入的電平和TR1的狀
態(tài)確定,當(dāng)TR1=1,且INT1=1時,B點電平才為1,才允許定時器/計數(shù)器計數(shù)(計數(shù)控制由TR1和INT1二個條件控制)。
方式1時,TL1的8位都參與計數(shù),因而屬于16位
定時/計數(shù)器。其控制方式,等效電路與方式0完全相同。10 6.3.1方式0、方式1的說明54116.3.2
方式2(常數(shù)自動重裝入)T1工作于方式2的等效圖116.3.2方式2(常數(shù)自動重裝入)T1工作于方式2的5512方式2的說明TL1作為計數(shù)器,當(dāng)TL1計數(shù)溢出時,在置1溢出標(biāo)志TF1的同時,還自動的將TH1中的常數(shù)送至TL1,使TL1從初值開始重新計數(shù)。12方式2的說明TL1作為計數(shù)器,當(dāng)5613
這種工作方式可以省去用戶軟件中重裝常數(shù)的程序,簡化定時常數(shù)的計算方法(確定計數(shù)初值),可以相當(dāng)精確的確定定時時間。例如:波特率發(fā)生器13 這種工作方式可以省去用戶軟件中重裝常數(shù)值),可以相當(dāng)精57146.3.3
方式3(T0具有)T0工作于方式3時,分為2個獨立的8位計數(shù)器:TL0、TH0。TL0使用T0的狀態(tài)控制位C/T,
GATE,TR0,
INT0,而TH0被固定為一個8位定時器(不能作外部計數(shù)方式),并使用定時器T1的狀態(tài)控制位TR1和TF1,同時占用定時器T1的中斷源。
此時,定時/計數(shù)器T1可為方式0、方式1和方式2,作為串行口的波特率發(fā)生器。146.3.3方式3(T0具有)T0工作于方式3時,分為5815工作于方式3的T015工作于方式3的T05916T0工作于方式3時的T116T0工作于方式3時的T16017定時器的工作方式(總結(jié))方式0:13位定時計數(shù)器?
注意:TLx的低5位和THx共同組成方式1:
16位定時計數(shù)器方式2:
自動重裝入的8位定時計數(shù)器?
溢出后TFx=1,同時由THx→TLx方式3:T0成為兩個獨立的8位計數(shù)器?
TL0作為定時計數(shù)器;TH0僅作定時器用?
TL0的控制用原T0的,TH0占用原T1的控制位TR1和TF1,同時占用定時器T1的中斷源?
此時,T1可工作于方式0~2,溢出時送串行口,經(jīng)常作為串行口波特率發(fā)生器17定時器的工作方式(總結(jié))方式0:13位定時計數(shù)器?注61186.4
定時/計數(shù)器的輸入信號工作于定時器方式:對內(nèi)部時鐘信號計數(shù),內(nèi)部時鐘信號的頻率為時鐘振蕩頻率的1/12,即每個機(jī)器周期計數(shù)值加1。例:采用12MHz頻率的晶體時,每1微秒計數(shù)值將加1。由于定時的精度決定于輸入脈沖的周期,因此當(dāng)需要高分辨率的定時時,應(yīng)盡量選用頻率較高的晶體(MCS51最高為12MHz)。186.4定時/計數(shù)器的輸入信號工作于定時器方式:對內(nèi)部6219
定時/計數(shù)器的輸入信號工作于計數(shù)器方式:當(dāng)定時/計數(shù)器用作計數(shù)器時,計數(shù)脈沖來自外部輸入引腳T0或T1。當(dāng)輸入信號產(chǎn)生由1至0的跳變(即下跳變)時,計數(shù)器的值增1。需要注意:每個機(jī)器周期的S5P2期間,對外部輸入進(jìn)行采樣。如在第一個周期中采得的值為1,而在下一個周期中采得的值為0,則計數(shù)器加1。由于確認(rèn)一次下跳變至少要用兩個機(jī)器周期,即24個振蕩周期,因此外部輸入的計數(shù)脈沖的最高頻率為振蕩器頻率的1/24,同時輸入信號的高、低電平保持一個機(jī)器周期以上。例如:選用6MHz頻率的晶體,允許輸入的脈沖頻率為
250kHz;如果選用12MHz頻率的晶體,則可輸入500kHz的外部脈沖。19 定時/計數(shù)器的輸入信號6320定時/計數(shù)器的輸入信號理想的計數(shù)器輸入信號:脈沖信號的高、低電平至少要各保持一個機(jī)器周期以上,確保電平在變化之前能被采樣一次。20定時/計數(shù)器的輸入信號理想的計數(shù)器輸入信號:脈沖信號的高6421
6.5
定時器/計數(shù)器的編程初始化1
根據(jù)要求給方式寄存器TMOD送一個方式控制
字,以設(shè)定定時器的工作方式;2
根據(jù)需要給TH和TL選送初值,以確定需要的
定時時間或計數(shù)的初值;3
根據(jù)需要給中斷允許寄存器IE送中斷控制字,
以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級;
也可用查詢方式來響應(yīng)定時器。4
給TCON送命令字以啟動或禁止定時/計數(shù)器的運(yùn)行。21 6.5定時器/計數(shù)器的編程運(yùn)行。6522定時器/計數(shù)器的編程6.5.1
初值的計算計數(shù)器初值:
設(shè)計數(shù)模值為M,所需的計數(shù)值為C,計數(shù)初值設(shè)定為TC,則:TC
=
M
-C
(M=213,216,28)定時器初值:定時器的模值為M,需要的定時時間為T,
定時器的初值TC為:TC=M-T/t機(jī)器周期22定時器/計數(shù)器的編程6.5.1初值的計算 設(shè)計數(shù)模值6623幾種工作方式的最大定時時間若定時器初值為0,則定時時間為最大,設(shè)fOSC=12MHz,幾種工作方式下的最大定時時間為:方式0:
TMAX=8.192ms;方式1:
TMAX=65.536ms;方式2、3:
TMAX=0.256ms;23幾種工作方式的最大定時時間若定時器初值為0,則定時時間為6724初值的計算:fOSC=12MHz,試計算定時時間2ms所需的定時器的初值.方式2、方式3
Tmax=0.256ms,所以必須將工作方式設(shè)在方式0或方式1:方式0:TC=213-2ms/1us=6192=1830HTH0=18H
,
TL0=30H方式1:TC=216-2ms/1us
=63536=F830HTH0=F8H
,
TL0=30H24初值的計算:fOSC=12MHz,試計算定時時間2ms所68256.5.2
編程方式采用查詢方式:程序一直檢測TF0(TF1),若TF0=1(TF1=1),說明定時時間到或計滿數(shù),需要軟件清除溢出標(biāo)志位TFx。采用中斷方式:程序初始化時,設(shè)置定時器溢出中斷允許后,內(nèi)部硬件自動檢測到TF0=1(TF1=1)時,自動響應(yīng)中斷,進(jìn)入中斷服務(wù)程序。由硬件自動清除TFx。256.5.2編程方式采用查詢方式:程序一直檢測TF0(69266.6
定時計數(shù)器的應(yīng)用舉例例1
選用T1方式0產(chǎn)生500us的定時,在
P1.1輸出周期為1ms的方波;
FOSC=6MHz注意:T0不用時的處理,一般設(shè)為方式0,禁止進(jìn)入方式3.初值計算:
TC
=
213
-
500us
/2us,
TC=7942TC=7942D=1F06H13位方式下,計數(shù)初值為F806H6.6.1:方式0的應(yīng)用266.6定時計數(shù)器的應(yīng)用舉例例1選用T1方式0產(chǎn)生7027主程序Begin:MOVTMOD,#0MOVMOVSETBTL1,#06HTH1,#0F8HTR1Loop:
JBCTF1,PF0SJMPLOOPPF0:
MOVTL1,#06HMOVCPLAJMPTH1,#0F8HP1.1LOOP27主程序Begin:MOVTMOD,#0MOVTL1,#0716.6.2
T0計數(shù)、T1定時工作于方式2從P3.4
T0輸入低頻脈沖,要求該脈沖每發(fā)生一次跳變時由P1.0輸出一個500us的負(fù)脈沖,與此同時由P1.1輸出一個寬為1ms的正脈沖(6MHz晶振)。先設(shè)T0為計數(shù)方式,工作于方式2,初值設(shè)為0FFH,即加1即刻產(chǎn)生溢出。當(dāng)外部輸入一個負(fù)跳變脈沖時,計數(shù)加1,并產(chǎn)生溢出,TF0=1;引起CPU的T0中斷。中斷服務(wù)程序內(nèi),對定時器T1設(shè)定初值,T1也工作于方式2。
286.6.2T0計數(shù)、T1定時工作于方式2從P3.472296.6.3
含中斷的定時/計數(shù)器響應(yīng)程ORG
0HSJMP
BEGINORG
000BHAJMP
TT1ORG
0030HBEGIN:MOV
TMOD,#26HMOV
TH0,#0FFHMOVTL0,#0FFHCLR
P1.1Setb
ET0
;允許T0中斷Setb
EA
;CPU開中斷SETB
P1.0SETB
TR0SJMP
$
序工作于方式2的定時/計數(shù)器296.6.3含中斷的定時/計數(shù)器響應(yīng)程ORG73中斷服務(wù)程序ORG300HTT1:MOVMOVSETBCLRSETBTH1,#06HTL1,#06H
P1.1P1.0
TR1DEL2:
JBC
TF1,RP1
SJMP
DEL2
30RP1:SETB
P1.0DEL3:RP2:
JBC
TF1,RP2SJMP
DEL3
CLR
P1.1CLR
TR1RETI中斷服務(wù)程序ORG300HTT1:MOVTH1,#06HDE74例假設(shè)系統(tǒng)時鐘為6MHz,編寫定時器T0產(chǎn)生
1秒定時的程序。(1)T0工作方式的確定定時時間較長,采用哪一種工作方式?
由各種工作方式的特性,可計算出:
方式0最長可定時16.384ms;
方式1最長可定時131.072ms;
方式2最長可定時512s。選方式1,每隔100ms中斷一次,中斷10次為1s。
316.6.4
長定時時間的產(chǎn)生例假設(shè)系統(tǒng)時鐘為6MHz,編寫定時器T0產(chǎn)生 1秒定時的程序7532(2)計算計數(shù)初值因為:-100*/2=15536=3CB0H因此:TH0=3CH,TL0=B0H(3)10次計數(shù)的實現(xiàn)采用循環(huán)程序法。(4)程序設(shè)計參考程序
:32(2)計算計數(shù)初值因為:-100*/2=1557633ORG0000HRESET:
LJMP
ORG
LJMP
ORG
MAIN:
MOV
MOV
MOV
MOV
MOV
SETBMAIN000BH
IT0P1000HSP,#60HB,#0AHTMOD,#01HTL0,#0B0HTH0,#3CHTR0;上電,轉(zhuǎn)主程序入口MAIN
;T0的中斷入口;轉(zhuǎn)T0中斷處理程序IT0P
;設(shè)堆棧指針
;設(shè)循環(huán)次數(shù)10次
;設(shè)T0工作在方式1
;給T0設(shè)初值
;啟動T0
SETB
ET0
;允許T0中斷
SETB
EA
;CPU開放中斷HERE:
SJMP
HERE
;等待中斷ITOP:
MOV
TL0,#0B0H
;T0中斷子程序,重裝初值
MOV
TH0,#3CH
;
DJNZ
B,LOOP
CLR
TR0
;1s定時時間到,停止T0工作LOOP:
RETI33ORG0000HRESET:LJMPMAIN;上電,77346.6.5
門控位的應(yīng)用利用GATE位可實現(xiàn):外部輸入正脈沖對定時
計數(shù)器控制。利用這個特性,可測量輸入
脈沖的寬度。如:利用T1門控位測試INT1引腳上出現(xiàn)的正脈沖的寬度,并以周期數(shù)顯示。346.6.5門控位的應(yīng)用利用GATE位可實現(xiàn):外部輸入7835測量原理35測量原理79程序清單ST:MOV
TMOD,
#90H
MOV
TL1,#00H
MOV
TH1,#00HWAIT1:JB
P3.3,WAIT1
;等待INT1為0
SETB
TR1WAIT2:JNB
P3.3,
WAIT2
;等待INT1為1WAIT3:JB
P3.3
,WAIT3
;等
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東榮成勞動合同范例
- 圍墻護(hù)欄安裝合同范例
- 成都制作合同范例
- 2024工業(yè)供銷合同范文
- 居間借款合同
- 2024聯(lián)營股本借款合同樣本
- 運(yùn)動性失語言語治療
- 蘇州科技大學(xué)天平學(xué)院《土地資源管理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 蘇州科技大學(xué)天平學(xué)院《攝影創(chuàng)作與鑒賞》2022-2023學(xué)年第一學(xué)期期末試卷
- 活動場地合同7篇2
- 《電力設(shè)備消防典型準(zhǔn)則》(DL5027-2022)
- 小學(xué)生冬季安全教育知識講座
- 公司商務(wù)部保密管理制度
- 《醫(yī)院發(fā)生火災(zāi)應(yīng)急演練方案》
- 醫(yī)藥商業(yè)操作與管理課件
- 【公司盈利能力分析國內(nèi)外文獻(xiàn)綜述2500字】
- 掘進(jìn)專項風(fēng)險辨識評估報告
- 米吳科學(xué)漫畫奇妙萬象篇
- 2023林業(yè)戰(zhàn)略合作框架協(xié)議正規(guī)版
- Unit4 Why don't you talk to your parents?SectionA 3a-3c 說課稿 2022-2023學(xué)年英語八年級下冊人教版
- 跌倒墜床的護(hù)理文獻(xiàn)
評論
0/150
提交評論