第5章定時計數器_第1頁
第5章定時計數器_第2頁
第5章定時計數器_第3頁
第5章定時計數器_第4頁
第5章定時計數器_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第5 5章章 定時定時/ /計數器計數器5.1 5.1 定時定時/ /計數器計數器0 0和和1 15.3 5.3 定時定時/ /計數器的應用計數器的應用5.1 5.1 定時定時/ /計數器計數器0 0和和1 15.1.1 5.1.1 定時定時/ /計數器的結構及功能計數器的結構及功能5.1.2 5.1.2 定時定時/ /計數器計數器0 0和和1 1的控制狀態(tài)寄存器的控制狀態(tài)寄存器5.1.3 T05.1.3 T0和和T1T1的的4 4種工作模式種工作模式5.1.1 5.1.1 定時定時/ /計數器的結構及功能計數器的結構及功能1 1、定時、定時/ /計數器的結構計數器的結構微處理器微處理器(C

2、PUCPU)TH1TH1TMODTMODTCONTCONTL0TL0TH0TH0TL1TL1T1T1部分部分T0T0部分部分P3.5(T1)P3.5(T1)P3.4(T0)P3.4(T0)圖圖5-1 5-1 定時定時/ /計數器的結構計數器的結構2 2、T0T0和和T1T1的功能選擇的功能選擇(1 1)計數功能)計數功能 就是對外部事件進行計數。計數脈沖來自相應就是對外部事件進行計數。計數脈沖來自相應的外部輸入引腳的外部輸入引腳T0T0(P3.4)P3.4)或或T1(P3.5)T1(P3.5)。當輸入。當輸入信號發(fā)生由信號發(fā)生由1 1至至0 0的負跳變時,計數器(的負跳變時,計數器(TH0TH

3、0,TL0TL0或或TH1TH1,TL1TL1)的值增)的值增1 1。計數的最高頻率一計數的最高頻率一般為振蕩頻率的般為振蕩頻率的1/241/24。(2 2)定時功能)定時功能 也是通過計數實現的。計數脈沖來自內部時鐘也是通過計數實現的。計數脈沖來自內部時鐘脈沖,每個機器周期計數值增脈沖,每個機器周期計數值增1 1,每個機器周期,每個機器周期=12=12個振蕩周期,因此計數頻率為振蕩頻率的個振蕩周期,因此計數頻率為振蕩頻率的1/121/12。所以計數值乘以機器周期就是定時時間。所以計數值乘以機器周期就是定時時間。5.1.2 定時定時/ /計數器計數器0 0和和1 1的控制狀態(tài)寄存器的控制狀態(tài)寄

4、存器1 1、模式控制寄存器、模式控制寄存器TMODTMOD 格式如下:格式如下:(1 1)GATEGATE位:門控位。當位:門控位。當GATE=1GATE=1時,只有時,只有INTOINTO或或INT1INT1為高電平且為高電平且TR0TR0或或TR1TR1置置1 1時,相應的定時時,相應的定時/ /計數器才被選通工作,可用于測量在計數器才被選通工作,可用于測量在INTXINTX端出端出現的正脈沖的寬度;當現的正脈沖的寬度;當GATE=0GATE=0,則只要,則只要TR0TR0和和TR1TR1置置1 1,定時,定時/ /計數器就被選通。計數器就被選通。GATE C/T M1 M0 GATE C

5、/T M1 M0控制控制T1T1控制控制T0T0 (2 2)C/TC/T位:計數位:計數/ /定時功能選擇位。定時功能選擇位。C/T=0C/T=0,設置位定時器方式,計數器的輸入是內部時鐘設置位定時器方式,計數器的輸入是內部時鐘脈沖,其周期等于機器周期。脈沖,其周期等于機器周期。C/T=1C/T=1,設置為計,設置為計數器方式,計數器輸入來自數器方式,計數器輸入來自T0T0(P3.4)P3.4)或或T1(P3.5)T1(P3.5)端外部脈沖。端外部脈沖。 M1M1、M0M0位:工作模式選擇位。位:工作模式選擇位。2 2位形成位形成4 4種編碼,種編碼,對應對應4 4種工作模式。見表種工作模式。

