《定時器計數(shù)器習(xí)題》ppt課件_第1頁
《定時器計數(shù)器習(xí)題》ppt課件_第2頁
《定時器計數(shù)器習(xí)題》ppt課件_第3頁
《定時器計數(shù)器習(xí)題》ppt課件_第4頁
《定時器計數(shù)器習(xí)題》ppt課件_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第6 6章章 定時器定時器/ /計數(shù)器習(xí)題計數(shù)器習(xí)題16.4 6.4 定時器定時器/ /計數(shù)器的編程和運(yùn)用計數(shù)器的編程和運(yùn)用4 4種方式,方式種方式,方式0 0與方式與方式1 1根本一樣,只是計數(shù)位數(shù)不同。方根本一樣,只是計數(shù)位數(shù)不同。方式式0 0初值計算復(fù)雜,普通不用方式初值計算復(fù)雜,普通不用方式0 0,而用方式,而用方式1 1。6.4.1 6.4.1 方式方式1 1的運(yùn)用的運(yùn)用【例【例6-16-1】假設(shè)系統(tǒng)時鐘頻率采用】假設(shè)系統(tǒng)時鐘頻率采用6MHz6MHz,在,在P1.0P1.0引腳上輸出引腳上輸出一個周期為一個周期為2ms2ms的方波,如圖的方波,如圖6-136-13所示。所示。2圖圖

2、6-13 P1.0引腳上輸出周期為引腳上輸出周期為2ms的方波的方波根本思想:方波周期根本思想:方波周期T0T0確定,確定,T0T0每隔每隔1ms1ms計數(shù)溢出計數(shù)溢出1 1次,次,即即T0T0每隔每隔1ms1ms產(chǎn)生一次中斷,產(chǎn)生一次中斷,CPUCPU呼應(yīng)中斷后,在中斷效力呼應(yīng)中斷后,在中斷效力子程序中對子程序中對P1.0P1.0取反取反, ,如圖如圖6-136-13所示。為此要做如下幾步所示。為此要做如下幾步任務(wù)。任務(wù)。 1 1計算計數(shù)初值計算計數(shù)初值X X機(jī)器周期機(jī)器周期 = 2 = 2s = 2s = 2 10 106s6s設(shè)需求裝入設(shè)需求裝入T0T0的初值為的初值為X X,那么有,那

3、么有(216(216X)X)2 210106=16=1 10 103 3,216216X=500X=500,X=65036X=65036。X X化為十六進(jìn)制數(shù),即:化為十六進(jìn)制數(shù),即: 65036 = FE0CH 65036 = FE0CH 。T0T0的初值為的初值為TH0 =FEHTH0 =FEH,TL0 = 0CHTL0 = 0CH。32初始化程序設(shè)計初始化程序設(shè)計采用定時器中斷方式任務(wù)。包括定時器初始化和中斷系采用定時器中斷方式任務(wù)。包括定時器初始化和中斷系統(tǒng)初始化,主要是對存放器統(tǒng)初始化,主要是對存放器IP、IE、TCON、TMOD的相的相應(yīng)位進(jìn)展正確的設(shè)置,并將計數(shù)初值送入定時器中。

4、應(yīng)位進(jìn)展正確的設(shè)置,并將計數(shù)初值送入定時器中。3程序設(shè)計程序設(shè)計中斷效力子程序除了完成所要求的產(chǎn)生方波的任務(wù)之外,中斷效力子程序除了完成所要求的產(chǎn)生方波的任務(wù)之外,還要留意將計數(shù)初值重新裝入定時器,為下一次產(chǎn)生中斷還要留意將計數(shù)初值重新裝入定時器,為下一次產(chǎn)生中斷做預(yù)備。做預(yù)備。本例,主程序用一條轉(zhuǎn)至本身的短跳轉(zhuǎn)指令來替代。本例,主程序用一條轉(zhuǎn)至本身的短跳轉(zhuǎn)指令來替代。4參考程序如下:參考程序如下: ORG 0000H;程序入口;程序入口RESET:AJMP MAIN ;轉(zhuǎn)主程序;轉(zhuǎn)主程序 ORG 000BH ;T0中斷入口中斷入口 AJMP IT0P;轉(zhuǎn);轉(zhuǎn)T0中斷處置程序中斷處置程序IT0

