PLC第6章課件_第1頁
PLC第6章課件_第2頁
PLC第6章課件_第3頁
PLC第6章課件_第4頁
PLC第6章課件_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第6 6章章 MCS-51MCS-51的定時器的定時器/ /計數(shù)器計數(shù)器 兩個可編程的定時器兩個可編程的定時器/ /計數(shù)器計數(shù)器T1T1、T0T0。2 2種種工作模式工作模式:(1 1)計數(shù)器工作模式計數(shù)器工作模式對單片機的對單片機的T0T0(P3.4P3.4)和)和T1T1(P3.5P3.5)輸入信號進行計數(shù)。當外部)輸入信號進行計數(shù)。當外部信號產(chǎn)生負跳變時,計數(shù)器加信號產(chǎn)生負跳變時,計數(shù)器加1 1。(2 2)定時器工作模式定時器工作模式對單片機內(nèi)部的機器周期進行計數(shù),從而得到定時。每個機器周對單片機內(nèi)部的機器周期進行計數(shù),從而得到定時。每個機器周期,計數(shù)器加期,計數(shù)器加1 1。4 4種種

2、工作方式工作方式( (方式方式0-0-方式方式3)3)。組成:組成:6 6個個SFR.SFR.:TMOD TCON TH0 TL0 TH1TMOD TCON TH0 TL0 TH1和和TL0TL0TMODTMOD:選擇定時器選擇定時器/ /計數(shù)器計數(shù)器T0T0、T1T1的工作模式和工作方式。的工作模式和工作方式。 TCONTCON:控制控制T0T0、T1T1的啟動和停止計數(shù),同時包含了的啟動和停止計數(shù),同時包含了 T0T0、T1T1的狀的狀態(tài)。態(tài)。6.1 6.1 定時器定時器/ /計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu)6.1.1 6.1.1 工作方式控制寄存器工作方式控制寄存器TMODTMOD 8 8位分為

3、兩組,高位分為兩組,高4 4位控制位控制T1T1,低低4 4位控制位控制T0T0。(1 1)GATEGATE門控位門控位 0 0:以:以TRXTRX(X=0,1X=0,1)來啟動定時器來啟動定時器/ /計數(shù)器運行。計數(shù)器運行。1 1:由由INTiINTi引腳和引腳和TRxTRx引腳共同控制引腳共同控制。只有只有外中斷外中斷引腳引腳( (INT0INT0* *或或INT1INT1* *) )上的高電平上的高電平和和TRXTRX置置1 1,才能啟動,才能啟動定時器定時器/ /計數(shù)器。計數(shù)器。( (2) C/T2) C/T* *計數(shù)器模式和定時器模式選擇位計數(shù)器模式和定時器模式選擇位 0 0:定時器

4、模式。定時器模式。 1 1:計數(shù)器模式。計數(shù)器模式。(3 3)M1M1、M0M0工作方式選擇位工作方式選擇位 M1 M0 M1 M0 工工 作作 方方 式式 0 0 0 0 方式方式0 0,1313位定時器位定時器/ /計數(shù)器。計數(shù)器。 0 1 0 1方式方式1 1,1616位定時器位定時器/ /計數(shù)器。計數(shù)器。 1 0 1 0 方式方式2 2,8 8位常數(shù)自動重新裝載位常數(shù)自動重新裝載 1 1 1 1 方式方式3 3,僅適用于,僅適用于T0T0,T0T0分成兩個分成兩個8 8 位計數(shù)器,位計數(shù)器,T1T1停止計數(shù)。停止計數(shù)。6.1.2 6.1.2 定時器定時器/ /計數(shù)器控制寄存器計數(shù)器控制

5、寄存器TCONTCON TCONTCON用于控制定時器用于控制定時器/ /計數(shù)器的啟、停、溢出標志和計數(shù)器的啟、停、溢出標志和外部中斷信號觸發(fā)方式。外部中斷信號觸發(fā)方式。低低4 4位與外部中斷有關(guān),已介紹。高位與外部中斷有關(guān),已介紹。高4 4位的功能如下:位的功能如下:TF1TF1、TF0TF0計數(shù)溢出標志位計數(shù)溢出標志位 溢出時,硬件自動置溢出時,硬件自動置“1 1”,并向,并向CPUCPU申請中斷。申請中斷。進入中斷服務程序后,進入中斷服務程序后,TFiTFi被硬件自動清被硬件自動清0 0TFiTFi也可作為程序的查詢的標志位,在查詢方式下也可作為程序的查詢的標志位,在查詢方式下由軟件清由

