PIC定时器/计数器TMR

上传人:豆浆 文档编号:48313439 上传时间:2018-07-13 格式:PPT 页数:32 大小:581KB
返回 下载 相关 举报
PIC定时器/计数器TMR_第1页
第1页 / 共32页
PIC定时器/计数器TMR_第2页
第2页 / 共32页
PIC定时器/计数器TMR_第3页
第3页 / 共32页
PIC定时器/计数器TMR_第4页
第4页 / 共32页
PIC定时器/计数器TMR_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《PIC定时器/计数器TMR》由会员分享,可在线阅读,更多相关《PIC定时器/计数器TMR(32页珍藏版)》请在金锄头文库上搜索。

1、第九章 定时器计数器TMR1 前面介绍了定时器计数器TMR0的基本 概念和用途,下面介绍PIC单片机中另外一种定 时器计数器TMR1。 9.1 TMR1的特性 TMR1为16位宽,附带一个3位的分频器, 还自带一个低功耗低频的时基振荡器。TMR1的 主要用途:类似于TMR0,用于定时和计数;自带一个时基振荡器,可记录年、月、日、时 、分、秒,实现实时时钟RTC(real time clock);可以与CCP模块配合使用,实现输入捕捉或输出 比较功能。TMR1由二个8位寄存器TMR1H和TMR1L对 组成的16位定时器计数器,可以由软件读写 ,这二个寄存器都是和RAM统一编址的,地址分 别为0E

2、H和0FH 。TMR1H:TMR1L寄存器对,从0000H递增到 FFFFH(065535)之后再返回到0000H时,就会产 生溢出,并且将溢出中断标志位TMR1IF设置为1 。如果此时相关的中断使能位TMR1IE和GIE都 为1,就会引起CPU的中断响应。 TMR1的触发信号源可来自内部系统时钟、 外部触发信号或自带时基振荡器信号;因此即可 以工作于定时器模式,又可工作于计数器模式, 还可以用作实时时钟RTC模式;9.2 TMR1相关的寄存器 与TMR1有关的寄存器如下表所列。这些寄 存器中的前3个的功能及其作用,在“中断系统” 中已经介绍。在此先介绍T1CON 控制寄存器。TMRl控制寄存

3、器T1CONTICON只用到其低6位,最高2位未用。其 各位的含义如下: l T1CKPS1T1CKPS0:分频器分频比选择位, 如表3.2所列l T1OSCEN:TMR1自带振荡器使能位。1=允许TMR1振荡器起振; 0=禁止TMR1振荡器起振。 l l T1SYNCT1SYNC:TMR1TMR1外部输入时钟与系统时钟同外部输入时钟与系统时钟同 步控制位。该位只有在步控制位。该位只有在TMR1TMR1工作于计数器方工作于计数器方 式式(TMR1CS=1)(TMR1CS=1)才有效:才有效: 1=TMR1外部输入时钟与系统时钟不保持同步; 0=TMR1外部输入时钟与系统时钟保持同步;当TMR1

4、工作于定时器方式,该位不起作用 。 lTMR1CS:时钟源选择位。1=选择外部时钟源,即时钟信号来源于外 部引脚或者自带振荡器;0=选择内部时钟源lTMR1ON:TMR1使能控制位,这点不同于 TMR0。1=启用TMR1,使TMR1进入活动状态; 0=关闭TMR1,使TMR1退出活动状态。9.3 TMR1的电路结构 TMR1模块的内部结构如下图所示。核心部分由TMR1H:TMR1L构成;一个与门G1,对送入计数器的触发信号,起到 是否允许通行的控制作用。 一个信号复用器MUX1,允许触发信号来自两个 不同的路径。 同步控制逻辑,将经过外部引脚送入的触发信 号,与单片机内部的系统时钟进行同步。