5、P ORG 0100H;主程序入口;主程序入口MAIN: MOV SP,#60H;設(shè)堆棧指針;設(shè)堆棧指針 MOV TMOD,#01H;設(shè)置;設(shè)置T0為方式為方式1定時定時 ACALL PT0M0;調(diào)用初始化子程序;調(diào)用初始化子程序PT0M0HERE: AJMP HERE ;原地循環(huán),等待中;原地循環(huán),等待中斷斷5PT0M0: MOV TL0,#0CH;T0初始化,裝初值的低8位 MOV TH0,#0FEH;裝初值的高8位 SETB ET0;允許T0中斷 SETB EA ;總中斷允許 SETB TR0;啟動T0 RETIT0P: MOV TL0,#0CH;中斷子程序,T0重裝初值 MOV TH0

6、,#0FEH CPL P1.0 ;P1.0的形狀取反 RETI程序闡明:當(dāng)單片機(jī)復(fù)位時,從程序入口0000H跳向主程序MAIN處執(zhí)行。其中調(diào)用了T0初始化子程序PT0M0。6子程序前往后,程序執(zhí)行“AJMP HERE指令,那么循環(huán)等待。當(dāng)呼應(yīng)T0定時中斷時,那么跳向T0中斷入口,再從T0中斷入口跳向IT0P標(biāo)號處執(zhí)行T0中斷效力子程序。當(dāng)執(zhí)行完中斷前往的指令“RETI后,又前往斷點(diǎn)處繼續(xù)執(zhí)行循環(huán)指令“AJMP HERE。在實(shí)踐的程序中,“AJMP HERE 實(shí)踐上是一段主程序。當(dāng)下一次定時器T0的1ms定時中斷發(fā)生時,再跳向T0中斷入口,從而反復(fù)執(zhí)行上述過程。如CPU不做其他任務(wù),也可用查詢方

7、式進(jìn)展控制,程序要簡單得多。7查詢方式參考程序:查詢方式參考程序: MOV TMOD,#01H;設(shè)置;設(shè)置T0為方式為方式1LOOP:MOV TH0,#0FEH ;T0置初值置初值 MOV TL0,# 0CH SETB TR0 ;接通;接通T0LOOP1:JNB TF0,LOOP1 ;查;查TF0,TF0 =0, T0未未溢出;溢出; ;TF0 =1, T0溢出,溢出, CLRTR0 ;T0溢出,溢出, 關(guān)斷關(guān)斷T0 CPLP1.0 ;P1.0的形狀求反的形狀求反 SJMP LOOP查詢程序雖簡單,但查詢程序雖簡單,但CPU必需求不斷查詢必需求不斷查詢TF0標(biāo)志,任務(wù)標(biāo)志,任務(wù)效率低。效率低。

8、8【例【例6-2】系統(tǒng)時鐘為】系統(tǒng)時鐘為6MHz,編寫定時器,編寫定時器T0產(chǎn)生產(chǎn)生1s定定時的程序。時的程序。根本思想:采用定時器方式。因定時時間較長,首先確根本思想:采用定時器方式。因定時時間較長,首先確定采用哪一種任務(wù)方式。時鐘為定采用哪一種任務(wù)方式。時鐘為6MHz的條件下,定時器的條件下,定時器各種任務(wù)方式最長可定時時間:各種任務(wù)方式最長可定時時間:方式方式0最長可定時最長可定時16.384ms;方式方式1最長可定時最長可定時131.072ms;方式方式2最長可定時最長可定時512s。由上可見,可選方式由上可見,可選方式1,每隔,每隔100ms中斷一次,中斷中斷一次,中斷10次為次為1

