第6章 定時器、計數(shù)器1508a.ppt_第1頁
第6章 定時器、計數(shù)器1508a.ppt_第2頁
第6章 定時器、計數(shù)器1508a.ppt_第3頁
第6章 定時器、計數(shù)器1508a.ppt_第4頁
第6章 定時器、計數(shù)器1508a.ppt_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第6章 單片機的定時器/計數(shù)器,1/67,6. 單片機的定時器/計數(shù)器,2/67,1.定時的功能 定時發(fā)出脈沖信號,向CPU申請中斷,其定時間隔的長短及起始控制的時間均可由程序控制。,溫度,開始定時,保溫5分鐘,淬火 清洗,開始定時 回火3小時,空冷,實際控制可以由單片機定時發(fā)出信號控制自動完成整個工藝過程。,6.1 引 言,例如某機械零件的熱處理工藝曲線為:,一、定時器計數(shù)器的功能:,3/67,2.計數(shù)功能 對外界發(fā)生的事件(輸入脈沖)計數(shù),當達到程序規(guī)定的計數(shù)值時,輸出一脈沖信號,申請中斷。 例如一啤酒生產(chǎn)線,如下圖所示 :,6.1 引 言,4/67,時間基準 延時 電子音樂 電機速度控制

2、 工業(yè)測量(電機速度、產(chǎn)量、信號頻率、脈沖寬度),6.1 引 言,二、定時計數(shù)器在單片機應(yīng)用系統(tǒng)中的地位和作用,可編程(3 個方面): 1)位數(shù) 2)啟動方式 3)定時/計數(shù)方式,6.1 引 言,三、51 系列單片機片上定時計數(shù)器的基本特性,其它計數(shù)器: 74LS161、163、160、162 (不可編程),6/67,問題/知識點,1. T0/T1 有哪幾種工作模式?2. 方式1、2 各有什么突出特點?3. T0/T1 的計數(shù)信號來源于何處?4. 對外部信號計數(shù)時的最高允許頻率為多少?5. 如何啟動T0/T1 定時或計數(shù)?6. TF0、TF1 在什么情況下會自動置1?何時會自動清零?7. 相關(guān)

3、的SFR 有哪幾個?,6.1 引 言,8/67,6.2 定時器/計數(shù)器的工作原理,1. 定時/計數(shù)器的概念 主要作用包括產(chǎn)生各種時標間隔,記錄外部事件的數(shù)量等等。 MCS-51有兩個16位的定時器/計數(shù)器。 作定時器時,每個機器周期定時寄存器自動加1,因此定時器也可以看作是計量機器周期的計數(shù)器。 作計數(shù)器時,計量單片機外部引腳從1到0的負跳變,每個跳變計數(shù)器自動加1。,6.2 定時器/計數(shù)器的工作原理,6.2.1定時器/計數(shù)器的概念和結(jié)構(gòu),2. 定時/計數(shù)器的結(jié)構(gòu),6.2 定時器/計數(shù)器的工作原理,T0和T1無論是用作定時器或者計數(shù)器都有4種工作方式: 方式0 方式1 方式2 方式3 除了方式

4、3,T0和T1有完全相同的工作方式。,6.2 定時器/計數(shù)器的工作原理,6.2.2定時器/計數(shù)器的工作方式,1) 方式0(13位工作方式),6.2 定時器/計數(shù)器的工作原理,13/67,2) 方式1(16位工作方式),6.2 定時器/計數(shù)器的工作原理,14/67,6.2 定時器/計數(shù)器的工作原理,15/67,在方式0和方式1中,計數(shù)計滿溢出后,使其初值寄存器內(nèi)數(shù)值為0。 在循環(huán)定時或計數(shù)應(yīng)用中,必須反復(fù)預(yù)置計數(shù)初值,不僅會影響定時精度,而且給程序設(shè)計帶來不便。,6.2 定時器/計數(shù)器的工作原理,16/67,3) 方式2(8位自動重裝工作方式),6.2 定時器/計數(shù)器的工作原理,17/67,省去