6、見表5-15-1。模式模式1 1。TLXTLX與與THXTHX構成構成1616位計數器。計滿溢出時,位計數器。計滿溢出時,1616位計位計數器回零。數器回零。模式模式2 2。8 8位自動重裝載的定時位自動重裝載的定時/ /計數器,每當計數器計數器,每當計數器TLXTLX溢出時,溢出時,THXTHX中的內容重新裝載到中的內容重新裝載到TLXTLX。表表5-1 5-1 定時定時/ /計數器工作模式計數器工作模式M1 M0M1 M0功功 能能 描描 述述0 00 0模式模式0 0。TLXTLX中低中低5 5位與位與THXTHX中的中的8 8位構成位構成1313位計數器。計滿位計數器。計滿溢出時,溢出

7、時,1313位計數器回零。位計數器回零。0 10 11 01 01 11 1模式模式3 3。對定時器。對定時器0 0,分成,分成2 2個個8 8位計數器,對于定時器位計數器,對于定時器1 1,停止計數。停止計數。TMODTMOD寄存器的單元地址為寄存器的單元地址為89H89H,不能位尋址。,不能位尋址。2 2、控制寄存器、控制寄存器TCONTCON格式如下:格式如下:TF1TF1位:定時器位:定時器1 1溢出標志位。溢出標志位。 當定時當定時/ /計數器計數器1 1溢出時,由硬件置溢出時,由硬件置1 1。在查詢。在查詢方式時,做狀態(tài)位供查詢,查詢有效后由軟方式時,做狀態(tài)位供查詢,查詢有效后由軟

8、件清零;在中斷方式時,做中斷申請標志位件清零;在中斷方式時,做中斷申請標志位進入中斷服務后由硬件自動清零。進入中斷服務后由硬件自動清零。TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TR1TR1位:定時器位:定時器1 1運行控制位。由軟件置位或清運行控制位。由軟件置位或清零,置位時,定時零,置位時,定時/ /計數器接通工作;清零時,計數器接通工作;清零時,停止工作。停止工作。 TF0TF0位:定時器零溢出標志位,同位:定時器零溢出標志位,同TF1TF1。 TR0TR0位:定時器零運行控制位,同位:定時器零運行控制位

9、,同TR1TR1。 字節(jié)地址為字節(jié)地址為88H88H,位地址為,位地址為8888H H8FH8FH。3 3、定時、定時/ /計數器的初始化計數器的初始化(1 1)對)對TMODTMOD賦值,以確定定時器的工作模式;賦值,以確定定時器的工作模式;(2 2)置定時)置定時/ /計數器初值,直接將初值寫入寄存計數器初值,直接將初值寫入寄存器的器的TH0TH0、TL0TL0或或TH1TH1、TL1TL1;(3 3)根據需要,對)根據需要,對IEIE置初值,開放定時器中斷;置初值,開放定時器中斷;(4 4)對)對TCONTCON寄存器中的寄存器中的TR0TR0或或TR1TR1置位,啟動定置位,啟動定時時

10、/ /計數器,置位以后,計數器即按規(guī)定的工計數器,置位以后,計數器即按規(guī)定的工作模式和初值進行計數或開始定時。作模式和初值進行計數或開始定時。 初值計算:初值計算: 設計數器的最大值為設計數器的最大值為M M,則置入的初值,則置入的初值X X為:為: 計數方式:計數方式:X=M-X=M-計數值計數值 定時方式:由定時方式:由(M-X)T=(M-X)T=定時值定時值, ,得得X=M-X=M-定時值定時值/ /T T T T為計數周期,是單片機的機器周期。為計數周期,是單片機的機器周期。(模式(模式0 M0 M為為2 21313,模式,模式1 M1 M為為2 21616,模式,模式2 2和和3 M

11、3 M為為2 28 8)例如:機器周期為例如:機器周期為1 1ss 時,工作在模式時,工作在模式0 0,則最,則最大定時值為大定時值為:2:213131 1ss =8.192ms =8.192ms 若工作在模式若工作在模式1,1,則最大定時值為則最大定時值為: : 2 216161 1ss =65.536ms =65.536ms5.1.3 T0 T0和和T1T1的的4 4種工作模式種工作模式1 1、模式、模式0 0TL1 TH1TL1 TH1(5 5位)(位)(8 8位)位)TF1TF111T1T1引腳引腳1 1振蕩器振蕩器12TR1TR1GATEGATEINT1INT1引腳引腳控制控制C/T

