定時器工作原理_第1頁
定時器工作原理_第2頁
定時器工作原理_第3頁
定時器工作原理_第4頁
定時器工作原理_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、定時器工作原理通電延時型。只要在定時的時間段內(nèi)(即1分鐘)定時器一直得電,則常開觸電就會閉合,只要定時器不斷電常開觸電就會一直閉合。定時器斷電則常開觸電斷開1,定時器/計數(shù)器的結(jié)構(gòu)與功能主要介紹定時器0(T0)和定時器1(T1)的結(jié)構(gòu)與功能。圖6.1是定時器/計數(shù)器的結(jié)構(gòu)框圖。由圖可知,定時器/計數(shù)器由定時器0、定時器1、定時器方式寄存器TMOD和定時器控制寄存器TCON組成。定時器0,定時器1是16位加法計數(shù)器,分別由兩個8位專用寄存器組成:定時器0由TH0和TL0組成,定時器1由TH1和TL1組成。  圖6.1  定時器/計數(shù)器結(jié)構(gòu)框圖 T

2、L0、TL1、TH0、TH1的訪問地址依次為8AH8DH,每個寄存器均可單獨訪問。定時器0或定時器1用作計數(shù)器時,對芯片引腳T0(P3.4)或T1(P3.5)上輸入的脈沖計數(shù),每輸入一個脈沖,加法計數(shù)器加1;其用作定時器時,對內(nèi)部機器周期脈沖計數(shù),由于機器周期是定值,故計數(shù)值確定時,時間也隨之確定。TMOD、TCON與定時器0、定時器1間通過內(nèi)部總線及邏輯電路連接,TMOD用于設(shè)置定時器的工作方式,TCON用于控制定時器的啟動與停止。6.1.1        計數(shù)功能計數(shù)方式時,T的功能是計來自T0(P3.4)T1

3、(P3.5)的外部脈沖信號的個數(shù)。輸入脈沖由1變0的下降沿時,計數(shù)器的值增加1直到回零產(chǎn)生溢出中斷,表示計數(shù)已達預(yù)期個數(shù)。外部輸入信號的下降沿將觸發(fā)計數(shù),識別一個從“1”到“0”的跳變需2個機器周期,所以,對外部輸入信號最高的計數(shù)速率是晶振頻率的1/24。若晶振頻率為6MHz,則計數(shù)脈沖頻率應(yīng)低于1/4MHz。當(dāng)計數(shù)器滿后,再來一個計數(shù)脈沖,計數(shù)器全部回0,這就是溢出。脈沖的計數(shù)長度與計數(shù)器預(yù)先裝入的初值有關(guān)。初值越大,計數(shù)長度越??;初值越小,計數(shù)長度越大。最大計數(shù)長度為65536(216)個脈沖(初值為0)。6.1.2      &

4、#160; 定時方式定時方式時,T記錄單片機內(nèi)部振蕩器輸出的脈沖(機器周期信號)個數(shù)。    每一個機器周期使T0或T1的計數(shù)器增加1,直至計滿回零自動產(chǎn)生溢出中斷請求。定時器的定時時間不僅與定時器的初值有關(guān),而且還與系統(tǒng)的時鐘頻率有關(guān)。在機器周期一定的情況下,初值越大,定時時間越短;初值越小,定時時間越長。最長的定時時間為65536(216)個機器周期(初值為0)。6.2  定時器/計數(shù)器控制寄存器與對定時器/計數(shù)器有關(guān)的控制寄存器共有4個:TMOD、TCON、IE、IP。IE、IP已在中斷一節(jié)中介紹,這里不再贅述。6.2

5、.1        定時器/計數(shù)器控制寄存器TCON特殊功能寄存器TCON用于控制定時器的操作及對定時器中斷的控制。其各位定義格式如下。其中D0D3位與外部中斷有關(guān),已在中斷系統(tǒng)一節(jié)中介紹。 TF0和TF1:定時器/計數(shù)器溢出標(biāo)志位。當(dāng)定時器/計數(shù)器0(或定時器/計數(shù)器1)溢出時,由硬件自動使TF0(或TF1)置1,并向CPU申請中斷。CPU響應(yīng)中斷后,自動對TF1清零。TF1也可以用軟件清零。TR0和TR1:定時器/計數(shù)起運行控制位。TR0(或TR1)=0,停止定時器/計數(shù)器0(或定時器/計數(shù)器1)工作

