第六章_定時-計數器_第1頁
第六章_定時-計數器_第2頁
第六章_定時-計數器_第3頁
第六章_定時-計數器_第4頁
第六章_定時-計數器_第5頁
已閱讀5頁,還剩32頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第第6章章 定時器定時器/計數器計數器內容提要:內容提要:5.1 5.1 定時器定時器/ /計數器功能計數器功能 5.2 5.2 定時器和計數器硬件結構定時器和計數器硬件結構 5.3 5.3 定時器定時器/ /計數器工作方式計數器工作方式 5.4 5.4 定時器定時器/ /計數器編程計數器編程 5.1 5.1 定時定時/ /計數器功能計數器功能5.1 5.1 定時定時/ /計數器功能計數器功能 5.4.1 5.4.1 定時器功能定時器功能起定時延時作用起定時延時作用和和在規定的引腳上在規定的引腳上 輸出一定寬度的方波信號。輸出一定寬度的方波信號。 所謂定時功能就是通過來自單片機內部的時鐘脈沖所

2、謂定時功能就是通過來自單片機內部的時鐘脈沖作計數脈沖,使計數器計數,即每個機器周期計數器加作計數脈沖,使計數器計數,即每個機器周期計數器加1 1,計數值達到予置值后,定時計數值達到予置值后,定時/ /計數模塊產生溢出。計數模塊產生溢出。5.1 5.1 定時定時/ /計數器功能計數器功能5.1 5.1 定時定時/ /計數器功能計數器功能 5.4.2 計數器功能計數器功能 所謂計數是指對外部事件進行計數。外部事件的發所謂計數是指對外部事件進行計數。外部事件的發生以輸入脈沖表示,因此計數功能的實質就是對外來脈生以輸入脈沖表示,因此計數功能的實質就是對外來脈沖進行計數。沖進行計數。5.2 5.2 定時

3、和計數器硬件結構定時和計數器硬件結構 PIC16F877PIC16F877單片機配置了單片機配置了3 3個定時器個定時器/ /計數器模塊,分別為計數器模塊,分別為TMR0TMR0、TMR1TMR1和和TMR2TMR2。 共同點:共同點:它們的核心部分都是一個由時鐘信號觸發,按遞增它們的核心部分都是一個由時鐘信號觸發,按遞增方式累加工作的循環計數器;從預先設定的某一初始值開始累方式累加工作的循環計數器;從預先設定的某一初始值開始累計,在累計到計數器產生溢出,并同時建立一個相應的溢出中計,在累計到計數器產生溢出,并同時建立一個相應的溢出中斷標志。斷標志。 三者的不同點:三者的不同點: TMR0TM

4、R0為為8 8位寬位寬,有一個可選的預分頻器,用于通用目的,可用,有一個可選的預分頻器,用于通用目的,可用于于定時和計數定時和計數; TMR1TMR1為為1616位寬位寬,附帶一個可編程的預分頻器和一個可選的低,附帶一個可編程的預分頻器和一個可選的低頻時基振蕩器,適合與頻時基振蕩器,適合與CCPCCP(捕捉(捕捉/ /比較脈寬調制)模塊比較脈寬調制)模塊配合使用來實現輸入捕捉或輸出比較功能,也可用于定配合使用來實現輸入捕捉或輸出比較功能,也可用于定時和計數;時和計數; TMR2TMR2為為8 8位寬位寬,附帶一個配合使用來實現,附帶一個配合使用來實現PWMPWM脈沖寬度調制信脈沖寬度調制信號的

5、產生,只能用于定時。號的產生,只能用于定時。5.2.15.2.1定時器定時器/ /計數器計數器TMR0TMR0的硬件結構的硬件結構 * *TMR0TMR0可以用于定時控制、延時、對外部事件進行計可以用于定時控制、延時、對外部事件進行計 數和檢測等場合。數和檢測等場合。 * *TMR0TMR0可以使用內部系統時鐘,也可以使用外部始終。可以使用內部系統時鐘,也可以使用外部始終。 * *TMR0TMR0用于內部定時或對外計數時都不占用用于內部定時或對外計數時都不占用CPUCPU時間。時間。1.1.定時器定時器/ /計數器計數器TMR0TMR0具有以下特點:具有以下特點:(1 1)TMR0TMR0是一