5、用戶軟件中重裝初值的程序,實現(xiàn)精確的定時。 定時器作串口波特率發(fā)生器時,常選用定時方式2。,定時器/計數(shù)器的方式2工作過程如圖(X=0,1)。,6.2 定時器/計數(shù)器的工作原理,4)方式3(2個8位工作方式),6.2 定時器/計數(shù)器的工作原理,19/67,TMOD:選擇定時器/計數(shù)器T0、T1的工作模式和工作方式。 TCON:控制T0、T1的啟動和停止計數(shù),同時鎖存T0和T1的狀態(tài)。,系統(tǒng)復(fù)位時,TMOD和TCON的所有位清0,用戶可用軟件對TMOD和TCON進行寫入和更改。,6.2 定時器/計數(shù)器的工作原理,控制寄存器,6.2.3 定時器/計數(shù)器的控制,20/67,1)定時器控制寄存器TCO

6、N(88H),TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,中斷請求標志 1:有請求 0:無請求,運行控制位 1:啟動 0:停止,外部中斷控制,6.2 定時器/計數(shù)器的工作原理,計滿溢出時,單片機內(nèi)部硬件對TF0(TF1)置“1”。,中斷方式:作為中斷標志位。在響應(yīng)中斷轉(zhuǎn)向中斷服務(wù)程序后,由硬件自動對TF清“0”。,查詢方式:作為定時器狀態(tài)位以供查詢。查詢有效后以軟件及時將該位清“0”。,6.2 定時器/計數(shù)器的工作原理,(2) TF1、TF0計數(shù)溢出標志位,高4位的功能如下:,(1) TR1、TR0計數(shù)運行控制位 1:啟動定時器/計數(shù)器工作 0:停止定時器/計數(shù)器工作,低4

7、位與外部中斷有關(guān)。,22/67,例:用位操作來使用定時器,SETBTR1 SETBTR0 CLRTR1 CLRTR0,6.2 定時器/計數(shù)器的工作原理,JBCTF1,L1;查詢TF1,為1則轉(zhuǎn)向L1且TF1清零,23/67,2) 定時器方式控制寄存器TMOD(89H),GATE,C/T,M1,M0,GATE,C/T,M1,M0,T1,T0,門控位 1:打開 0:關(guān)閉,工作狀態(tài)選擇位 1:計數(shù)狀態(tài) 0:定時狀態(tài),工作方式設(shè)置位 00:方式0 01:方式1 10:方式2 11:方式3,6.2 定時器/計數(shù)器的工作原理,TMOD的字節(jié)地址為89H,不能按位尋址,只能用字節(jié)傳送指令來設(shè)置。,8位分為兩

8、組,高4位控制T1,低4位控制T0。,6.2 定時器/計數(shù)器的工作原理,6.2 定時器/計數(shù)器的工作原理,26/67,6.2 定時器/計數(shù)器的工作原理,(3)M1、M0工作方式選擇位,27/67,28/67,6.3 定時器/計數(shù)器的應(yīng)用,29/67,51內(nèi)部定時器/計數(shù)器是可編程序的,通過程序設(shè)置寄存器對它進行設(shè)定和控制。,6.3 定時器/計數(shù)器的應(yīng)用,6.3.1 定時器/計數(shù)器的初值計算,一、對外部事件進行計數(shù)。,1)預(yù)先裝入一個計數(shù)初值。 2)每來一個外部脈沖輸入,記數(shù)器1。 3)記數(shù)器計滿回零,產(chǎn)生溢出中斷請求。,計數(shù)值 計數(shù)器的模 初值,30/67,在計數(shù)方式下,可分為兩種情況: 1、

9、已知計數(shù)脈沖的個數(shù)C,2、未知計數(shù)脈沖的個數(shù)C,6.3 定時器/計數(shù)器的應(yīng)用,31/67,二、對周期性的定時脈沖進行計數(shù)。,1)預(yù)先裝入一個計數(shù)初值。 2)周期性1記數(shù)。 3)記數(shù)器計滿回零,產(chǎn)生溢出中斷請求。,t:定時時間M:記數(shù)器的模 x:初值 T:計數(shù)脈沖的周期,MCS51單片機的定時脈沖頻率為系統(tǒng)晶振頻率的12分頻,即一個機器周期。,6.3 定時器/計數(shù)器的應(yīng)用,32/67,定時方式下的計數(shù)初值 定時時間 或者,6.3 定時器/計數(shù)器的應(yīng)用,計數(shù)初值,方式0:n13 方式1:n16 方式2:n8,33/67,定時/計數(shù)器初始化基本步驟 1)確定模式與工作方式,寫控制字到TMOD 2)根