9、s。91 1計算計數(shù)初值計算計數(shù)初值X X由于由于(216(216 X)X) 2 2 10106 6 = = 10101 1,所以,所以X X = = 1553615536 = = 3CB0H3CB0H。因此因此TH0TH0 = = 3CH3CH,TL0TL0 = = B0HB0H。2 21010次計數(shù)的實(shí)現(xiàn)次計數(shù)的實(shí)現(xiàn)對于中斷對于中斷1010次的計數(shù),采用次的計數(shù),采用B B存放器作為中斷次數(shù)計數(shù)器。存放器作為中斷次數(shù)計數(shù)器。3 3程序設(shè)計程序設(shè)計參考程序如下:參考程序如下: ORGORG0000H0000H;程序運(yùn)轉(zhuǎn)入口;程序運(yùn)轉(zhuǎn)入口RESETRESET:LJMP MAIN LJMP MA

10、IN ;跳向主程序入口;跳向主程序入口MAINMAIN ORGORG000BH 000BH ;T0T0的中斷入口的中斷入口 LJMPLJMPIT0PIT0P;轉(zhuǎn);轉(zhuǎn)T0T0中斷處置子程序中斷處置子程序IT0PIT0P ORGORG1000H1000H;主程序入口;主程序入口10MAIN:MOVSP,#60H;設(shè)堆棧指針 MOVB,#0AH;設(shè)循環(huán)次數(shù)10次 MOVTMOD,#01H;設(shè)置T0任務(wù)在方式1定時 MOV TL0,#0B0H;給T0設(shè)初值 MOV TH0,#3CH SETBET0;允許T0中斷 SETBEA ;總中斷允許 SETBTR0;啟動T0HERE: SJMPHERE;原地循環(huán)

11、,等待中斷11IT0P: MOVTL0,#0B0H ;T0中斷子程序,T0重裝初值 MOVTH0,#3CH DJNZB,RTURN;B中斷次數(shù)計數(shù),減1非0那么;中斷前往 CLRTR0 ;1s定時時間到,停頓T0任務(wù)SETBF0;1s定時時間到標(biāo)志F0置1RTURN:RETI程序闡明:不論1s定時時間能否已到,都前往到“SJMP HERE指令處?!癝JMP HERE指令實(shí)踐是一段主程序。在這段主程序中再經(jīng)過對F0標(biāo)志的斷定,可知1s定時能否到,再進(jìn)展詳細(xì)處置。126.4.2 方式方式2的運(yùn)用的運(yùn)用方式方式2是一個可以自動重新裝載初值的是一個可以自動重新裝載初值的8位計數(shù)器位計數(shù)器/定時定時器。

12、可省去重裝初值指令。器。可省去重裝初值指令。當(dāng)某個定時器當(dāng)某個定時器/計數(shù)器不運(yùn)用時,可擴(kuò)展一個負(fù)跳沿觸計數(shù)器不運(yùn)用時,可擴(kuò)展一個負(fù)跳沿觸發(fā)的外中斷源。發(fā)的外中斷源?!纠纠?-3】擴(kuò)展一個負(fù)跳沿觸發(fā)的外部中斷源,把定時】擴(kuò)展一個負(fù)跳沿觸發(fā)的外部中斷源,把定時器器/計數(shù)器計數(shù)器T0腳作為外部中斷懇求輸入端,溢出標(biāo)志腳作為外部中斷懇求輸入端,溢出標(biāo)志TF0作為外中斷懇求標(biāo)志。作為外中斷懇求標(biāo)志。根本思想:設(shè)為方式根本思想:設(shè)為方式2自動裝入常數(shù)方式計數(shù)方式,自動裝入常數(shù)方式計數(shù)方式,TH0、TL0初值均為初值均為0FFH。當(dāng)。當(dāng)T0腳發(fā)生負(fù)跳變時,腳發(fā)生負(fù)跳變時,T0計計數(shù)溢出,數(shù)溢出,TF0置