12、=0C/T=0C/T=1C/T=1中斷中斷圖圖5-3 5-3 定時定時/ /計數器計數器1 1工作模式工作模式0 0(1313位計數器)位計數器)2 2、模式、模式1 1TL1 TH1TL1 TH1(8 8位)(位)(8 8位)位)TF1TF111T1T1引腳引腳1 1振蕩器振蕩器12TR1TR1GATEGATEINT1INT1引腳引腳控制控制C/T=0C/T=0C/T=1C/T=1中斷中斷3 3、模式、模式2 2TL1 TL1 (8 8位)位)TF1TF111T1T1引腳引腳1 1振蕩器振蕩器12TR1TR1GATEGATEINT1INT1引腳引腳控制控制C/T=0C/T=0C/T=1C/T

13、=1中斷中斷TH1 TH1 (8 8位)位)重裝載重裝載圖圖5-4 5-4 定時定時/ /計數器計數器1 1工作模式工作模式2 2(8 8位自動裝載模式)位自動裝載模式)4 4、模式、模式3 3TL0 TL0 (8 8位)位)11T0T0引腳引腳1 1振蕩器振蕩器12TR0TR0GATEGATEINT0INT0引腳引腳控制控制C/T=0C/T=0C/T=1C/T=1TF1TF1中斷中斷1/12fOSC1/12fOSC1/12fOSC控制控制TR1TR1TH0 TH0 (8 8位)位)TF1TF1中斷中斷圖圖5-5 5-5 定時定時/ /計數器計數器0 0工作模式工作模式3 3(2 2個個8 8

14、位計數器)位計數器)5.2 定時計數器2 -52子系列單片機有一個具有自動重裝載和捕獲能力的16位定時/計數器2,簡稱T2。在特殊功能寄存器組里,有5個SFR與T2有關:控制寄存器T2CON、捕獲寄存器RCAP2H和RCAP2L、定時寄存器高低字節(jié)TH2和TL2。5.2.1 T2控制寄存器T2CONTF2(T2CON.7)位:T2溢出標志位。T2計數溢出時置位,并申請中斷。該位只能靠軟件清零。但在波特率發(fā)生器方式下,T2溢出不置位。 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T CP/RL2 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T CP/RL2 E

15、XF2(T2CON.6)位:T2外部觸發(fā)中斷標志位。當EXEN2=1且T2EX引腳出現負跳變而造成捕獲或重裝載時,EXF2置位,并申請中斷。該位只能靠軟件清零。RCLK(T2CON.5)位:接收時鐘選擇位??寇浖?或清0,以選擇T2或T1做串行口接收波特率發(fā)生器。1:選擇T2,0:選擇T1。TCLK(T2CON.4)位:發(fā)送時鐘選擇位??寇浖?或清0,以選擇T2或T1做串行口發(fā)送波特率發(fā)生器。1:選擇T2,0:選擇T1。EXEN2(T2CON.3)位:T2外部觸發(fā)允許標志???軟件置1或清0。當EXEN2=1時,若T2未用做串行口波特率發(fā)生器,則在T2EX引腳出現負跳變時,將造成T2捕獲或