6、軟件清0 0(2) TR1(2) TR1、TR0TR0計數(shù)運行控制位計數(shù)運行控制位 1 1:啟動工作啟動工作 0 0:停止工作停止工作 6.2 6.2 定時器定時器/ /計數(shù)器的計數(shù)器的4 4種工作方式種工作方式 6.2.1 6.2.1 方式方式0 0 M1M1、M0M0為為00 00 ,1313位計數(shù)器,定時器位計數(shù)器,定時器/ /計數(shù)器的框圖:計數(shù)器的框圖: 定時器:工作脈沖由振蕩器提供,一個機器周期輸出一個定時器:工作脈沖由振蕩器提供,一個機器周期輸出一個計數(shù)信號計數(shù)信號(內(nèi)部信號)(內(nèi)部信號)計數(shù)器:工作脈沖由外部電路提供計數(shù)器:工作脈沖由外部電路提供(外部信號)(外部信號)C/TC/

7、T* * 位決定工作模式:位決定工作模式: 0 0:開關(guān)打在上面,為定時器工作模式;開關(guān)打在上面,為定時器工作模式; 1 1:開關(guān)打在下面,為計數(shù)器工作模式,計數(shù)脈沖為開關(guān)打在下面,為計數(shù)器工作模式,計數(shù)脈沖為P3.4P3.4、P3.5P3.5引腳上的外部輸入脈沖,當引腳上發(fā)生負引腳上的外部輸入脈沖,當引腳上發(fā)生負跳變時,計數(shù)器加跳變時,計數(shù)器加1 1。GATEGATE位:位:決定定時器決定定時器/ /計數(shù)器的計數(shù)器的運行取決于運行取決于TRxTRx一個條件還一個條件還是是TRxTRx和和INTxINTx* *引腳兩個條件。引腳兩個條件。 (1 1)0 0:B B點是否計數(shù)點是否計數(shù), ,僅取

8、決于僅取決于TRxTRx的狀態(tài)。的狀態(tài)。(2 2)1 1:B B點電位由點電位由INTXINTX* *的輸入電平和的輸入電平和TRXTRX的狀態(tài)這兩個的狀態(tài)這兩個條件來確定。條件來確定。是否計數(shù)是由是否計數(shù)是由TRxTRx和和INTxINTx* *二個條件來控制二個條件來控制的。的。 方式方式0 0應用應用 例例6-16-1 假設(shè)系統(tǒng)時鐘頻率采用假設(shè)系統(tǒng)時鐘頻率采用6 6MHzMHz,要在要在P1.0P1.0上輸出一個上輸出一個周期為周期為2 2msms的方波,如圖所示。的方波,如圖所示。 方波的周期用方波的周期用T0T0來確定,讓來確定,讓T0T0每隔每隔1 1msms計數(shù)溢出計數(shù)溢出1 1

9、次次( (每每1 1msms產(chǎn)生一次中斷產(chǎn)生一次中斷) ),CPUCPU響應中斷后,在中斷服務程序中對響應中斷后,在中斷服務程序中對P1.0P1.0取反。取反。 (1)(1)計算初值計算初值X X 確定機器周期:確定機器周期:2 2usus 計算次數(shù):計算次數(shù):1 1msms/ /2 2usus =500 =500次次 計算初值計算初值X X:2 21313-X=500 X=7692-X=500 X=7692X X化為化為1616進制,即進制,即X=1E0CH=X=1E0CH=1 1110 0000 1100B B。初值轉(zhuǎn)換:初值轉(zhuǎn)換:TL0TL0只用了低只用了低5 5位,高位,高3 3位沒用

10、,填位沒用,填0 0。TO=1111 0000 TO=1111 0000 0000000 1100B=F00CH0 1100B=F00CH所以,所以,T0T0的初值為:的初值為: TH0=F0H TL0=0CHTH0=F0H TL0=0CH (2)(2)初始化程序設(shè)計初始化程序設(shè)計對寄存器對寄存器IPIP、IEIE、TCONTCON、TMODTMOD的相應位進行正確設(shè)置,將的相應位進行正確設(shè)置,將計數(shù)初值送入定時器中。計數(shù)初值送入定時器中。 (3)(3)程序設(shè)計程序設(shè)計 中斷服務程序除產(chǎn)生方波外,還要注意將計數(shù)初值重新裝中斷服務程序除產(chǎn)生方波外,還要注意將計數(shù)初值重新裝入定時器中,為下一次中斷

11、作準備。入定時器中,為下一次中斷作準備。 參考程序:參考程序: ORG 0000HORG 0000HRESET: LJMP MAIN RESET: LJMP MAIN ;轉(zhuǎn)主程序轉(zhuǎn)主程序 ORG 000BHORG 000BH ;T0T0的中斷入口的中斷入口 LJMP IT0P LJMP IT0P ;轉(zhuǎn)轉(zhuǎn)T0T0中斷處理程序中斷處理程序IT0PIT0P ORG 0100HORG 0100HMAIN: MOV SP,#60H MAIN: MOV SP,#60H ;設(shè)堆棧指針設(shè)堆棧指針 MOV TMOD,#00HMOV TMOD,#00H ;設(shè)置設(shè)置T0T0為方式為方式0 0 MOV TL0,#0C