13、置“1,單片機(jī)發(fā)出中斷懇求。,單片機(jī)發(fā)出中斷懇求。13初始化程序: ORG0000H AJMPIINI;跳到初始化程序 ORG000BH AJMPIT0P;跳到外中斷處置程序IINI: MOV TMOD,#06H;設(shè)置T0為方式2 MOV TL0,#0FFH;設(shè)T0初值 MOV TH0,#0FFH SETB ET0;允許T0中斷 SETB EA;總中斷允許 SETBTR0;啟動T0 IT0P: 外中斷處置程序段 14程序闡明:當(dāng)銜接在程序闡明:當(dāng)銜接在P3.4P3.4T0T0腳的外部中斷懇求輸入腳的外部中斷懇求輸入腳電平發(fā)生負(fù)跳變時,腳電平發(fā)生負(fù)跳變時,TL0TL0加加1 1,產(chǎn)生溢出,產(chǎn)生溢

14、出,TF0TF0置置“1“1,向單片機(jī)發(fā)出中斷懇求,同時向單片機(jī)發(fā)出中斷懇求,同時TH0TH0的內(nèi)容的內(nèi)容0FFH0FFH送送TL0TL0,即,即TL0TL0恢復(fù)初值恢復(fù)初值0FFH0FFH。P3.4P3.4腳相當(dāng)于一個負(fù)跳沿觸發(fā)的外中斷懇求源輸入。對腳相當(dāng)于一個負(fù)跳沿觸發(fā)的外中斷懇求源輸入。對P3.5P3.5也可做類似的處置。也可做類似的處置。【例【例6-46-4】 當(dāng)當(dāng)T0T0P3.4P3.4引腳上發(fā)生負(fù)跳變時,作為引腳上發(fā)生負(fù)跳變時,作為P1.0P1.0引腳產(chǎn)生方波的啟動信號。開場從引腳產(chǎn)生方波的啟動信號。開場從P1.0P1.0腳上輸出一個腳上輸出一個周期為周期為1ms1ms的方波,如圖

15、的方波,如圖6-146-14所示系統(tǒng)時鐘所示系統(tǒng)時鐘6MHz6MHz。15根本思想:根本思想:T0T0設(shè)為方式設(shè)為方式1 1計數(shù),初值為計數(shù),初值為FFFFHFFFFH。當(dāng)外部計。當(dāng)外部計數(shù)輸入端數(shù)輸入端T0T0P3.4P3.4發(fā)生一次負(fù)跳變時,發(fā)生一次負(fù)跳變時,T0T0加加1 1且溢出,且溢出,溢出標(biāo)志溢出標(biāo)志TF0TF0置置“1“1,向,向CPUCPU發(fā)出中斷懇求,此時發(fā)出中斷懇求,此時T0T0相當(dāng)相當(dāng)于一個負(fù)跳沿觸發(fā)的外部中斷源。于一個負(fù)跳沿觸發(fā)的外部中斷源。進(jìn)入進(jìn)入T0T0中斷程序后,中斷程序后,F(xiàn)0F0標(biāo)志置標(biāo)志置“1“1,闡明,闡明T0T0引腳上已引腳上已接納過負(fù)跳變信號。接納過負(fù)

16、跳變信號。T1T1定義為方式定義為方式2 2定時。在定時。在T0T0引腳產(chǎn)生引腳產(chǎn)生一次負(fù)跳變后,啟動一次負(fù)跳變后,啟動T1T1每每500500s s產(chǎn)生一次中斷,在中斷效產(chǎn)生一次中斷,在中斷效力子程序中對力子程序中對P1.0P1.0求反,使求反,使P1.0P1.0產(chǎn)生周期產(chǎn)生周期1ms1ms的方波。由的方波。由于省去重新裝初值指令,所以可產(chǎn)生準(zhǔn)確的定時時間。于省去重新裝初值指令,所以可產(chǎn)生準(zhǔn)確的定時時間。16 17圖圖6-14 6-14 負(fù)跳變觸發(fā)輸出一個周期為負(fù)跳變觸發(fā)輸出一個周期為1ms1ms的方波的方波1 1計算計算T1T1的初值的初值設(shè)設(shè)T1T1的初值為的初值為x x,那么,那么(2

17、8(28 x)x) 2 2 10106 6 = = 5 5 10104 4x x = = 2828 250250 = = 6 6 = = 06H06H2 2程序設(shè)計程序設(shè)計參考程序:參考程序: ORG 0000HORG 0000H;程序入口;程序入口RESETRESET:LJMP MAIN LJMP MAIN ;跳向主程序;跳向主程序MAINMAIN ORG ORG 000BH000BH ;T0T0的中斷入口的中斷入口 LJMP IT0P LJMP IT0P ;轉(zhuǎn);轉(zhuǎn)T0T0中斷效力程序中斷效力程序 ORG 001BHORG 001BH ;T1T1的中斷入口的中斷入口 18LJMP IT1P