6、個是一個8 8位寬的由時鐘信號上升沿觸發的循環位寬的由時鐘信號上升沿觸發的循環累加計數寄存器。累加計數寄存器。(2 2)有一個專用的外部觸發信號輸入端)有一個專用的外部觸發信號輸入端 ( (T0CKI-RA4T0CKI-RA4)。)。(3 3)TMR0TMR0也是一個在文件寄存器區域內統一編也是一個在文件寄存器區域內統一編址址的寄的寄 存器,地址為存器,地址為01H01H或或101H101H,用戶用軟件方式可直接,用戶用軟件方式可直接讀讀/ /寫計數器的內容。寫計數器的內容。(4 4)具有一個軟件可編程的)具有一個軟件可編程的8 8位位預分頻器預分頻器。(5 5)當使用內部觸發信號,即指令周期

7、作為時鐘信號)當使用內部觸發信號,即指令周期作為時鐘信號源時,模塊源時,模塊TMR0TMR0工作于定時方式,觸發方式為固工作于定時方式,觸發方式為固定上升沿觸發有效。在計數器溢出時,相應的溢定上升沿觸發有效。在計數器溢出時,相應的溢出中斷標志出中斷標志T0IFT0IF自動置位,并可產生溢出中斷。自動置位,并可產生溢出中斷。(6 6)當外部時鐘信號源時,模塊)當外部時鐘信號源時,模塊TMR0TMR0工作于計數方工作于計數方式,觸發方式可由程序設置位上升沿觸發或下降式,觸發方式可由程序設置位上升沿觸發或下降 沿觸發有效。在計數器溢出時,也可產生溢出中沿觸發有效。在計數器溢出時,也可產生溢出中斷。斷

8、。2 2與定時器與定時器/ /計數器計數器TMR0TMR0模塊相關的寄存器模塊相關的寄存器 (1 1)選項寄存器)選項寄存器 OPTION_REGOPTION_REG (1)(1)是作為定時器還是作為計數器是作為定時器還是作為計數器 (2)(2)決定分頻器的分頻系數決定分頻器的分頻系數 (3)(3)時鐘是上升沿時鐘是上升沿/ /下降沿觸發下降沿觸發(2 2)中斷控制寄存器)中斷控制寄存器 INTCONINTCON (1)(1)中斷總控制中斷總控制-允許允許/ /禁止禁止 (2)(2)各類中斷的控制各類中斷的控制 (3)(3)各類中斷的標志各類中斷的標志(3 3)RARA口方向寄存器口方向寄存器

9、 TRISATRISA 當當TMR0TMR0工作于計數器時工作于計數器時,RA4,RA4必須設為輸入必須設為輸入, ,以便從該腳輸以便從該腳輸 入時鐘脈沖信號。入時鐘脈沖信號。(4 4)定時器)定時器/ /計數器計數器 TMR0TMR0 8 8位累加計數寄存器位累加計數寄存器與計數和定時無關與計數和定時無關3 定時器定時器/計數器計數器TMR0模塊的電路結構和工作原理模塊的電路結構和工作原理 4.分頻器和控制邏輯電路 分頻器實際上也是一個8位累加計數器,它只能配合TMR0或WDT輸出的時鐘由PS2PS0設定分頻比,這個分頻比由OPTION_REG寄存器中的PS2PS0決定。5.TMR0累加計數

10、寄存器 TMR0有定時器和計數器兩種工作模式。這兩種模式之間的差異是觸發信號的來源不同。TMR0的工作模式由T0CS位(選項寄存器OPTION_REG)決定表表53 TMR0的工作模式的工作模式T0CSTMR0工作模式工作模式觸發信號的來源觸發信號的來源0定時器定時器計數器的觸發信號取自內部指令周期計數器的觸發信號取自內部指令周期1計數器計數器計數器的觸發信號取自外部引腳計數器的觸發信號取自外部引腳T0CKI電電平的上升沿平的上升沿/下降沿下降沿TMR0 定時時間的計算公式:定時時間的計算公式: t= P (28 X) T X= 28 t/(TxP) t:設定的定時時間:設定的定時時間uS P

11、:分頻器的分頻比:分頻器的分頻比-2256 取值為取值為2、4、8、16、32、64、128、256。 X:TMR0的計數初值的計數初值-0255 T:指令周期:指令周期uS定時器最短的定時時間定時器最短的定時時間:t=2x(256-255)x1uS=2uS定時器最長的定時時間定時器最長的定時時間:t=256x(256-0)x1uS=65536uS 在使用在使用TMR0做定時器時,可以用做定時器時,可以用查詢查詢和和中斷中斷的方法獲得定時時間。的方法獲得定時時間。1、查詢方法:、查詢方法: 在將初值寫入在將初值寫入TMR0時,立即查詢時,立即查詢T0IF是是否等于否等于1,如果,如果T0IF=