12、HMOV TL0,#0CH ;T0T0置初值置初值 MOV TH0,#0F0H MOV TH0,#0F0H LCALL PT0M0LCALL PT0M0;調(diào)用子程序調(diào)用子程序PT0M0PT0M0HERE: AJMP HEREHERE: AJMP HERE ;自身跳轉(zhuǎn)自身跳轉(zhuǎn)PT0M0: PT0M0: SETB ET0SETB ET0 ;允許允許T0T0中斷中斷 SETB EA SETB EA ;CPUCPU開中斷開中斷 SETB TR0 SETB TR0 ;啟動啟動T0T0 RET RETITOP: MOV TL0,#0CH ITOP: MOV TL0,#0CH ;T0T0中斷服務子程序,中斷

13、服務子程序, T0 T0需重新置初值需重新置初值 MOV TH0,#0F0HMOV TH0,#0F0H CPL P1.0 CPL P1.0 ;P1.0P1.0的狀態(tài)取反的狀態(tài)取反 RETIRETI查詢方式查詢方式的參考程序的參考程序: : CLR EA CLR EA ;CPUCPU開中斷開中斷 MOV TMOD,#00H MOV TMOD,#00H ;設(shè)置設(shè)置T0T0為方式為方式0 0LOOPLOOP: MOV TH0,#F0H MOV TH0,#F0H ;T0T0置初值置初值 MOV TL0,#0CH MOV TL0,#0CH SETB TR0 SETB TR0 ;接通接通T0T0LOOP1

14、LOOP1:JNB TF0,LOOP1 JNB TF0,LOOP1 ;查詢查詢TF0TF0標志標志 CLR TRO CLR TRO ;T0T0停止計數(shù)停止計數(shù) CLR TF0 CLR TF0 ;T0T0溢出,清溢出,清TF0TF0 CPL P1.0 CPL P1.0 ;P1.0P1.0的狀態(tài)求反的狀態(tài)求反 SJMP LOOP SJMP LOOP6.2.2 6.2.2 方式方式1 1 M1 M1、M0M0= =0101,1616位位的計數(shù)器,與方式的計數(shù)器,與方式0 0的區(qū)別的區(qū)別是計數(shù)器的長度,比方式是計數(shù)器的長度,比方式0 0常用。常用。 例例6-26-2 假設(shè)假設(shè)系統(tǒng)時鐘為系統(tǒng)時鐘為6 6

15、MHzMHz,編寫定時器編寫定時器T0T0產(chǎn)產(chǎn)生生1 1秒定時秒定時的程序。的程序。(1 1)T0T0工作方式的確定工作方式的確定定時時間較長,采用哪一種工作方式?定時時間較長,采用哪一種工作方式?由各種工作方式的特性,可計算出:由各種工作方式的特性,可計算出: 方式方式0 0最長可定時最長可定時16.38416.384msms; ; 方式方式1 1最長可定時最長可定時131.072131.072msms; ; 方式方式2 2最長可定時最長可定時512512 s s。選方式選方式1 1,每隔,每隔100100msms中斷一次,中斷中斷一次,中斷1010次為次為1 1s s。 (2 2)計算計數(shù)

16、初值)計算計數(shù)初值 確定機器周期:確定機器周期:2 2usus 計算次數(shù):計算次數(shù):100100msms/ /2 2usus =50000 =50000次次 計算初值計算初值X X:2 21616-X=50000 -X=50000 所以:所以:X=15536=3CB0HX=15536=3CB0H 因此:因此:TH0=3CHTH0=3CH,TL0=B0H TL0=B0H (3 3)1010次計數(shù)的實現(xiàn)次計數(shù)的實現(xiàn) 采用循環(huán)程序法。采用循環(huán)程序法。(4 4)程序設(shè)計)程序設(shè)計 參考程序參考程序 : : ORG 0000HORG 0000HRESETRESET: LJMP MAIN LJMP MAI

17、N ;上電,轉(zhuǎn)主程序入口上電,轉(zhuǎn)主程序入口MAINMAIN ORG 000BHORG 000BH ;T0T0的中斷入口的中斷入口 LJMP IT0PLJMP IT0P;轉(zhuǎn)轉(zhuǎn)T0T0中斷處理程序中斷處理程序IT0PIT0P ORG 1000HORG 1000H MAIN MAIN: MOV SP,#60H MOV SP,#60H ;設(shè)堆棧指針設(shè)堆棧指針 MOV B,#0AH MOV B,#0AH ;設(shè)循環(huán)次數(shù)設(shè)循環(huán)次數(shù)1010次次 MOV TMOD,#01H MOV TMOD,#01H ;設(shè)設(shè)T0T0工作在方式工作在方式1 1 MOV TL0,#0B0H MOV TL0,#0B0H ;給給T0T