18、;轉(zhuǎn)T1中斷效力程序 ORG 0100H;主程序入口MAIN: MOV SP,#60H;設(shè)堆棧指針 ACALL PT0M2;調(diào)用對T0,T1初始化子程序LOOP: MOV C,F(xiàn)0 ;T0能否產(chǎn)生過中斷,假設(shè)產(chǎn)生;過,F(xiàn)0置1 JNC LOOP;T0未產(chǎn)生中斷,C=0,那么跳;到LOOP,等待T0中斷 SETB ET1 ;允許T1產(chǎn)生定時中斷SETB TR1 ;啟動T1HERE: AJMP HERE19PT0M2: MOV TMOD,#26H ;對T0,T1初始化,T0方式1;計數(shù),T1方式2定時 MOV TL0,#0FFH ;T0置初值 MOV TH0,#0FFH SETB ET0;允許T0

19、中斷 MOV TL1,#06H;T1置初值 MOV TH1,#06H CLR F0;把T0已發(fā)生中斷標(biāo)志F0清0 SETB EA;總中斷允許 SETB TR0;啟動T0 RET20IT0P: CLRTR0 ;T0中斷效力程序,停頓中斷效力程序,停頓T0計數(shù)計數(shù) SETBF0 ;把;把T0引腳接納過負(fù)脈沖標(biāo)志引腳接納過負(fù)脈沖標(biāo)志F0置置1,;即接納過負(fù)跳變;即接納過負(fù)跳變 RETIIT1P: CPL P1.0;T1中斷效力程序,中斷效力程序,P1.0位取反位取反 RETI程序闡明:當(dāng)單片機(jī)復(fù)位時,從程序闡明:當(dāng)單片機(jī)復(fù)位時,從0000H跳向主程序跳向主程序MAIN處執(zhí)行程處執(zhí)行程序。其中調(diào)用了對

20、序。其中調(diào)用了對T0,T1初始化子程序初始化子程序PT0M2。子程序前往后執(zhí)行。子程序前往后執(zhí)行標(biāo)號標(biāo)號LOOP處指令,循環(huán)等待處指令,循環(huán)等待T0引腳上負(fù)脈沖的到來。由于負(fù)脈沖到引腳上負(fù)脈沖的到來。由于負(fù)脈沖到來的標(biāo)志位來的標(biāo)志位F0的復(fù)位初始值為的復(fù)位初始值為0,所以程序就在標(biāo)號,所以程序就在標(biāo)號LOOP處循環(huán)等處循環(huán)等待。待。21當(dāng)T0P3.4腳發(fā)生負(fù)跳變時,由于T0計數(shù)溢出,那么跳向T0中斷效力子程序。此時停頓T0計數(shù),并把T0引腳接納過負(fù)脈沖的標(biāo)志F0置1。當(dāng)中斷前往時,由于F0已被置1,那么程序跳出LOOP處的循環(huán)等待。此時執(zhí)行指令來允許T1中斷,并啟動T1定時,然后執(zhí)行“AJMP