6、。TR0(或TR1)=1,啟動定時器/計數(shù)器0(或定時器/計數(shù)器1)工作??捎绍浖?(或清0)來啟動(或關(guān)閉)定時器/計數(shù)器,使定時器/計數(shù)器開始計數(shù)。用指令SETB (或CLR)使運行控制位置1(或清0)。6.2.2        工作方式寄存器TMODTMOD用于控制定時器/計數(shù)器的工作方式。字節(jié)地址為89H,不可位尋址,只能用字節(jié)設(shè)置其內(nèi)容。其格式如下:  定時器/計數(shù)器1定時器/計數(shù)器0位序D7D6D5D4D3D2D1D0位標(biāo)志GATEC/M1M0GATEC/M1M0

7、0;其中,低4位用于T0,高4位用于T1的。GATE:門控位。GATE0,只要用軟件使TR0(或TR1)置1就能啟動定時器/計數(shù)器0(或定時器/計數(shù)器1);GATE1,只有在 (或 )引腳為高電平的情況下,且由軟件使TR0(或TR1)置1時,才能啟動定時器/計數(shù)器0(或定時器/計數(shù)器1)工作。不管GATE處于什么狀態(tài),只要TR0(或TR1)=0定時器/計數(shù)器便停止工作。C/ :定時器/計數(shù)器工作方式選擇位。C/ 0,為定時工作方式;C/ 1,為計數(shù)工作方式。M0、M1:工作方式選擇位,確定4種工作方式。如表6.1所示。  表

8、6.1  定時器/計數(shù)器工作方式選擇M1M0工作方式功 能 說 明00113位計數(shù)器01216位計數(shù)器103自動再裝入8位計數(shù)器114定時器0:分成兩個8位計數(shù)器定時器1:停止計數(shù) 【例6.1】 設(shè)置定時器1工作于方式1,定時工作方式與外部中斷無關(guān),則M1=0,M0=1,GATE=0,因此,高4位應(yīng)為0001;定時器0未用,低4位可隨意置數(shù),但低兩位不可為11(因方式3時,定時器1停止計數(shù)),一般將其設(shè)為0000。因此,指令形式為:MOV  TMOD,#10H定時器/計數(shù)器工作方式與程序設(shè)計通過對特殊功能

9、寄存器TMOD中的設(shè)置M1、M0兩位的設(shè)置來選擇四種工作方式,定時器/計數(shù)器0、1和2的工作方式相同,方式3的設(shè)置差別較大。6.3.1        工作方式0工作方式寄存器TMOD中的M1M0為:00。定時器/計數(shù)器T0工作在方式0時,16位計數(shù)器只用了13位,即TH0的高8位和TL0的低5位,組成一個13位定時器/計數(shù)器。當(dāng)TL0的低5位計滿溢出時,向TH0進位,TH0溢出時,對中斷標(biāo)志位TF0置位,向CPU申請中斷。定時器/計數(shù)器0方式0的邏輯結(jié)構(gòu)如圖6.2所示。   1工作在定

10、時方式C/ 0,定時器對機器周期計數(shù)。定時器在工作前,應(yīng)先對13位的計數(shù)器賦值,開始計數(shù)時,在初值的基礎(chǔ)上進行減1計數(shù)。定時時間的計算公式為:定時時間(213 計數(shù)初值)×晶振周期×12或             定時時間(213 計數(shù)初值)×機器周期若晶振頻率為12MHz,則最短定時時間為213(2131)×(1/12)×106×121 s最長定時時間為(2130)×