10、據(jù)定時時間或計數(shù)要求,確定計數(shù)初值 3)預(yù)置定時或者計數(shù)的初值x 4)根據(jù)需求開放定時器/計數(shù)器的中斷 5)啟動定時器/計數(shù)器,6.3 定時器/計數(shù)器的應(yīng)用,6.3.2 定時器/計數(shù)器的應(yīng)用舉例,34/67,1、方式1應(yīng)用 例:假設(shè)系統(tǒng)時鐘頻率采用6MHz,要在P1.0上輸出一個周期為2ms的方波,如圖所示。,6.3 定時器/計數(shù)器的應(yīng)用,35/67,1)思路: 方波的周期用T0來確定,讓T0每隔1ms計數(shù)溢出1次(每1ms產(chǎn)生一次中斷),CPU響應(yīng)中斷后,在中斷服務(wù)程序中對P1.0取反。 主程序用來初始化定時器,預(yù)設(shè)初值,開放中斷 中斷服務(wù)程序除產(chǎn)生方波外,還要注意將計數(shù)初值重新裝入定時器中

11、,為下一次中斷作準備。,6.3 定時器/計數(shù)器的應(yīng)用,36/67,2)計算初值X 設(shè)初值為X,則有: (216-X)210-6=110-3 216-X=500 X=65036 X化為16進制,即X=FE0CH=1111111000001100B。 所以,T0的初值為: TH0=0FEH TL0=0CH 3)初始化程序設(shè)計 對寄存器IP、IE、TCON、TMOD的相應(yīng)位進行正確設(shè) 置,將計數(shù)初值送入定時器中。,6.3 定時器/計數(shù)器的應(yīng)用,37/67,中斷服務(wù)程序,主程序,6.3 定時器/計數(shù)器的應(yīng)用,38/67,ORG 0000H AJMP MAIN;轉(zhuǎn)主程序 ORG 000BH;T0的中斷入

12、口 AJMP IT0P;轉(zhuǎn)T0中斷處理程序IT0P ;= 主程序 = ORG 0100H MAIN: MOV SP,#60H;設(shè)堆棧指針 MOV TMOD,#01H;設(shè)置T0為方式1 MOV TL0,#0CH;賦計數(shù)初值 MOV TH0,#0FEH SETB TR0;啟動T0 SETB ET0;允許T0中斷 SETB EA;CPU開中斷 HERE: SJMP HERE;自身跳轉(zhuǎn),等待中斷,6.3 定時器/計數(shù)器的應(yīng)用,39/67,;= 中斷服務(wù)子程序 = ORG 0200H ITOP: MOV TL0,#0CH ;T0置初值 MOV TH0,#0FEH CPL P1.0 ;P1.0的狀態(tài)取反

13、RETI;中斷返回,6.3 定時器/計數(shù)器的應(yīng)用,END,40/67,查詢方式的參考程序: ORG 0000H AJMP MAIN;轉(zhuǎn)主程序 ORG 0100H MAIN: MOV SP,#60H;設(shè)堆棧指針 MOV TMOD,#01H;設(shè)置T0為方式1 SETB TR0;啟動T0 LOOP: MOV TH0,#0FEH;T0置初值 MOV TL0,#0CH LOOP1: JNB TF0,LOOP1;查詢TF0標志 CLR TF0;T0溢出,清TF0 CPL P1.0;P1.0的狀態(tài)求反 SJMP LOOP END,6.3 定時器/計數(shù)器的應(yīng)用,41/67,6.3 定時器/計數(shù)器的應(yīng)用, 如何

14、產(chǎn)生如下波形?,42/67,例:設(shè)系統(tǒng)時鐘為6MHz,編寫定時器T0產(chǎn)生1秒定時的程序。 (1)T0工作方式的確定 定時時間較長,采用哪一種工作方式? 由各種工作方式的特性,可計算出: 方式0最長可定時16.384ms 方式1最長可定時131.072ms 方式2最長可定時512s 選方式1,每隔100ms中斷一次,中斷10次為1s,6.3 定時器/計數(shù)器的應(yīng)用,43/67,(2)計算計數(shù)初值 因為:(216-X)210-6 = 10-1 所以:X=15536=3CB0H 因此:TH0=3CH,TL0=0B0H (3)10次計數(shù)的實現(xiàn) 采用循環(huán)程序法。 (4)程序設(shè)計,6.3 定時器/計數(shù)器的應(yīng)