18、0設(shè)初值設(shè)初值 MOV TH0,#3CHMOV TH0,#3CH SETB ET0 SETB ET0 ;允許允許T0T0中斷中斷 SETB EA SETB EA ;CPUCPU開放中斷開放中斷 SETB TR0 SETB TR0 ;啟動啟動T0T0 HERE HERE: SJMP HERE SJMP HERE ;等待中斷等待中斷 ITOPITOP: MOV TL0,#0B0H MOV TL0,#0B0H ;T0T0中斷子程序,重裝初值中斷子程序,重裝初值 MOV TH0,#3CH MOV TH0,#3CH ; DJNZ B DJNZ B,LOOPLOOP CLR TR0 CLR TR0 ;1s

19、1s定時時間到,停止定時時間到,停止T0T0工作工作 LOOP LOOP: RETI RETI 6.2.3 6.2.3 方式方式2 2 計數(shù)滿后自動裝入計數(shù)初值,計數(shù)滿后自動裝入計數(shù)初值,8 8位計數(shù)器位計數(shù)器。低低8 8位作計數(shù)器用,高位作計數(shù)器用,高8 8位作保存位作保存計數(shù)初值計數(shù)初值M1M1、M0=M0=10 10 ,等效框圖如下:,等效框圖如下: TLXTLX作為常數(shù)緩沖器作為常數(shù)緩沖器,當,當TLXTLX計數(shù)溢出時,在置計數(shù)溢出時,在置“1 1”溢出標溢出標志志TFXTFX的同時,還的同時,還自動的將自動的將THXTHX中的初值送至中的初值送至TLXTLX,使使TLXTLX從初值開

20、始重新計數(shù)。定時器從初值開始重新計數(shù)。定時器/ /計數(shù)器的方式計數(shù)器的方式2 2工作過程工作過程如圖如圖6-5(6-5(X=0,1)X=0,1)。省去用戶軟件中重裝初值的程序,精確的定時。省去用戶軟件中重裝初值的程序,精確的定時。6.4.2 6.4.2 方式方式2 2的應用的應用省去程序中重裝初值的指令,并可省去程序中重裝初值的指令,并可產(chǎn)生相當精確的定時時間產(chǎn)生相當精確的定時時間。 例例6-36-3 當當T0T0(P3.4P3.4)引腳上發(fā)生負跳變時,從引腳上發(fā)生負跳變時,從P1.0P1.0引腳上輸引腳上輸出一個周期為出一個周期為1 1msms的方波的方波, ,如圖所示。(系統(tǒng)時鐘為如圖所示

21、。(系統(tǒng)時鐘為6 6MHzMHz)(1 1)工作方式選擇)工作方式選擇T0T0為方式為方式1 1計數(shù),初值計數(shù),初值 0 0FFFFHFFFFH,即外部計數(shù)輸入端即外部計數(shù)輸入端T0T0(P3.4P3.4)發(fā)生發(fā)生一次負跳變一次負跳變時,時,T0T0加加1 1且溢出,溢出標志且溢出,溢出標志TF0TF0置置“1 1”,發(fā)中斷請求。通過查詢,發(fā)中斷請求。通過查詢TF0TF0,可以知道可以知道T0T0腳是否產(chǎn)腳是否產(chǎn)生了負跳變信號。生了負跳變信號。T1T1定義為方式定義為方式2 2定時定時。在。在T0T0腳發(fā)生一次負跳變后,腳發(fā)生一次負跳變后,啟動啟動T1T1每每500500 s s產(chǎn)生一次中斷產(chǎn)

22、生一次中斷,在中斷服務程序中對,在中斷服務程序中對P1.0P1.0求反,使求反,使P1.0P1.0產(chǎn)生周期產(chǎn)生周期1 1msms的方波。的方波。(2 2)計算)計算T1T1初值初值設(shè)設(shè)T1T1的初值為的初值為X X: 確定機器周期:確定機器周期:2 2usus 計算次數(shù):計算次數(shù):500500usus/ /2 2usus =250 =250次次 計算初值計算初值X X:2 28 8-X=250 X=6=06H-X=250 X=6=06H(3 3)程序設(shè)計程序設(shè)計 ORG 0000HORG 0000H RESET: LJMP MAIN RESET: LJMP MAIN ;復位入口轉(zhuǎn)主程序復位入口

23、轉(zhuǎn)主程序 ORG 000BHORG 000BH JMP IT0P JMP IT0P ;轉(zhuǎn)轉(zhuǎn)T0T0中斷服務程序中斷服務程序 ORG 001BHORG 001BH LJMP IT1P LJMP IT1P ;轉(zhuǎn)轉(zhuǎn)T1T1中斷服務程序中斷服務程序 ORG 0100HORG 0100HMAIN: MOV SP,#60HMAIN: MOV SP,#60H MOV TMOD,#26H MOV TMOD,#26H ;初始化,初始化,T1T1為方式為方式2 2定定 時,時,T0T0為方式為方式1 1計數(shù)計數(shù) MOV TL0,#0FFH MOV TL0,#0FFH ;T0T0置初值置初值 MOV TH0,#0F