12、1,表示時間已到,若,表示時間已到,若T0IF=0,表示時間未到,繼續等候。,表示時間未到,繼續等候。2、中斷方法:、中斷方法: 設置中斷服務子程序,每當設置中斷服務子程序,每當TMR0溢出時,溢出時,進入中斷服務程序,得到一個準確的定時時間。進入中斷服務程序,得到一個準確的定時時間。TMR0的定時程序舉例:的定時程序舉例:用用TMR0產生產生10毫秒的定時時間,在毫秒的定時時間,在RC0輸出一個輸出一個10毫秒的方波。毫秒的方波。一、用查詢方法編寫程序,步驟如下:一、用查詢方法編寫程序,步驟如下: (1) 求出求出10毫秒定時時間對應的毫秒定時時間對應的TRM0的計數初值:的計數初值: X=

13、 28 t/(TxP) =256-10000/(1x64) =256-156 =100(64H) (2) 根據題目的要求,對根據題目的要求,對OPTION_REG配置配置 T0CS=0; /時鐘源為內部指令周期時鐘源為內部指令周期 PSA=0; /分頻器分配給分頻器分配給TMR0 PS2=1; /TMR0的分頻比為的分頻比為1:64 PS1=0; PS0=1; GIE=0; /禁止產生中斷禁止產生中斷 /OPTION=0 x05; (3) 將將(X=100)寫入寫入TMR0計數寄存器計數寄存器 TMR0=100; (4) 等待等待T0IF溢出,溢出時,定時時間已到。溢出,溢出時,定時時間已到。

14、 while(!T0IF);實際程序入下:實際程序入下:#include void init(); /I/O口初始化函數口初始化函數void tmint(); /定時器初始化函數定時器初始化函數void main() init(); tmint(); while(1) if(T0IF) T0IF=0; TMR0=100; RC0=!RC0; / I/O口初始化函數口初始化函數void init() TRISC=0X00; /定時初始化(定時初始化(OPTION_REG)void tmint() T0CS=0; /時鐘源為內部指令周期時鐘源為內部指令周期 PSA=0; /分頻器分配給分頻器分配給

15、TMR0 PS2=1; /TMR0的分頻比為的分頻比為1:64 PS1=0; PS0=1; GIE=0; /禁止產生中斷禁止產生中斷 T0IF=0; /清除定時器清除定時器0中斷標志中斷標志 TMR0=0X64; /預置預置TMR0初值初值 #include void init(); /I/O口初始化函數口初始化函數void tmint(); /定時器初始化函數定時器初始化函數void interrupt dealtime();void main() init(); tmint(); while(1) ; / I/O口初始化函數口初始化函數void init() TRISC=0X00; /定時

16、中斷初始化定時中斷初始化void tmint() OPTION=0 x05; /對對OPTION進行配置進行配置 GIE=1; /允許允許產生中斷產生中斷 T0IE=1; /定時器定時器T0允許允許產生中斷產生中斷 T0IF=0; /清楚定時器清楚定時器0中斷標志中斷標志 TMR0=0X64; /預置初值預置初值 /中斷服務子程序中斷服務子程序void interrupt dealtime() /每中斷一次的時間為每中斷一次的時間為10毫秒毫秒 T0IF=0; TMR0=0X64; RC0=!RC0; 5.2.2定時器定時器/計數器計數器TMR1的硬件結構的硬件結構 定時器定時器/計數器計數器

17、TMR1不僅可作通用的定時器不僅可作通用的定時器和計數器;而且利用內置的低頻時基振蕩器,還和計數器;而且利用內置的低頻時基振蕩器,還可實現實時時鐘可實現實時時鐘RTC功能;通過功能;通過TMR1與與CCP模塊配合使用,定時器模塊配合使用,定時器/計數器計數器TMR1又可實現又可實現輸入捕捉和輸出比較功能。輸入捕捉和輸出比較功能。 定時器定時器/計數器計數器TMR1是一個是一個16位的可讀可位的可讀可寫的計數寄存器,由高低兩字節組成(寫的計數寄存器,由高低兩字節組成(TMR1H和和TMR1L)16位寄存器從位寄存器從0000H到到FFFFH加加1計數,然后回到計數,然后回到0000H。在從在從F

18、FFFH到到0000H的過程中,置位中斷標志位的過程中,置位中斷標志位TMR1IF。定時器定時器/計數器計數器TMR1還帶有一個還帶有一個3位的可編程位的可編程預分頻器和一個內置的低功耗低頻時基振蕩器。預分頻器和一個內置的低功耗低頻時基振蕩器。 5.2.25.2.2定時器定時器/ /計數器計數器TMR1TMR1的硬件結構的硬件結構1 1定時器定時器/ /計數器計數器TMR1TMR1模塊具有的特點模塊具有的特點: :(1 1)一個)一個1616位的由時鐘信號上升沿觸發的累加計數位的由時鐘信號上升沿觸發的累加計數寄存器對寄存器對TMR1HTMR1H:TMR1LTMR1L;(2 2)TMR1HTMR