15、用,44/67,ORG 0000H LJMP MAIN;上電復(fù)位,轉(zhuǎn)主程序入口MAIN ORG 000BH;T0的中斷入口 LJMP IT0P;轉(zhuǎn)T0中斷處理程序IT0P ORG 1000H MAIN:MOV SP,#60H;設(shè)堆棧指針 MOV B,#0AH;設(shè)循環(huán)次數(shù)10次 MOV TMOD,#01H;設(shè)T0工作在方式1 MOV TL0,#0B0H;給T0設(shè)初值 MOV TH0,#3CH SETB TR0;啟動T0 SETB ET0;允許T0中斷 SETB EA;CPU開放中斷 HERE:SJMP HERE;等待中斷,6.3 定時器/計數(shù)器的應(yīng)用,45/67,ITOP:MOV TL0,#0B

16、0H;重裝初值 MOV TH0,#3CH DJNZ B,LOOP CLR TR0;1s定時時間到,停止T0工作 LOOP: RETI,6.3 定時器/計數(shù)器的應(yīng)用,;=T0中斷子程序=,46/67,2、方式2的應(yīng)用省去程序中重裝初值的指令,并可產(chǎn)生相當精確的定時時間,例: 當T0(P3.4)引腳上發(fā)生負跳變時,從P1.0引腳上輸出一個周期為1ms的方波,如圖所示。(系統(tǒng)時鐘為6MHz),6.3 定時器/計數(shù)器的應(yīng)用,47/67,(1)工作方式選擇 T0為方式1計數(shù),初值 0FFFFH,即外部計數(shù)輸入端T0(P3.4)發(fā)生一次負跳變時,T0加1且溢出,溢出標志TF0置“1”,發(fā)中斷請求。 在進入

17、T0中斷程序后,把F0標志置“1”,說明T0腳已接收了負跳變信號。 T1定義為方式2定時。在T0腳發(fā)生一次負跳變后,啟動T1每500s產(chǎn)生一次中斷,在中斷服務(wù)程序中對P1.0求反,使P1.0產(chǎn)生周期1ms的方波。,6.3 定時器/計數(shù)器的應(yīng)用,(2)計算T1初值 設(shè)T1的初值為X: 則 (28-X)210-6=510-4 X=28-250=6=06H,48/67,(3)程序設(shè)計 ORG 0000H LJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序 ORG 000BH JMP IT0P ;轉(zhuǎn)T0中斷服務(wù)程序 ORG 001BH LJMP IT1P ;轉(zhuǎn)T1中斷服務(wù)程序 ORG 0100H MAIN: MO

18、V SP,#60H ACALL PT0M2 ;調(diào)用對T0,T1初始化子程序 LOOP: MOV C,F0 ;T0產(chǎn)生過中斷了嗎,產(chǎn)生過中斷,則F0=1 JNC LOOP;T0沒有產(chǎn)生過中斷,則跳到LOOP,等待T0中斷 SETB TR1 ;啟動T1 SETB ET1 ;允許T1中斷 HERE: SJMP HERE,6.3 定時器/計數(shù)器的應(yīng)用,49/67,PT0M2: MOV TMOD,#25H ;初始化,T1為方式2定時,T0為方式1計數(shù) MOV TL0,#0FFH ;T0置初值 MOV TH0,#0FFH SETB TR0 ;啟動T0 SETB ET0 ;允許T0中斷 MOV TL1,#0

19、6H ;T1置初值 MOV TH1,#06H CLR F0 ;把T0已發(fā)生中斷標志F0清0 SETB EA RET,6.3 定時器/計數(shù)器的應(yīng)用,;=定時器計數(shù)器初始化子程序=,50/67,;=T0計數(shù)器中斷服務(wù)子程序= IT0P: CLR TR0 ;T0中斷服務(wù)程序,停止T0計數(shù) SETB F0 ;建立產(chǎn)生中斷標志 RETI ;=T1定時器中斷服務(wù)子程序= IT1P: CPL P1.0 ;T1中斷服務(wù),P1.0位取反 RETI 在T1定時中斷服務(wù)程序IT1P中,省去了T1中斷服務(wù)程序中重新裝入初值06H的指令。,6.3 定時器/計數(shù)器的應(yīng)用,51/67,例:利用T1方式2對外部信號計數(shù),每計