11、;(1/12)×106×128 192 s2工作在計數(shù)方式C/ 1,13位計數(shù)器對外部輸入信號進行加1計數(shù)。利用 由0變?yōu)?時,開始計數(shù), 由1變?yōu)?時,停止計數(shù),可以測量在 端出現(xiàn)的正脈沖的寬度。計數(shù)值的范圍是1213=8192 (個外部脈沖)?!纠?.2】假設(shè)AT89S52單片機晶振頻率為12MHz,要求定時時間8ms,使用定時器T0,工作方式0,計算定時器初值X。解: t = (213 X)×機器周期       當(dāng)單片

12、機晶振頻率為12MHz時,機器周期=1s     8×103 = (213 X)×1       X = 8192-8000 = 192       轉(zhuǎn)換成二進制數(shù)為:11000000B【例6.3】假設(shè)AT89S52單片機晶振頻率為12MHz,所需定時時間為250s,當(dāng)T0工作在方式0時T0計數(shù)器的初值是多少?解: t = (213

13、60;X)×機器周期       當(dāng)單片機晶振頻率為12MHz時,機器周期=1s     250 = (213 X0)×1       X 0= 8192-250 = 7942       轉(zhuǎn)換成二進制數(shù)為:1111100000110B【例6.4】利用T0方式0產(chǎn)生1ms的定時,在P1.2

14、引腳上輸出周期為2ms的方波。設(shè)單片機晶振頻率fosc12MHz。解:(1)解題思路要在P1.2引腳輸出周期為2ms的方波,只要使P1.2每隔1ms取反一次即可。執(zhí)行指令為CPL  P1.2。(2)確定工作方式 :  方式0  TMOD=00H  C/ 0:T0為定時功能;(D2位)GATE0,只要用軟件使TR0(或TR1)置1就能啟動定時器T0(或T1);    M1M0 = 00,工作方式0     T

15、MOD的值為 = 00H    TMOD.4TMOD.7可取任意值,因T1不用,這里取0值。    使用 MOV  TMOD , #00H 即可設(shè)定T0的工作方式(3)計算1 ms定時時T0的初值機器周期  T = 1fosc×12 = 1s計數(shù)個數(shù):X =1ms/ls = 1000設(shè)T0的計數(shù)初值為x0,則 x0 (213一X)s       &

16、#160;                  81921000                          7192D  轉(zhuǎn)換成二進制

17、數(shù)為:11100000  11000B                                       高8位   低5位  &

18、#160;將高8位11100000 = 0E0H裝入TH0   將低5位11000 = 18H裝入TL0                  1                    

19、0;                  1    EA = 1 ,CPU開放中斷;    ET0 = 1,允許T0中斷;(4)編程可采用中斷和查詢兩種方式編寫程序。方法一:中斷方式ORG  0000H          

20、     AJMP  MAIN         ;轉(zhuǎn)主程序MAIN               ORG  000BH             

21、;  AJMP  IT0P           ;轉(zhuǎn)T0中斷服務(wù)程序IT0P                      ORG  1000H MAIN:MOV   SP,

22、#60H     ;設(shè)堆棧指針               MOV  TH0 , #0E0H      ;給定時器T0送初值        MOV TMOD,#00H    ;設(shè)置T0為方式0,定時&

23、#160;       MOV  TL0 , #18H     ;送定時初值        MOV TH0,#0E0HSETB  EA            ;CPU開中斷     

24、0;  SETB  ET0           ;T0允許中斷        SETB TR0             ;啟動T0定時HERE: SJMP   HERE  

25、0;      ;等待中斷中斷服務(wù)程序:IT0P:  ORG   1200H         ;T0中斷入口       MOV   TL0,#18H     ;重新裝入計數(shù)初值      

26、   MOV  TH0,#0E0H         CPL   P1.2             ;輸出方波        RETI       &#

27、160;           ;中斷返回 END方法二:查詢方式            MOV  TMOD,#00H   ;設(shè)置T0為方式0,定時            MOV &

28、#160;TL0,#18H      ;送初值            MOV  TH0,#0E0H             SETB  TR0         

29、   ;啟動T0定時LOOP: JBC   TF0,NEXT     ;查詢定時時間到否?            SJMP  LOOPNEXT:MOV  TL0,#18H      ;重新裝入計數(shù)初值     