21、 HERE指令,循環(huán)等待,等待T1的500s定時中斷到來。當(dāng)T1的500s定時中斷產(chǎn)生時,那么進(jìn)入T1的中斷效力子程序IT1P,把P1.0腳電平取反。由于是自動裝初值,省去對T1重裝初值指令。中斷前往后,到“AJMP HERE 處等待T1的500s定時中斷。如此反復(fù),即得到圖6-14波形。22【例【例6-5】 利用定時器利用定時器T1的方式的方式2計數(shù),每計滿計數(shù),每計滿100個個數(shù),將數(shù),將P1.0取反。本例是方式取反。本例是方式2計數(shù)方式的運(yùn)用舉例。計數(shù)方式的運(yùn)用舉例。1選擇任務(wù)方式選擇任務(wù)方式外部信號由外部信號由T1P3.5引腳輸入,每發(fā)生一次負(fù)跳變引腳輸入,每發(fā)生一次負(fù)跳變計數(shù)器便加計

22、數(shù)器便加1,每輸入,每輸入100個脈沖,計數(shù)器將產(chǎn)生溢出中個脈沖,計數(shù)器將產(chǎn)生溢出中斷,在中斷效力程序中將斷,在中斷效力程序中將P1.0取反一次。取反一次。T1任務(wù)在方式任務(wù)在方式2的控制字的控制字TMOD = 60H。不運(yùn)用。不運(yùn)用T0時,時,TMOD低低4位任取,但不能使位任取,但不能使T0為方式為方式3,這里取全,這里取全0。2計算計算T1的初值的初值X = 28 100 = 156 = 9CHTL1的初值為的初值為9CH,重裝初值存放器,重裝初值存放器TH1 = 9CH。233參考程序:參考程序: ORG 0000H;程序運(yùn)轉(zhuǎn)入口;程序運(yùn)轉(zhuǎn)入口 LJMPMAIN;跳向主程序;跳向主程序

23、MAIN ORG 001BH;T1中斷效力程序入口中斷效力程序入口 CPL P1.0;P1.0位取反位取反 RETI ORG 0100H;主程序入口;主程序入口MAIN: MOV TMOD,#60H;設(shè)置;設(shè)置T1為方式為方式2計數(shù)計數(shù) MOV TL0,#9CH ;T0置初值置初值 MOV TH0,#9CH SETB TR1 ;啟動;啟動T1HERE:AJMP HEREEND 24程序闡明:由于程序闡明:由于T1的中斷效力子程序只需兩條指令,的中斷效力子程序只需兩條指令,不超越不超越8個字節(jié),所以進(jìn)入個字節(jié),所以進(jìn)入T1中斷效力程序入口后,沒有中斷效力程序入口后,沒有選擇再跳轉(zhuǎn)。選擇再跳轉(zhuǎn)。6

24、.4.3 方式方式3的運(yùn)用的運(yùn)用方式方式3下的下的T0和和T1大不一樣。大不一樣。T0任務(wù)在方式任務(wù)在方式3,TL0和和TH0被分成兩個獨(dú)立的被分成兩個獨(dú)立的8位定時器位定時器/計數(shù)器。其中,計數(shù)器。其中,TL0可可作為作為8位的定時器位的定時器/計數(shù)器,而計數(shù)器,而TH0只能作為只能作為8位的定時器。位的定時器。此時此時T1只能任務(wù)在方式只能任務(wù)在方式0、1或或2。普通情況下,當(dāng)普通情況下,當(dāng)T1用作串行口波特率發(fā)生器時,用作串行口波特率發(fā)生器時,T0才才設(shè)置為方式設(shè)置為方式3。此時,常把定時器。此時,常把定時器T1設(shè)置為方式設(shè)置為方式2,用作,用作波特率發(fā)生器。波特率發(fā)生器。25【例【例6