20、滿100個數(shù),將P1.0取反。 本例是方式2計數(shù)模式的應(yīng)用。 (1)選擇工作方式 外部信號由T1(P3.5) 腳輸入,每發(fā)生一次負跳變計數(shù)器加1,每輸入100個脈沖,計數(shù)器產(chǎn)生溢出中斷,在中斷服務(wù)程序中將P1.0取反一次。 T1方式2的控制字為TMOD=60H。不使用T0時,TMOD的低4位可任取,但不能使T0進入方式3,這里取全0。 (2)計算T1的初值 X=28-100=156=9CH 因此,TL1的初值為9CH,重裝初值寄存器TH1=9CH,6.3 定時器/計數(shù)器的應(yīng)用,52/67,(3)程序設(shè)計 ORG 0000H LJMP MAIN ORG 001BH ;T1中斷服務(wù)程序入口 CPL

21、 P1.0 ;P1.0位取反 RETI ORG 0100H MAIN:MOV TMOD,#60H ;設(shè)T1為方式2計數(shù) MOV TL0,#9CH ;T0置初值 MOV TH0,#9CH SETB TR1 ;啟動T1 SETB ET1 SETB EA HERE: SJMP HERE,6.3 定時器/計數(shù)器的應(yīng)用,53/67,6.3 定時器/計數(shù)器的應(yīng)用,例:負脈沖展寬(晶振為6MHz),54/67,TMOD=01100010B,6.3 定時器/計數(shù)器的應(yīng)用,55/67,6.3 定時器/計數(shù)器的應(yīng)用,3)流程 主程序流程 系統(tǒng)初始化: SP30H P1.01 中斷系統(tǒng)初始化 ET01ET11 EA

22、 1 T0、T1初始化 TMOD 62H TH0=TL0=06H TH1=TL1=0FFH 啟動T1:TR1 1 等待中斷;等待負脈沖的到來,T1計數(shù)溢出中斷,56/67,6.3 定時器/計數(shù)器的應(yīng)用,T0中斷流程;500s定時到 ;CPU自動完成MOV TH0,06H ;MOV TL0,06H以及CLR TF0 P1.0 1;上拉P1.0 TR0 0;關(guān)閉T0 RETI;中斷返回 T1中斷流程;發(fā)現(xiàn)負脈沖 ;CPU自動完成MOV TL1,0FFH,;MOV TL1,0FFH 以及 CLR TF1 P1.0 0;下拉P1.0 TR0 1;啟動T0,定時500s RETI;中斷返回,57/67,

23、3、門控制位GATE的應(yīng)用測量脈沖寬度 GATEx可使定時器/計數(shù)器Tx的啟動計數(shù)受INTx的控制,可測量引腳/INTx(P3.2 P3.3)上正脈沖的寬度(機器周期數(shù))。,6.3 定時器/計數(shù)器的應(yīng)用,58/67,思考: 待測脈沖信號接與哪個引腳?(/INT0引腳、T0引腳) 設(shè)定T0為定時方式還是計數(shù)方式?幾位? 設(shè)初值TH0、TL0為多少? 何時置位TR0?何時讀取結(jié)果 TH0、TL0? 若TH0、TL0發(fā)生溢出應(yīng)如何處理? 如何測量負脈沖寬度? 測量精度與什么有關(guān)?,6.3 定時器/計數(shù)器的應(yīng)用,59/67,參考程序: ORG 0000H AJMP MAIN;復(fù)位入口轉(zhuǎn)主程序 ORG

24、0100H MAIN: MOV SP,#60H MOV TMOD,#90H;T1為方式1定時控制字 MOV TL1,#00H MOV TH1,#00H CLR ET1 LOOP0: JB P3.3,LOOP0;/INT1高,則循環(huán) SETB TR1;如/INT1為低,準備啟動T1 LOOP1: JNB P3.3,LOOP1;等待/INT1變高,開始定時 LOOP2: JB P3.3,LOOP2 ;/INT1高,等待再次變低 CLR TR1;停止T1計數(shù) MOV A,TL1 ;T1計數(shù)值送A,6.3 定時器/計數(shù)器的應(yīng)用,60/67,信號頻率的測量,基本原理:定時1s,記錄脈沖個數(shù)。,1. 待測頻率信號接與哪個引腳?(T0引腳、!INT0引腳) 2. 設(shè)定T0為定時方式還是計數(shù)方式?幾位? 3. 設(shè)初值TH0、TL0為多少? 4. 何時置位 TR0?何時讀取結(jié)果 TH0、TL0? 5. 若 TH0、TL0發(fā)生溢出應(yīng)如何處理?,6.3 定時器/計數(shù)器的應(yīng)用,61/67,4、運行中讀定時器/計數(shù)器 在讀取運行中的定時器/計數(shù)器時,需注意:若恰好出現(xiàn)TLx溢出向T

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論