版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年头盔专用防雾膜项目投资价值分析报告
- 2024年焖烧锅项目可行性研究报告
- 2024至2030年中国燃气自动控制阀数据监测研究报告
- 2024年无纺硬棉项目可行性研究报告
- 2024至2030年中国机织簇绒地毯行业投资前景及策略咨询研究报告
- 2024至2030年中国PPA高耐温专用料数据监测研究报告
- 2024年中国美化梳饼市场调查研究报告
- 2023年汽车空气过滤器项目评价分析报告
- 2023年交流调频调压牵引装置项目评价分析报告
- 2024年记忆绵枕项目评估分析报告
- 新能源基础知识入门
- 2024年插花花艺师理论知识考试题库(含答案)
- 软硬件集成方案
- 自身免疫性脑炎护理
- 放射科院感管理制度
- 2024年基因编辑技术的伦理问题
- 材料力学课程导学与考研指导
- 腮腺及面神经解剖
- 统编本道德与法治小学四年级上册第五、第六单元集体备课(各一套)
- 生鲜食品配送部各项管理制度
- GB/T 43232-2023紧固件轴向应力超声测量方法
评论
0/150
提交评论