5、3位宽的预分频器,允许选择四种不同的分频比 1:1、1:2、1:4或l:8。 在对寄存器对TMR1H:TMR1L进行写操作 时,可以使预分频器被清0。 另一个信号复用器MUX2,允许触发信号有两个不同的来源:一个是由内部系统时钟产生的指令周期;另一个是取自于外部引脚的触发信号或自带振荡器。一个施密特触发器G2,用于对来自外部引脚的触发信号或自带振荡器产生的时钟信号进行整形。一个由受控三态门G3构成的独立的低频低功耗晶体振荡器,用来为TMR1提供独立于系统时钟的时间基准信号,如图3.4所示。只有当使能端T1OSCEN为高电平时,振 荡器才能够工作;而当T1OSCEN为低电平时, 非门G3的输出端

6、呈现高阻状态,振荡器不能工 作,此时,工作于计数器方式的TMR1的触发信 号,从T1OSO端加入。9.4 TMR1的工作原理TMR1有定时器方式和计数器方式;计数器方式又分为同步计数器方式和异步计数器方 式。TMR1的工作信号共有4种获取方式:由内部系统时钟提供;从RC0T1OSOT1CKI口线输入; 从RC1T1OSICCP2口线输入;自带振荡器产生。lTMR1的工作方式由TMR1CS确定。当TMR1CS=0, TMR1工作于定时器方式,TMR1的16位计数器在每个指令周期到来时增 加;当TMR1CS=1,TMR1工作于计数器方式 ,TMR1的16位计数器在每个外部时钟输入的上升沿到来时增加

7、。 l一旦TMR1自带振荡器被使能(T1OSCEN=1), RC1T1OSICCP2和RC0T1OSOT1CKI 引脚就自动设为专用引脚,此时TRISC方向寄 存器bit1和bit0的值将失效。当对寄存器TMR1H或TMR1L进行赋值时 ,预分频器将会自动清0。9.4.1 禁止TMR1工作TMRl比TMR0多一种选择,即可以被关闭 。具体方法是,将TMRl使能位TMR1ON清0。 此时,与门G1的一只引脚被低电平封锁,因此使得累加计数器维持静止状态。等效电路如图 3.5所示。9.4.2 定时器工作方式当TMR1CS=0时,TMR1工作于定时器方 式,时钟来自内部fosc4指令周期。在此情况 下

8、,同步控制信号T1SYNC不起作用,因为, TMR1的输入信号与系统时钟总是同步的。其 等效电路如图3.6所示。这种模式常用来延时、 定时功能。9.4.3 计数器工作方式当TMRlCS=1,TMR1工作于计数器方式 ,时钟来源于外部引脚或自带振荡器。TMR1 累加计数器在触发信号的上升沿递增。TMR1在计数器方式时,存在输入触发信 号与系统时钟同步的问题。图3.8所示。 控制位T1SYNC的设定,既可以选择同步方式,也可以选择异步方式。工作于计数方式 时,TMRl的触发信号有三种获取方法:v第1种:当T1OSCEN=0时,外部触发信号从 T1OSOT1CKI引脚输入,如图3.9(a)所示; v