16、重裝載操作,并置EXF2位,請求中斷;EXEN2=0時,T2EX引腳信號不起作用。TR2(T2CON.2)位:T2的運行控制位,由軟件置位或清零。TR2=1,啟動T2運行,TR2=0,關閉T2。C/T(T2CON.1)位:定時/計數方式選擇位。C/T=1時,對T2CLK外引腳脈沖計數;C/T =0時,對內部機器計數。 CP/RL2(T2CON.0)位:捕獲重裝載標志位。CP/ RL2=1時,選擇捕獲功能,此時若EXEN2=1,且T2EX引腳出現負跳變,則發(fā)生捕獲操作,即把TH2及TL2內容傳送給RCAP2H及RCAP2L;當CP/ RL2=0時,選擇重裝載操作,此時T2溢出或EXEN2=1條件

17、下,有T2EX負跳變,都會產生重裝載操作,即把RCAP2H及RCAP2L內容傳送給TH2及TL2。當RCLK=1或TCLK=1時,該位不起作用。5.2.2 定時/計數器T2的工作方式T2有兩種工作方式:定時/計數器方式和波特率發(fā)生器方式。1、T2的定時/計數器工作方式 T2定時/計數方式下的邏輯如圖所示。在該方式下,C/T2決定是定時方式還是計數方式。C/T2 =0時,對機器周期計數,作定時器使用;當C/ T2=1時,對T2CLK引腳脈沖計數,用作計數器。 該方式與T0和T1完全一樣。 CP/RL2用來選擇捕獲還是重裝載。捕獲時,數據由TH2及TL2傳送給RCAP2H及RCAP2L;重裝載時,

18、數據傳送方向與之相反。 捕獲或重裝載發(fā)生在下述情況之下:(1)T2計數溢出時,若CP/RL2=0,則捕獲。 (2)當EXEN2=1且T2EX引腳出現負跳變時,根據CP/RL2是0還是1,產生捕獲或重裝載操作。 若T2的中斷是被允許的,則T2計數溢出或捕獲及重裝載都會引發(fā)T2中斷。T2的中斷標志必須由軟件清除。2、波特率發(fā)生器方式 當RCLK=1或TCLK=1時,T2工作在波特率發(fā)生器方式,此時的T2邏輯框圖如圖5-7所示。 此時的計數脈沖來源由C/T2決定,而此時的CP/RL2位將不起作用。 5.3 5.3 定時定時/ /計數器的應用計數器的應用5.3.1 5.3.1 定時定時/ /計數器模式

19、計數器模式0 0的應用的應用5.3.2 5.3.2 定時定時/ /計數器模式計數器模式1 1的應用的應用5.3.3 5.3.3 定時定時/ /計數器模式計數器模式2 2的應用的應用5.3.4 5.3.4 定時定時/ /計數器門控位計數器門控位GATEGATE的應用的應用5.3.5 5.3.5 運行中讀定時運行中讀定時/ /計數器計數器5.3.1 定時定時/ /計數器模式計數器模式0 0的應用的應用【例【例5-1 5-1 】試利用試利用T0T0產生周期為產生周期為1ms1ms、寬度為一、寬度為一個機器周期的負脈沖串,并由個機器周期的負脈沖串,并由P1.0P1.0送出。送出。 設系統(tǒng)晶振為設系統(tǒng)晶