24、FHMOV TH0,#0FFH MOV TL1,#06H MOV TL1,#06H ;T1T1置初值置初值 MOV TH1,#06HMOV TH1,#06H SETB ET0 SETB ET0 ;允許允許T0T0中斷中斷 SETB EA SETB EA SETB TR0 SETB TR0 ;啟動啟動T0T0HERE: AJMP HEREHERE: AJMP HERE IT0P: CLR TR0 IT0P: CLR TR0 ;T0T0中斷服務程序,停止中斷服務程序,停止T0T0計數(shù)計數(shù) SETB ET1 SETB ET1 ;允許允許T1T1中斷中斷 SETB TR1 SETB TR1 ;啟動啟動

25、T1T1 RETIRETI IT1P: CPL P1.0 IT1P: CPL P1.0;T1T1中斷服務,中斷服務,P1.0P1.0位取反位取反 RETI RETI在在T1T1定時中斷服務程序定時中斷服務程序IT1PIT1P中,省去了中,省去了T1T1中斷服務程中斷服務程序中重新裝入初值序中重新裝入初值0606H H的指令。的指令。例例6-46-4 利用利用T1T1的方式的方式2 2對外部信號計數(shù),對外部信號計數(shù),要求每計滿要求每計滿100100個個數(shù),將數(shù),將P1.0P1.0取反。取反。 本例是本例是方式方式2 2計數(shù)模式計數(shù)模式的應用。的應用。(1 1)選擇工作方式)選擇工作方式 外部信號

26、外部信號由由T1(P3.5)T1(P3.5) 腳輸入腳輸入, ,每發(fā)生一次負跳變計數(shù)器加每發(fā)生一次負跳變計數(shù)器加1 1,每輸入,每輸入100100個脈沖,計數(shù)器產(chǎn)生溢出中斷,在中斷服個脈沖,計數(shù)器產(chǎn)生溢出中斷,在中斷服務程序中將務程序中將P1.0P1.0取反一次。取反一次。T1 T1 方式方式2 2的控制字為的控制字為TMOD=60HTMOD=60H。不使用不使用T0T0時,時,TMODTMOD的低的低4 4位可任取,但不能使位可任取,但不能使T0T0進入方式進入方式3 3,這里取全,這里取全0 0。(2 2)計算)計算T1T1的初值的初值X=2X=28 8-100=156=9CH-100=1

27、56=9CH 因此,因此,TL1TL1的初值為的初值為9 9CHCH,重裝初值寄存器重裝初值寄存器TH1=9CHTH1=9CH(3 3)程序設(shè)計程序設(shè)計 ORG 0000HORG 0000HLJMP MAINLJMP MAINORG 001BHORG 001BH ;T1T1中斷服務程序入口中斷服務程序入口 CPL P1.0 CPL P1.0 ;P1.0P1.0位取反位取反 RETIRETI ORG 0100HORG 0100HMAIN:MAIN:MOV TMOD,#60H MOV TMOD,#60H ;設(shè)設(shè)T1T1為方式為方式2 2計數(shù)計數(shù) MOV TL1,#9CH MOV TL1,#9CH

28、;T1T1置初值置初值 MOV TH1,#9CH MOV TH1,#9CH SETB ET1 ;T1 SETB ET1 ;T1中斷設(shè)置中斷設(shè)置 SETB EA SETB EA SETB TR1SETB TR1 ;啟動啟動T1T1 HERE: HERE: AJMP HEREAJMP HERE6.2.4 6.2.4 方式方式3 3方式方式3 3下,下,T0T0和和T1T1的結(jié)構(gòu)、功能不同。的結(jié)構(gòu)、功能不同。T0T0方式方式3 3:TL0TL0和和TH0TH0分成兩個分成兩個互相獨立的互相獨立的8 8位計數(shù)器位計數(shù)器。其中。其中TL0TL0用用原原T0T0的各控制位、引腳和中斷源的各控制位、引腳和中

29、斷源,即,即GATE0GATE0、TR0TR0、TF0TF0和和T0T0外部計數(shù)輸入引腳、外部計數(shù)輸入引腳、INT0INT0引腳。引腳。TH0TH0只有內(nèi)部定時,占用定時器只有內(nèi)部定時,占用定時器T1T1的的TR1TR1(狀態(tài)控制(狀態(tài)控制位)位)和和TF1TF1(中斷申請標志位)(中斷申請標志位)。T1T1無方式無方式3 3:將將T1T1設(shè)置方式設(shè)置方式3 3,會使,會使T1T1立即停止計數(shù)。立即停止計數(shù)。T0 T0 方式方式3 3T0T0在方式在方式3 3下的下的T1T1工作情況:工作情況:在在T0T0方式方式3 3時,時,T1T1可設(shè)置為可設(shè)置為方式方式0 02 2. . 由于由于TR1