30、      MOV TH0,#0E0H           CPL   P1.2             ;輸出方波       SJMP  LOOP  

31、60;        ;重復(fù)循環(huán)6.3.2        工作方式1工作方式寄存器TMOD中的M1M0為:01。定時器T0工作方式1與工作方式0類同,差別在于其中的計數(shù)器的位數(shù)。工作方式1以16位計數(shù)器參與計數(shù)。定時器/計數(shù)器0方式1的邏輯結(jié)構(gòu)如圖6.3所示。 1工作在定時方式C/ 0,定時器對機器周期計數(shù)。定時時間的計算公式為:定時時間(213 計數(shù)初值)×晶振周期×12或 

32、            定時時間(213 計數(shù)初值)×機器周期若晶振頻率為12MHz,則最短定時時間為216(2161)×(1/12)×106×121 s最長定時時間為(2160)×(1/12)×106×1265 536 s65.5 ms2工作在計數(shù)方式C/ 1,16位計數(shù)器對外部輸入信號進行加1計數(shù)。計數(shù)值的范圍是1216=65 536 (個外部脈沖)?!纠?.5】假設(shè)AT89S52單

33、片機晶振頻率為12MHz,所需定時時間為10ms,當(dāng)T0工作在方式1時T0計數(shù)器的初值是多少?解: t = (216 X0)×機器周期       當(dāng)單片機晶振頻率為12MHz時,機器周期=1s     10×103 = (213 X0)×1       X = 65536-10000 = 55536 

34、60;  轉(zhuǎn)換成二進制數(shù)為:1101100011110000 B = 0D8F0H【例6.6】假設(shè)AT89S52單片機晶振頻率為12MHz,定時器T0的定時初值為9800,計算T0工作在方式1時的定時時間。解: t = (216 X0)×機器周期       當(dāng)單片機晶振頻率為12MHz時,機器周期=1s     t = (216 9800)×1   

35、60;   t = 65536-9800 = 55736s【例6.7】 用定時器T0產(chǎn)生50HZ的方波。由P1.0輸出此方波(設(shè)時鐘頻率為12MHZ)。采用中斷方式。解:50HZ的方波周期T為  T = 1/50 = 20ms    可以用定時器產(chǎn)生10ms的定時,每隔10ms改變一次P1.0的電平,即可得到50HZ的方波。定時器T0應(yīng)工作在方式1。(1)工作在方式1時的T0初值,根據(jù)下式計算:     t = (216 X)

36、×機器周期       時鐘頻率為12MHz,則機器周期 = 1µs     10×103 = (216 X)× 1     X = 65536 10000 = 55536轉(zhuǎn)換為二進制數(shù):11011000   11001100B       

37、0;           高8位     低8位高8位 = 0D8H裝入TH0,低8位 = 0CCH裝入TL0。(2)程序ORG  0000H                     

38、60;        AJMP  MAIN                 ORG  000BH                  

39、;   ;T0的中斷入口地址AJMP  T0INT                 ORG  0100HMAIN: MOV  TMOD , #01H      ;設(shè)置T0為工作方式1MOV  TH0 , #0D8 H   

40、;    ;裝入定時器初值MOV  TL0 , #0CC HSETB  ET0                     ;設(shè)置T0允許中斷SETB  EA            &

41、#160;;CPU開中斷SETB  TR0                     ;啟動T0SJMP  $                    &

42、#160;    ;等待中斷 中斷服務(wù)程序;ORG  0300HT0INT:CPL  P1.0                 ;P1.0取反MOV  TH0 , #0D8H ;重新裝入定時初值MOV  TL0 , #0CCHRETI 注:  SETB

43、0; ET0                     ;設(shè)置T0允許中斷SETB  EA             ;CPU開中斷這兩條指令可以等效為  MOV  IE , #82H。6.3.3