25、-6】假設(shè)某】假設(shè)某AT89S51單片機(jī)運(yùn)用系統(tǒng)的兩個外部單片機(jī)運(yùn)用系統(tǒng)的兩個外部中斷源已被占用,設(shè)置中斷源已被占用,設(shè)置T1任務(wù)在方式任務(wù)在方式2,用作波特率發(fā)生,用作波特率發(fā)生器?,F(xiàn)要求添加一個外部中斷源,并控制器。現(xiàn)要求添加一個外部中斷源,并控制P1.0引腳輸出一引腳輸出一個個5kHz周期為周期為200s的方波。設(shè)時鐘為的方波。設(shè)時鐘為12MHz。根本思想:設(shè)置根本思想:設(shè)置TL0任務(wù)在方式任務(wù)在方式3計數(shù)方式,計數(shù)方式,TL0的初的初值設(shè)為值設(shè)為0FFH,當(dāng)檢測到,當(dāng)檢測到T0腳信號出現(xiàn)負(fù)跳變時,腳信號出現(xiàn)負(fù)跳變時,TL0溢溢出,同時向出,同時向CPU懇求中斷,這里懇求中斷,這里T0腳

26、作為一個負(fù)跳沿觸腳作為一個負(fù)跳沿觸發(fā)的外部中斷懇求輸入端。在中斷處置子程序中,啟動發(fā)的外部中斷懇求輸入端。在中斷處置子程序中,啟動TH0,TH0事先被設(shè)置為方式事先被設(shè)置為方式3的的100s定時,從而控制定時,從而控制P1.0輸出周期為輸出周期為200s的方波信號,如圖的方波信號,如圖6-15所示。所示。2627圖圖6-15 6-15 定時器定時器P1.0P1.0輸出的方波信號輸出的方波信號1 1初值初值X X計算計算TL0TL0的初值設(shè)為的初值設(shè)為0FFH0FFH。5kHz5kHz方波的周期為方波的周期為200200s s,因此,因此TH0TH0的定時時間為的定時時間為100100s s。

27、初值初值X X計算:計算:(28(28 X)X) 1 1 10106 6 = = 1 1 10104 4 X X = = 2828 100100 = = 156156 = = 9CH9CH2 2程序設(shè)計程序設(shè)計ORGORG0000H0000H LJMP LJMP MAINMAIN ORG ORG 000BH000BH ;TL0TL0中斷入口,中斷入口,TL0TL0運(yùn)用運(yùn)用T0T0的中斷的中斷 LJMP TL0INT LJMP TL0INT;跳向;跳向TL0TL0中斷效力程序,中斷效力程序, TL0 TL0占用占用T0T0中斷中斷 28ORG 001BH;TH0中斷入口,T1為方式3時,TH0;

28、運(yùn)用了T1的中斷LJMP TH0INT ;跳向TH0中斷效力程序ORG 0100H;主程序入口MAIN: MOVTMOD,#27H ;T0方式3,T1方式2定時作串;行口波特率發(fā)生器 MOVTL0,#0FFH ;置TL0初值 MOVTH0,#9CH;置TH0初值 MOVTL1,#datal ;TL1裝入串口波特率常數(shù)MOV TH1,#datah;TH1裝入串口波特率常數(shù) MOV TCON,#15H;允許T0中斷 29MOVIE,#9FH;設(shè)置中斷允許,總中斷允許,;TH0、TL0中斷允許HERE: AJMP HERE;循環(huán)等待TL0INT: MOV TL0,#0FFH;TL0中斷效力處置子程序

29、,TL0;重新裝入初值 SETB TR1;開場啟動TH0定時 RETITH0INT:MOV TH0,#9CH;TH0中斷效力程序,TH0重新;裝入初值 CPLP1.0;P1.0位取反輸出 RETI 306.4.4 門控制位門控制位GATEx的運(yùn)用的運(yùn)用丈量脈沖寬度丈量脈沖寬度引見門控制位引見門控制位GATE的詳細(xì)運(yùn)用,丈量的詳細(xì)運(yùn)用,丈量 P3.3引引腳上正脈沖的寬度。腳上正脈沖的寬度。【例【例6-7】 門控位門控位GATE1可使可使T1的啟動計數(shù)受的啟動計數(shù)受 的的控制,當(dāng)控制,當(dāng)GATE1 = 1,TR1=1時,只需時,只需 INT1*引腳輸入高引腳輸入高電平常,電平常,T1才被允許計數(shù)。