9、第2种,当T1OSCEN=1时,并且振荡器外部不 接石英晶体时,外部触发信号从引脚T1OSI输入 (如图3.9(b)所示;v第3种:当T1OSCEN=1,并且振荡器外部引脚 接有石英晶体时,TMR1是通过振荡器产生的时 钟脉冲上升沿实现增量的(如图3.9(c)所示。同步计数器工作方式当T1SYNC=0,TMR1工作在同步方式。 此时,外部输入信号要与系统时钟脉冲在相位 上进行同步。此时假如单片机进入了睡眠模式 ,即使有外部触发信号输入,TMR1也不会增 加,因为同步逻辑电路被关闭,如下图所示。 异步计数器工作方式当T1SYNC=1时,TMRl工作在异步方式。此时,外部输入信号不与系统时钟脉冲相

10、位进行同 步。此时若单片机处于睡眠模式时,计数器随着 外部触发信号所进行的增量操作不受影响,如图 3.11所示。 工作在异步计数器方式期间,对于TMR1寄 存器对的读取、写入操作应特别注意。 读取操作:当对寄存器对TMR1HTMR1L进行 读操作时,可以分两次进行。但是,在读取期间 存在TMR1的低字节向高字节产生进位的可能性 。此时TMR1H:TMR1L可能正巧发生从00FFH到 0100H或从FFFFH到0000H之类的递增。若TMR1H:TMR1L正好从00FFH到0100H递 增,先读TMR1H再读TMR1L,则会读到0000H 的错误结果;而先读TMR1L再读TMR1H,则会 读到0

11、1FFH的错误结果。同理若正巧发生TMR1H:TMR1L从FFFFH 到0000H的递增,无论是先读TMR1H再读 TMR1L,或先读TMR1L再读TMRlH,都可能会产生错误结果。也就是说,在分为两个字节 来读取TMR1时,可能会出现错误结果。下面是一段实用程序片段,可以避免在不断运行时读 取TMR1而发生错误。 BCF INTCON, GIE ;所有中断被禁止MOVF TMR1H, W ;读取高字节MOVWF TMPH ;暂存到TMPHMOVF TMR1L, W ;读取低字节MOVWF TMPL ;暂存到TMPLMOVF TMR1H, W ;读取高字节SUBWF TMPH, W ;用第2次

12、读取值减第1次读取值BTFSC STATUS, Z. ;结果为0否?GOTO CONTINUE ;是!无溢出,结果正确,结束读操作MOVF TMR1H, W ;否!重新读取 MOVWF TMPH ;暂存到TMPHMOVF TMR1L, W ;读取低字节MOVWF TMPL ;暂存到TMPLBSF INTCON, GIE ;放开全局中断屏蔽位CONTINUE ;继续执行其他程序 写入操作:当对TMR1进行写操作时,如果计数器 正在递增,可能会产生一个不确定值。因此,先 让计数器停止运行,再写入所希望的值。假如非要在TMR1不间断运行的情况下写入 ,那么,就应该首先清零TMR1L,以确保在它 向T

13、MR1H寄存器发生溢出进位之前,有足够 长的递增距离,尽量避免溢出进位。随即装载 TMR1H寄存器,然后装载TMR1L寄存器。推 荐程序段如下:BCF INTCON, GIE ;所有中断被禁止CLRF TMR1L ;清除低字节,确保不会发生向高字节的进位MOVLW HI_BYTE ;取高字节给定值MOVWF TMR1H, F ;装载高字节寄存器MOVLW LO_BYTE ;取低字节给定值MOVWF TMR1L, F ;装载低字节寄存器BSF INTCON, GIE ;放开全局中断屏蔽位CONTINUE ;继续执行其他程序9.5 定时器计数器TMR1的应用举例 q例1 蠕动灯l实现的功能把演示板

14、上的8只发光二极管D0D7,设 计为“进三步,退两步”的蠕动前进的方式依次发 光,即发光的规律是: D0D1D2D3D2D1D2D3D4D 3D2 D3D4D5+D4+.。并且在各个 状态之间切换时,插入一个l4s的延时。硬件电路规划:电路如图10.12所示。由RC振荡器为电路提 供系统时钟信号,其频率按4MHz计算。硬件电路规划:电路如图10.12所示。由RC振荡器为电路提供系统 时钟信号,其频率按4MHz计算。软件设计思路利用TMR1产生1/4s的延时。具体方法是,利用 中断方式和反复装载初始值的方式,将预分频器的分 频比设定为1:4。下面计算TMR1的16位寄存器的初值。 TMR1的初值

15、因为系统时钟为4MHZ,那么机器周期为1s。 延迟时间为14s=250,000s。 假设初值为X,则以下公式成立:4*(65536-X)*1 s = 250,000sX= 65536- (250,000/4)= 3,036=0BDCH T1CON的控制字要求:分频比设定为1:4,定时模式,先关闭TMR1, 则控制字为:0010 0000 = 20H。 程序流程图:主程序流程图和中断服务子程序流程图 ,分别如图3.13和图3.14所示。PCL EQU 02H ;程序计数器低字节寄存器地址 STATUS EQU 3H ;状态寄存器地址 Z EQU 2H ;状态寄存器中的0标志位的位地址 INTCON EQU 0BH ;中断控制

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号