44、0;       工作方式2定時器/計數(shù)器0方式2的邏輯結(jié)構(gòu)如圖6.4所示。工作方式寄存器TMOD中的M1M0為:10定時器/計數(shù)器在工作方式2時,16位的計數(shù)器分成了兩個獨立的8位計數(shù)器TH和TL。此時,定時器/計數(shù)器構(gòu)成了一個能重復(fù)置初值的8位計數(shù)器。其中,TL用作8位計數(shù)器,TH用來保存計數(shù)的初值。每當(dāng)TL計滿溢出時,自動將TH的初值再次裝入TL。1工作在定時方式C/ 0,定時器對機器周期計數(shù)。定時時間的計算公式為:定時時間(28 計數(shù)初值)×晶振周期×12或 

45、0;           定時時間(28 計數(shù)初值)×機器周期若晶振頻率為12MHz,則最短定時時間為28(281)×(1/12)×106×121 s最長定時時間為(280)×(1/12)×106×12256 s  2工作在計數(shù)方式C/ 1,8位計數(shù)器對外部輸入信號進行加1計數(shù)。計數(shù)值的范圍是128=256 (個外部脈沖)。【例6.8】利用T0方式2實現(xiàn)以下功能:當(dāng)T0(P3.

46、4)引腳每輸入一個負脈沖時,使P1.0輸出一個500s的同步脈沖。設(shè)晶振頻率為6MHz,請編程實現(xiàn)該功能。其波形如圖6.5所示。 圖6.5  例6.6波形圖(1) 確定工作方式首先選T0為方式2,外部事件計數(shù)方式。當(dāng)P3.4引腳上的電平發(fā)生負跳變時,T0計數(shù)器加1,溢出標(biāo)志TF0置1;然后改變T0為500s定時工作方式,并使P1.0輸出由1變?yōu)?。T0定時到產(chǎn)生溢出,使P1.0引腳恢復(fù)輸出高電平。T0先計數(shù),后定時,分時操作。根據(jù)題目要求方式控制字TMOD是:計數(shù)時:(TMOD) = 0000 0110B = 06H定時時:(TMOD) = 0000 0

47、010B = 02H(2)計算初值機器周期T = 12fosc = 12/6MHZ =2s計數(shù)時:計數(shù)個數(shù)  X = 1計數(shù)初值 = (256X) = (2561) =255=0FFH,(TH0)=(TL0)=0FFH定時時:計數(shù)個數(shù)  X =/ Tm= 500s2s =250定時初值 = 256X = 256250 = 6,(TH0) = (TL0) = 06H    (3)編程方法采用查詢方法START:MOV  TMOD,#06H   &#

48、160;   ;T0方式2,外部計數(shù)方式            MOV  TH0,#0FFH        ;T0計數(shù)初值            MOV  TL0,#0FFH   

49、         SETB  TR0                ;啟動T0計數(shù)LOOPl:JBC  TF0,PTF01    ;查詢T0溢出標(biāo)志,TF01時轉(zhuǎn)移,且TF00(查P3.4負跳變)      &

50、#160;     SJMP LOOPlPTF01:CLR TR0             ;停止計數(shù)            MOV  TMOD,#02H  ;T0方式2,定時       

51、     MOV  TH0,#06H    ;T0定時500s初值            MOV  TL0,#06H            CLR   P1.0   &#

52、160;       ;P1.0清0            SETB  TR0           ;啟動定時500sLOOP2:JBC  TF0,PTF02     ;查詢溢出標(biāo)志,定時到TF0=l 

53、;轉(zhuǎn)移,且TF00(第一個500s到否?)            SJMP  LOOP2PTF02:SETB  P1     ;P1.0置1(到了第一個500s)            CLR  TR0    

54、                   ;停止計數(shù)            SJMP  START6.3.4        工作方式3工作方式寄存器TMOD中的M1M0為:11。工作方式3僅對定時器/計數(shù)器0有效,此時,將16位的計數(shù)器分為兩個獨立的8位計數(shù)器TH0和TL0。當(dāng)定時器/計數(shù)器0工作在方式3時,定時器/計數(shù)器1只能工作在方式02,并且工作在不需要中斷的場合。在一般情況下,當(dāng)定時器/計數(shù)器1用作串行口波特率發(fā)生器時,定時器/計數(shù)器0才設(shè)置為工作方式

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論