30、TR1和和TF1TF1被被T0T0的的TH0TH0占用,計數(shù)器開關(guān)已被接通。此時用占用,計數(shù)器開關(guān)已被接通。此時用T1T1的的C/TC/T控制控制T1T1運行。計數(shù)器溢出時,只能將輸出送入串行口運行。計數(shù)器溢出時,只能將輸出送入串行口和不需要中斷的場合。和不需要中斷的場合。在一般情況下,當在一般情況下,當T1T1用作串口波特率發(fā)生器時,用作串口波特率發(fā)生器時,T0T0才才設(shè)置為工作方式設(shè)置為工作方式3 3。此時,常把定時器。此時,常把定時器T1T1設(shè)置為設(shè)置為方式方式2 2,用作用作波特率發(fā)生器波特率發(fā)生器。2T0工作在方式工作在方式3下下T1的各種工作方式的各種工作方式 當當T1T1用作串行

31、口的波特率發(fā)生器時,用作串行口的波特率發(fā)生器時, T0T0才工作在方式才工作在方式3 3。T0T0處于方式處于方式3 3時,時, T1T1可定為方式可定為方式0 0、方式、方式1 1和方式和方式2 2,用來作為,用來作為串行口的波特率發(fā)生器,或不需要中斷的場合。串行口的波特率發(fā)生器,或不需要中斷的場合。(1 1)T1T1工作在方式工作在方式0 0 (2 2) T1T1工作在方式工作在方式1 1 (3 3) T1T1工作在方式工作在方式2 2 方式方式3 3的應用的應用例例6-56-5 假設(shè)某假設(shè)某MCS-51MCS-51應用系統(tǒng)的應用系統(tǒng)的兩個外中斷源已被占用兩個外中斷源已被占用,設(shè)置設(shè)置T1

32、T1工作在方式工作在方式2 2,作波特率發(fā)生器,作波特率發(fā)生器用。用?,F(xiàn)要求增加一現(xiàn)要求增加一個外部中斷源,并控制個外部中斷源,并控制P1.0P1.0引腳輸出一個引腳輸出一個5 5kHzkHz的方波。的方波。設(shè)系統(tǒng)時鐘為設(shè)系統(tǒng)時鐘為6 6MHzMHz。(1 1)選擇工作方式)選擇工作方式TL0TL0為方式為方式3 3計數(shù)計數(shù),把,把T0T0引腳(引腳(P3.4P3.4)作附加的外中斷輸入作附加的外中斷輸入端,端,TL0TL0初值設(shè)為初值設(shè)為0 0FFHFFH,當檢測到當檢測到T0T0引腳電平出現(xiàn)負跳變引腳電平出現(xiàn)負跳變時,時,TL0TL0溢出,申請中斷,這相當于跳沿觸發(fā)的外部中斷溢出,申請中斷

33、,這相當于跳沿觸發(fā)的外部中斷源。源。TH0TH0為為8 8位方式位方式3 3定時定時,控制,控制P1.0P1.0輸出輸出5 5kHzkHz的方波信號。如圖的方波信號。如圖6-136-13所示。所示。(2 2)初值計算)初值計算TL0TL0的初值設(shè)為的初值設(shè)為0 0FFHFFH。5kHz5kHz的方波的周期為的方波的周期為200200 s,s,TH0TH0的定時時間為的定時時間為 100100 s s。TH0TH0初值初值X X計算如下:計算如下: 確定機器周期:確定機器周期:2 2usus 計算次數(shù):計算次數(shù):100100usus/ /2 2usus =50 =50次次 計算初值計算初值X X

34、:2 28 8-X=206 =9CH-X=206 =9CH(3 3)程序設(shè)計)程序設(shè)計 ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ORG 000BHORG 000BH ;T0T0中斷入口中斷入口 LJMP TL0INTLJMP TL0INT;跳跳T0T0中斷服務程序中斷服務程序 ORG 001BHORG 001BH ;在在T0T0方式方式3 3時,時,TH0TH0占用占用T1T1的中斷的中斷 LJMP TH0INT LJMP TH0INT;跳跳TH0TH0中斷服務程序中斷服務程序 ORG 0100HORG 0100HMAINMAIN:MOV TMOD,#27

35、H MOV TMOD,#27H ;TL0TL0方式方式3 3計數(shù),計數(shù),T1T1方式方式2 2定時定時 MOV TL0,#FFH MOV TL0,#FFH ;置置TL0TL0初值初值 MOV TH0,#9CH MOV TH0,#9CH ;置;置TH0TH0初值初值 MOV TL1,#data MOV TL1,#data ;datadata為波特率常數(shù)為波特率常數(shù) MOV TH1,#dataMOV TH1,#data MOV IE,#9FHMOV IE,#9FH ;中斷允許中斷允許 SETB TR0 SETB TR0;啟動啟動TL0 TL0 TL0INTTL0INT:MOV TL0,#FFH M