19、1H和和TMR1LTMR1L是在是在RAMRAM中統一編址的寄存器對,中統一編址的寄存器對, 地址為地址為0EH0EH和和0FH0FH,可用軟件方式讀,可用軟件方式讀/ /寫寫TMR1TMR1寄存寄存器對的內容;器對的內容;(3 3)一個可選用的)一個可選用的3 3位可編程的預分頻器位可編程的預分頻器;(4 4)累加計數的信號源可選擇內部系統時鐘、)累加計數的信號源可選擇內部系統時鐘、外部觸外部觸 發信號或自帶時基振蕩器信號;發信號或自帶時基振蕩器信號;(5 5)既可工作于)既可工作于定時器模式定時器模式,又可工作于,又可工作于計數器模計數器模式式,還可用作,還可用作實時時鐘實時時鐘(RTC)

20、(RTC)功能功能;(6 6)在計數器溢出時,相應的溢出中斷標志自動置)在計數器溢出時,相應的溢出中斷標志自動置位,并可產生溢出中斷。位,并可產生溢出中斷。5.2.2定時器定時器/計數器計數器TMR1的硬件結構的硬件結構2. 與定時器與定時器/計數器計數器TMR1模塊相關的寄存器模塊相關的寄存器 (1) PIE1外設中斷使能寄存器外設中斷使能寄存器在第在第6章介紹章介紹 (2) PIR1外設中斷標志寄存器外設中斷標志寄存器在第在第6章介紹章介紹 (3) INTCON中斷控制寄存器中斷控制寄存器 各中斷的使能及中斷標志各中斷的使能及中斷標志 (4) T1CONTMR1控制寄存器控制寄存器 決定決

21、定TMR1的分頻比、的分頻比、TMR1振蕩器的使能、內外時鐘、振蕩器的使能、內外時鐘、 TMR1的關閉與打開等。的關閉與打開等。 (5) TMR1LTMR1計數寄存器低字節計數寄存器低字節 (6) TMR1HTMR1計數寄存器高字節計數寄存器高字節 3. T1CON寄存器各數據位的含義和功能寄存器各數據位的含義和功能4. TMR1 定時時間的計算公式:定時時間的計算公式: t= P (216 X) T X= 216 t/(TxP) t:設定的定時時間:設定的定時時間uS P:分頻器的分頻比:分頻器的分頻比-18 取值為取值為1、2、4、8 X:TMR1H和和TMR1L的計數初值的計數初值-06

22、5535 T:指令周期:指令周期uS定時器最短的定時時間定時器最短的定時時間:t=1x(65536-65535)x1uS=1uS定時器最長的定時時間定時器最長的定時時間:t=8x(65536-0)x1uS=524288uS5. TMR1的定時程序舉例:的定時程序舉例:用用TMR1產生產生10毫秒的定時時間,步驟如下:毫秒的定時時間,步驟如下: (1) 求出求出10毫秒定時時間對應的計數初值毫秒定時時間對應的計數初值 X= 216 t/(TxP) =65536-10000/(1x8) =65536-1250 =64286(FB1EH) (2) 根據題目的要求,對根據題目的要求,對T1CON配置配

23、置 (3) 將將(X=FB1E)分別寫入分別寫入TMR1H和和TMR1L計數寄存器計數寄存器 (4) 將將T1OSCEN位置位置1,啟動啟動TMR1開始定時開始定時 (4) 等待等待PIR1的的TMR1IF位為位為1,為,為1時,定時時間已到時,定時時間已到TMR1的定時程序舉例:的定時程序舉例:LIST P=16F877A;列表偽指令列表偽指令INCLUDE P16F877A.INC;把包含文件含入源程序把包含文件含入源程序 _CONFIG 3F39H;設置配置位中振蕩方式為設置配置位中振蕩方式為XT, 其它全部禁止或關閉其它全部禁止或關閉;*COUNTEQU20H ORG 0 x000;主