30、可丈量才被允許計數(shù)??烧闪?引腳引腳 P3.3上上正脈沖的寬度。其方法如圖正脈沖的寬度。其方法如圖6-16所示。所示。31INT1INT1INT1圖圖6-16 利用利用GATE位丈量正脈沖的寬度位丈量正脈沖的寬度參考程序: ORG0000HRESET: AJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序 ORG 0100H;主程序入口MAIN: MOV SP,#60H MOVTMOD,#90H;向TMOD寫控制字,T1為方;式1定時,GATE1 = 1 MOV TL1,#00H MOV TH1,#00HLOOP0: JB P3.3,LOOP0;等待 低 SETB TR1;如 為低,啟動T132INT1IN

31、T1LOOP1:JNB P3.3,LOOP1;等待 升高LOOP2:JB P3.3,LOOP2 ; 為高, 此時計數(shù)器計數(shù), ;等待 降低 CLR TR1 ;停頓T1計數(shù) MOV A,TL1 ;T1計數(shù)值送A ;將T1計數(shù)值送顯示器 END執(zhí)行以上程序,使 引腳上出現(xiàn)的正脈沖寬度以機(jī)器周期數(shù)的方式顯示在顯示器上。33將A中的T1計數(shù)值送到顯示器顯示INT1INT1INT1INT16.4.5 實(shí)時時鐘的設(shè)計實(shí)時時鐘的設(shè)計引見運(yùn)用定時器引見運(yùn)用定時器/計數(shù)器實(shí)現(xiàn)時鐘。計數(shù)器實(shí)現(xiàn)時鐘。1實(shí)現(xiàn)實(shí)時時鐘的根本思想實(shí)現(xiàn)實(shí)時時鐘的根本思想最小計時單位是秒,如何獲得最小計時單位是秒,如何獲得1s的定時時間呢?

32、從前的定時時間呢?從前面引見知,定時器方式面引見知,定時器方式1,最大定時時間也只能,最大定時時間也只能131ms。可將定時器的定時時間定為可將定時器的定時時間定為100ms,中斷方式進(jìn)展溢出次,中斷方式進(jìn)展溢出次數(shù)的累計,計滿數(shù)的累計,計滿10次,即得秒計時。而計數(shù)次,即得秒計時。而計數(shù)10次可用循次可用循環(huán)程序的方法實(shí)現(xiàn)。初值的計算如例環(huán)程序的方法實(shí)現(xiàn)。初值的計算如例6-2。片內(nèi)片內(nèi)RAM規(guī)定規(guī)定3個單元為秒、分、時單元個單元為秒、分、時單元:42H:“秒單元;秒單元;41H:“分單元;分單元;40H:“時單元時單元34從秒到分,從分到時是經(jīng)過軟件累加并比較來實(shí)現(xiàn)。要從秒到分,從分到時是經(jīng)

33、過軟件累加并比較來實(shí)現(xiàn)。要求每滿求每滿1 1秒,那么秒,那么“秒單元秒單元42H42H中的內(nèi)容加中的內(nèi)容加1 1;“秒單秒單元滿元滿6060,那么,那么“分單元分單元41H41H中的內(nèi)容加中的內(nèi)容加1 1;“分單元滿分單元滿6060,那么,那么“時單元時單元40H40H中的內(nèi)容加中的內(nèi)容加1 1;“時單元滿時單元滿2424,那么將那么將42H42H、41H41H、40H40H的內(nèi)容全部清的內(nèi)容全部清“0“0。2 2程序設(shè)計程序設(shè)計1 1主程序設(shè)計主程序設(shè)計進(jìn)展定時器進(jìn)展定時器T0T0初始化,并啟動初始化,并啟動T0T0,然后反復(fù)調(diào)用顯示子,然后反復(fù)調(diào)用顯示子程序,等待程序,等待100ms100ms中斷到來。流程如圖中斷到來。流程如圖6-176-17所示。所示。2 2中斷效力程序

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論