36、OV TL0,#FFH ;TL0TL0中斷,重新裝入初值中斷,重新裝入初值 SETB TR1SETB TR1;啟動;啟動TH0TH0 中斷處理中斷處理 RETI ;TL0 RETI ;TL0中斷返回中斷返回TH0INTTH0INT:MOV TH0,#9CHMOV TH0,#9CH ;TH0TH0中斷,中斷,TH0TH0重新裝入初值重新裝入初值 CPL P1.0CPL P1.0 ;P1.0P1.0位取反輸出位取反輸出 RETI RETI 6.4.4 6.4.4 門控制位門控制位GATEGATE的應用的應用測量脈沖寬度測量脈沖寬度GATE=0GATE=0時,定時器的啟動只受時,定時器的啟動只受TR

37、iTRi位控制位控制GATE=1GATE=1時,定時器的啟動將受時,定時器的啟動將受TRiTRi位和外部中斷信號位和外部中斷信號INTiINTi的共同控制。只有當?shù)墓餐刂?。只有當INTi=1INTi=1,同時,同時TRi=1TRi=1時才能啟動計時才能啟動計數(shù)。數(shù)。INTi=0INTi=0停止計數(shù)。停止計數(shù)。換一個角度,當換一個角度,當GATE=1GATE=1時,定時器實際記錄的時間就是相時,定時器實際記錄的時間就是相應應INTiINTi引腳上高電平的持續(xù)時間。引腳上高電平的持續(xù)時間。參考程序:參考程序: ORG 0000HORG 0000HRESET: AJMP MAIN RESET: A

38、JMP MAIN ;復位入口轉(zhuǎn)主程序復位入口轉(zhuǎn)主程序 ORG 0100HORG 0100H MAIN: MOV SP,#60H MAIN: MOV SP,#60H MOV TMOD,#90H MOV TMOD,#90H ;T1T1為方式為方式1 1定時控制字定時控制字 MOV TL1,#00HMOV TL1,#00H MOV TH1,#00H MOV TH1,#00HLOOP0: JB P3.3,LOOP0LOOP0: JB P3.3,LOOP0;INT1INT1* *高高, ,則循環(huán)則循環(huán) SETB TR1SETB TR1;如如INT1INT1* *為低,啟動為低,啟動T1T1LOOP1:

39、JNB P3.3,LOOP1LOOP1: JNB P3.3,LOOP1;INT1INT1* *低,則循環(huán)低,則循環(huán)LOOP2: JB P3.3,LOOP2 LOOP2: JB P3.3,LOOP2 ;INT1INT1* *高高, ,則循環(huán)則循環(huán) CLR TR1CLR TR1;停止停止T1T1計數(shù)計數(shù) 將將A A中的中的T1T1計數(shù)計數(shù)值送顯示緩沖區(qū)值送顯示緩沖區(qū) 轉(zhuǎn)換成顯示的代碼轉(zhuǎn)換成顯示的代碼 LOOP3: LCALL DIR LOOP3: LCALL DIR ;調(diào)用顯示子程序調(diào)用顯示子程序DIRDIR; ; 顯示顯示T1T1計數(shù)值計數(shù)值 AJMP LOOP3 AJMP LOOP3 ; 執(zhí)行

40、程序,使執(zhí)行程序,使INT1INT1* *引腳上出現(xiàn)的引腳上出現(xiàn)的正脈沖寬度以機器周期正脈沖寬度以機器周期數(shù)的形式顯示在顯示器上。數(shù)的形式顯示在顯示器上。通過反相器,則可測得相應通過反相器,則可測得相應INTiINTi引腳上低電平的持續(xù)時間引腳上低電平的持續(xù)時間。二個時間的和即為。二個時間的和即為INTiINTi引腳上輸入波形的周期,其引腳上輸入波形的周期,其倒數(shù)即為倒數(shù)即為INTiINTi引腳上輸入波形的頻率。還可算出占空引腳上輸入波形的頻率。還可算出占空比等參數(shù)。比等參數(shù)。6.4.5 6.4.5 實時時鐘的設(shè)計實時時鐘的設(shè)計 1 1實時時鐘實現(xiàn)的基本思想實時時鐘實現(xiàn)的基本思想 定時最大時間

41、只能達到定時最大時間只能達到131ms,131ms,如何獲得如何獲得1 1秒的定時秒的定時: :可把可把定時時間定為定時時間定為100100msms,采用中斷方式進行溢出次采用中斷方式進行溢出次數(shù)的累計,計滿數(shù)的累計,計滿1010次,即得到秒計時。次,即得到秒計時。時、分、秒的實現(xiàn)時、分、秒的實現(xiàn):從秒到分,從秒到分,“秒秒”單元滿單元滿6060,“分分”單元加單元加1 1,“分分”單元滿單元滿6060,“時時”單元加單元加1 1,“時時”單元滿單元滿2424,則清,則清0 0。 片內(nèi)片內(nèi)RAMRAM中規(guī)定中規(guī)定3 3個單元個單元作作為秒、分、時單元為秒、分、時單元,具體安排,具體安排如下:如