24、程序開始地址主程序開始地址 GOTOMAIN;跳轉到主程序跳轉到主程序 ORG0005H ;主程序開始地址為主程序開始地址為0005HMAIN MOVLW0F0H ;或者或者30H MOVWFT1CON;設定定時器工作方式,分頻比為設定定時器工作方式,分頻比為1:8;*; 定時定時0.5秒秒; X=65536-t/(TxP)=65536-500000/(1x8)=3036=0BDCH; MOVLW0BH MOVWFTMR1H;設定設定TMR1高位初值高位初值 MOVLW0DCH ; MOVWFTMR1L ;設定設定TMR1低位初值低位初值 ;* BSFT1CON,TMR1ON ;啟動定時器啟動

25、定時器TMR1LOOP1 BTFSS PIR1,TMR1IF ;是否溢出?是否溢出? GOTOLOOP1 ;沒溢出沒溢出,繼續等待繼續等待BCFPIR1,TMR1IF ;已溢出已溢出,清清TMR1溢出標志溢出標志;* GOTO $ ;程序在原地踏步程序在原地踏步 END ;源程序結束源程序結束5.3.2 5.3.2 計數器工作方式計數器工作方式1.1.定時器定時器/ /計數器計數器TMR0TMR0模塊模塊的的計數器模式計數器模式1 1)當)當T0CS(OPTION_REG)=1T0CS(OPTION_REG)=1時時,TMR0,TMR0被被 設為計數器模式設為計數器模式; ;2 2)觸發信號從

26、片外引腳的)觸發信號從片外引腳的RA4/T0CKIRA4/T0CKI 輸入輸入 3 3)T0SE=1,T0SE=1,下降沿觸發下降沿觸發, T0SE=0, T0SE=0,上升沿觸發上升沿觸發 4 4)當計數寄存器)當計數寄存器TMR0TMR0寫入初值時寫入初值時, ,計數器立即開始計計數器立即開始計 數數. . 5 5)如果分頻比為)如果分頻比為1:11:1時時, ,每一個外部脈沖輸入每一個外部脈沖輸入,TMR0,TMR0加加1,1, 如果分頻比為如果分頻比為1:21:2時時, ,每兩個外部脈沖輸入每兩個外部脈沖輸入,TMR0,TMR0加加 1,1,6 6)TMR0TMR0的計數公式的計數公式

27、: : 計數值計數值= =分頻比分頻比x(2x(28 8- -計數初值計數初值) ) 分頻比取值為分頻比取值為:2:2、4 4、8 8、16162562567 7)TMR0TMR0的最大計數范圍的最大計數范圍: : 計數值計數值=256x(2=256x(28 8-0)-0) =256x256 =256x256 =65535 =655352.2.定時器定時器/ /計數器計數器TMR1TMR1模塊模塊的的計數器模式計數器模式1 1)當)當TMR1CS=1TMR1CS=1時時,TMR1,TMR1工作于計數器工作方式,時鐘工作于計數器工作方式,時鐘 來自外部引腳或自帶的低頻振蕩器。來自外部引腳或自帶的

28、低頻振蕩器。2 2)當)當TMR1TMR1設定為計數方式時,在其開始自增前,必須設定為計數方式時,在其開始自增前,必須 有一個下降沿。當有一個下降沿。當TMR1TMR1隨著外部觸發信號遞增時,隨著外部觸發信號遞增時, 發生在上升沿。如圖所示:發生在上升沿。如圖所示:3 3)TMR1TMR1的計數公式的計數公式: : 計數值計數值= =分頻比分頻比x(2x(21616- -計數初值計數初值) ) 分頻比取值為分頻比取值為:1:1、2 2、4 4、8 84 4)TMR0TMR0的最大計數范圍的最大計數范圍: : 計數值計數值=8x(2=8x(21616-0)-0) =8x65535 =8x65535 =524280 =5242805 5)計數器)計數器TMR1TMR1的應用舉例的應用舉例頻率計頻率計本章小節1 1、熟悉、熟悉PIC16F87XPIC16F87X單片機的定時單片機的定時/ /計數器功能計數器功能PIC16F87XPIC16F87X單片機有單片機有3 3個定時器個定時器/ /計數器模塊,它們計數器模塊,它們的共同點是其核心部分都是一個由時鐘信號觸發,按的共同點是其核心部分都是一個由時鐘信號觸發,按遞增方式累加工作的循環計數器;從預先設定的某一遞增方式累加工作的循環計數器;從預先設定的某一初始值開始累計,在累計到計數器產生溢出,并同時初始值開始累計,在累計到計數器產生溢

溫馨提示

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

評論

0/150

提交評論