20、振為12MHz12MHz,則計數頻率為,則計數頻率為1MHz1MHz。 設計數初值為設計數初值為X X,則由(,則由(M-XM-X)T=T=定時值定時值 即(即(2 21313- -X X)1010-6-6=1=11010-3-3 得得: :X=7192=1110000011000BX=7192=1110000011000B。 高高8 8位給位給TH0TH0,低,低5 5位給位給TL0TL0,則,則TH0=0E0HTH0=0E0H,TL0=18HTL0=18H。 采用查詢方式,編程如下:采用查詢方式,編程如下: MOV TMODMOV TMOD,00H 00H ;設置定時器;設置定時器0 0模

21、式模式0 0 MOV TH0 MOV TH0,0E0H 0E0H ;設置計數初值;設置計數初值 MOV TL0MOV TL0,18H18H SETB TR0 SETB TR0 ;啟動定時器;啟動定時器0 0 T0INTT0INT:JNB TF0JNB TF0,T0INTT0INT CLR TF0 CLR TF0 CLR P1.0 CLR P1.0 SETB P1.0 SETB P1.0 MOV TH0 MOV TH0,0E0H 0E0H ;用軟件重新裝載;用軟件重新裝載T0T0 MOV TL0 MOV TL0,18H18H SJMP T0INT SJMP T0INT5.3.2 定時定時/ /計

22、數器模式計數器模式1 1的應用的應用【例【例5-25-2】利用利用T0T0模式模式1 1產生一個產生一個50Hz50Hz的方波,由的方波,由P1.0P1.0輸出。輸出。 設系統(tǒng)晶振為設系統(tǒng)晶振為12MHZ12MHZ,則計數頻率為,則計數頻率為1MHZ1MHZ,計,計數器初值為數器初值為X X,由,由 (M-XM-X)T=T=定時值定時值 (2 21616- -X X)1010-6-6=1/=1/(50502 2) 得得: :X=55536=0D8F0HX=55536=0D8F0H。 高高8 8位位0D8H0D8H給給TH0TH0,低,低8 8位位0 0F0HF0H給給TL0TL0。 采用查詢方

23、式,編程如下:采用查詢方式,編程如下: MOV TMODMOV TMOD,01H 01H ;設置定時器;設置定時器0 0模式模式1 1 SETB TR0 SETB TR0 ;啟動定時器;啟動定時器0 0LOOPLOOP:MOV TH0MOV TH0,0D8H 0D8H ;設置計數初值;設置計數初值 MOV TL0MOV TL0,0F0H0F0H JNB TF0 JNB TF0, CLR TF0CLR TF0 CPL P1.0 CPL P1.0 SJMP LOOP SJMP LOOP5.3.3 定時定時/ /計數器模式計數器模式2 2的應用的應用【例【例5-35-3】利用利用T1T1模式模式2

24、2進行計數,每計進行計數,每計200200次進行次進行累加器加累加器加1 1操作。操作。計數初值:計數初值:X=M-X=M-計數值計數值=2=28 8-200=56-200=56D=38HD=38H采用查詢方式,編程如下:采用查詢方式,編程如下: MOV TMODMOV TMOD,60H 60H ;設置;設置T1T1模式模式2 2計數功能計數功能 MOV TH1MOV TH1,38H 38H ;保存計數初值;保存計數初值 MOV TL1MOV TL1,38H 38H ;設置計數初值;設置計數初值 SETB TR1 SETB TR1 ;啟動計數;啟動計數DELDEL:JBC TF1JBC TF1

25、,LOOP LOOP ;查詢是否計數溢出;查詢是否計數溢出 AJMP DELAJMP DELLOOPLOOP:INC AINC A AJMP DEL AJMP DEL【例【例5-45-4】利用】利用T0T0的門控位的門控位GATEGATE,編程實現檢測外,編程實現檢測外部輸入脈沖的寬度。部輸入脈沖的寬度。解:外部脈沖由解:外部脈沖由INT0INT0(P3.2P3.2)輸入,其寬度為)輸入,其寬度為TPTP,如圖如圖5-85-8。T0T0工作于定時方式,模式工作于定時方式,模式1 1。 測試時,當測試時,當INT0=0INT0=0時,時,TR0=1TR0=1;當;當INT0=1INT0=1時,時

26、,啟動計數;當啟動計數;當INT0=0INT0=0時,停止計數。使時,停止計數。使TR0=0TR0=0,讀出讀出TH0TH0、TL0TL0的計數值,用計數值乘以定時脈的計數值,用計數值乘以定時脈沖周期即得被檢測正脈沖的寬度沖周期即得被檢測正脈沖的寬度TPTP。5.3.4 定時定時/ /計數器門控位計數器門控位GATEGATE的應用的應用 編程如下:編程如下: MOV TMODMOV TMOD,09H 09H ;設;設T0T0為模式為模式1 1,定時方式,定時方式, GATE=1GATE=1 MOV TL0 MOV TL0,00H 00H ;設置計數初值為;設置計數初值為0 0 MOV TH0M

27、OV TH0,00H 00H MOV R0 MOV R0,30H 30H ;地址指針送;地址指針送R0R0 JB INT0 JB INT0, ;等待;等待INT0INT0變低變低INT0INT0啟動啟動T0T0TPTPT0T0計時計時停止停止T0T0計時計時讀取讀取T0T0值值圖圖5-8 5-8 利用利用GATEGATE功能來檢測脈沖的寬度功能來檢測脈沖的寬度 SETB TR0 SETB TR0 ;準備啟動定時器;準備啟動定時器0 0 JNB INT0 JNB INT0, ;等待;等待INT0INT0變高變高 JB INT0JB INT0, ;變高,啟動計數,并等待;變高,啟動計數,并等待 I

28、NT0INT0再次變低再次變低 CLR TR0 CLR TR0 ;停止計數;停止計數 MOV MOV R0R0,TL0 TL0 ;讀取計數值;讀取計數值 INC R0INC R0 MOV MOV R0R0,TH0TH05.3.5 5.3.5 運行中讀定時運行中讀定時/ /計數器計數器讀定時讀定時/ /計數器方法:計數器方法: 先讀先讀THXTHX,后讀,后讀TLXTLX,再讀,再讀THXTHX,若兩次讀得的,若兩次讀得的THXTHX沒有變化,則讀的內容是正確的。若前后兩沒有變化,則讀的內容是正確的。若前后兩次讀得的次讀得的THXTHX有變化,則再重復讀得的內容就應有變化,則再重復讀得的內容就應

29、該是正確的了。該是正確的了??聪旅嬉欢纬绦颍嚎聪旅嬉欢纬绦颍篟DTIMERDTIME:MOV AMOV A,TH0 TH0 ;讀;讀TH0TH0 MOV R0 MOV R0,TL0 TL0 ;讀;讀TL0TL0 CJNE A CJNE A,TH0TH0,RDTIMERDTIME;比較兩次讀得的;比較兩次讀得的TH0TH0, 必要時重復上述過程必要時重復上述過程 MOV R1MOV R1,A A RET RET舉例:舉例:1 1、應用、應用T0T0產生產生1ms1ms的定時,并使的定時,并使P1.0P1.0輸出周期為輸出周期為2ms2ms的方波,設晶振為的方波,設晶振為6MHz6MHz。(應用模

30、式。(應用模式0 0)編程如下:編程如下: STARTSTART:MOV TL0MOV TL0,0CH 0CH ;初值寫入;初值寫入T0T0 MOV TH0 MOV TH0,0F0H0F0H SETB TR0 SETB TR0 LOOP LOOP:JBC TF0JBC TF0,PTF0PTF0 AJMP LOOP AJMP LOOP PTF0 PTF0:MOV TL0MOV TL0,0CH 0CH ;計數初值重裝;計數初值重裝 MOV TH0MOV TH0,0F0H0F0H CPL P1.0 CPL P1.0 AJMP LOOP AJMP LOOP2 2、應用、應用T0T0產生產生1ms1ms

31、的定時,并使的定時,并使P1.0P1.0輸出周期為輸出周期為2ms2ms的方波,設晶振為的方波,設晶振為6MHz6MHz。 (應用模式(應用模式1 1)編程如下:編程如下: STARTSTART:MOV TMODMOV TMOD,01H01H;置工作方式;置工作方式1 1 MOV TL0 MOV TL0,0CH 0CH ;初值寫入;初值寫入T0T0 MOV TH0 MOV TH0,0FEH0FEH SETB TR0 SETB TR0 ;允許計數;允許計數 LOOPLOOP:JBC TF0JBC TF0,PTF0 PTF0 ;溢出否?;溢出否? AJMP LOOPAJMP LOOP PTF0 PTF0:MOV TL0MOV TL0,0CH

溫馨提示

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

評論

0/150

提交評論