42、下: 32H32H:“秒秒”單元單元 ;31H31H:“分分”單元;單元;30H30H:“時時”單單元元(2 2)中斷服務程序的設(shè)計)中斷服務程序的設(shè)計中斷服務程序的主要功能是實中斷服務程序的主要功能是實現(xiàn)秒、分、時的計時處理。參現(xiàn)秒、分、時的計時處理。參考程序略。考程序略。(1 1)主程序的設(shè)計)主程序的設(shè)計流程如圖所示。流程如圖所示。6.4.6 6.4.6 運行中讀定時器運行中讀定時器/ /計數(shù)器計數(shù)器在讀取運行中的定時器在讀取運行中的定時器/ /計數(shù)器時,計數(shù)器時,需注意:若恰需注意:若恰好出現(xiàn)好出現(xiàn)TLXTLX溢出向溢出向THXTHX進位的情況,則讀得的(進位的情況,則讀得的(TLXT

43、LX)值就完全不對。值就完全不對。同樣,先讀(同樣,先讀(THXTHX)再讀(再讀(TLXTLX)也可能出錯。也可能出錯。000AFF09出錯:出錯:THX TLXTHX TLXFF09000A出錯:出錯:THX TLXTHX TLX方法:先讀(方法:先讀(THXTHX),),后讀(后讀(TLXTLX),),再讀(再讀(THXTHX)。)。若兩次若兩次讀得(讀得(THXTHX)相同,則讀的內(nèi)容正確。相同,則讀的內(nèi)容正確。若前后兩次讀的(若前后兩次讀的(THXTHX)有變化,則再重復上述過程,這次重復讀得的內(nèi)容有變化,則再重復上述過程,這次重復讀得的內(nèi)容就應是正確的。下面是有關(guān)的程序,讀得的(就

44、應是正確的。下面是有關(guān)的程序,讀得的(TH0TH0)和(和(TL0TL0)放置在放置在R1R1和和R0R0內(nèi)。內(nèi)。RDTIME:MOV A,TH0RDTIME:MOV A,TH0;讀(讀(TH0TH0) MOV R0,TL0 MOV R0,TL0;讀(讀(TL0TL0) CJNE CJNE A,TH0,RDTIMEA,TH0,RDTIME;比較比較2 2次讀得的(次讀得的(TH0TH0);不相等則重復讀;不相等則重復讀 MOV R1,AMOV R1,A;(;(TH0TH0)送入送入R1R1中中 RETRET 6.3 6.3 定時器定時器/ /計數(shù)器對輸入信號的要求計數(shù)器對輸入信號的要求 外部計

45、數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的外部計數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1 1/24/24,例如選例如選用用1212MHzMHz頻率的晶體,則可輸入頻率的晶體,則可輸入500500KHzKHz的外部脈沖。的外部脈沖。輸入信號的高、低電平至少要保持一個機器周期。輸入信號的高、低電平至少要保持一個機器周期。如圖如圖6-106-10所示,圖中所示,圖中TcyTcy為機器周期。為機器周期。思路:定時器/計數(shù)器T0在計數(shù)和定時工作完成后,均采用中斷方式工作。除了第一次計數(shù)工作方式設(shè)置在主程序完成外,后面的定時或計數(shù)工作方式分別在中斷程序完成,用一標志位識別下一輪定時器/計數(shù)器T0的工作方式。4采用定時

46、器采用定時器/計數(shù)器計數(shù)器T0對外部脈沖進行計數(shù),每對外部脈沖進行計數(shù),每計數(shù)計數(shù)100個脈沖后,個脈沖后,T0轉(zhuǎn)為定時工作方式。定時轉(zhuǎn)為定時工作方式。定時1ms后,又轉(zhuǎn)為計數(shù)方式,如此循環(huán)不止。假定后,又轉(zhuǎn)為計數(shù)方式,如此循環(huán)不止。假定MCS-51單片機的晶體振蕩器的頻率為單片機的晶體振蕩器的頻率為6MHz,請使用方,請使用方式式1實現(xiàn),要求編寫出程序。實現(xiàn),要求編寫出程序。T0作計數(shù)器時的初值:X=216-100=65436=FF9CH作定時器時的初值: 確定機器周期:確定機器周期:1 1msms 計算次數(shù):計算次數(shù):1 1m ms s/ /2 2usus =500 =500次次 計算初值計算初值X X:X=2X=21616-500-500=65036=FEC0H ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P MAIN: MOV TMOD,#05H ;定時器;定時器/計數(shù)器計數(shù)器T0為為 計數(shù)方式計數(shù)方式1 MOV TH0,#0FFH MOV TL0,#09CH ;計數(shù);計數(shù)100個脈沖的初個脈沖的初 值賦值值賦值 SETB ET0 ;允許;允許T0中斷中斷 SETB EA ;CPU開中斷開中斷

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論