PIC10定时器/计数器TMR1

上传人:仙*** 文档编号:244203131 上传时间:2024-10-03 格式:PPT 页数:32 大小:581KB
返回 下载 相关 举报
PIC10定时器/计数器TMR1_第1页
第1页 / 共32页
PIC10定时器/计数器TMR1_第2页
第2页 / 共32页
PIC10定时器/计数器TMR1_第3页
第3页 / 共32页
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第九章 定时器计数器,TMR1,前面介绍了定时器计数器,TMR0,的基本概念和用途,下面介绍,PIC,单片机中另外一种定时器计数器,TMR1,。,9.1 TMR1,的特性,TMR1,为,16,位宽,附带一个,3,位的分频器,还自带一个低功耗低频的时基振荡器。,TMR1,的主要用途:,类似于,TMR0,,用于定时和计数;,自带一个时基振荡器,可记录年、月、日、时、分、秒,实现实时时钟,RTC(real time clock);,可以与,CCP,模块配合使用,实现输入捕捉或输出比较功能。,TMR1,由二个,8,位寄存器,TMR1H,和,TMR1L,对组成的,16,位定时器计数器,,可以由软件读写,这二个寄存器都是和,RAM,统一编址的,地址分别为,0EH,和,0FH,。,TMR1H:TMR1L,寄存器对,从,0000H,递增到,FFFFH(0,65535),之后再返回到,0000H,时,就会产生溢出,并且将溢出中断标志位,TMR1IF,设置为,1,。如果此时相关的中断使能位,TMR1IE,和,GIE,都为,1,,就会引起,CPU,的中断响应。,TMR1,的触发信号源可来自,内部系统时钟、外部触发信号或自带时基振荡器信号,;因此即可以工作于定时器模式,又可工作于计数器模式,还可以用作实时时钟,RTC,模式;,9.2 TMR1,相关的寄存器,与,TMR1,有关的寄存器如下表所列。这些寄存器中的前,3,个的功能及其作用,在“中断系统”中已经介绍。在此先介绍,T1CON,控制寄存器。,TMRl,控制寄存器,T1CON,TICON,只用到其低,6,位,最高,2,位未用。其各位的含义如下:,T1CKPS1,T1CKPS0,:,分频器分频比选择位,如表,3.2,所列,T1OSCEN,:,TMR1,自带振荡器使能位。,1=,允许,TMR1,振荡器起振;,0=,禁止,TMR1,振荡器起振。,T1SYNC,:,TMR1,外部输入时钟与系统时钟同步控制位。该位只有在,TMR1,工作于计数器方式,(TMR1CS=1),才有效:,1=TMR1,外部输入时钟与系统时钟不保持同步;,0=TMR1,外部输入时钟与系统时钟保持同步;,当,TMR1,工作于定时器方式,该位不起作用。,TMR1CS,:,时钟源选择位。,1=,选择外部时钟源,即时钟信号来源于外部引脚或者自带振荡器;,0=,选择内部时钟源,TMR1ON,:,TMR1,使能控制位,这点不同于,TMR0,。,1=,启用,TMR1,,使,TMR1,进入活动状态;,0=,关闭,TMR1,,使,TMR1,退出活动状态。,9.3 TMR1,的电路结构,TMR1,模块的内部结构如下图所示。,核心部分由,TMR1H:TMR1L,构成;,一个与门,G1,,,对送入计数器的触发信号,起到是否允许通行的控制作用。,一个信号复用器,MUX1,,,允许触发信号来自两个不同的路径。,同步控制逻辑,将经过外部引脚送入的触发信号,与单片机内部的系统时钟进行同步。,3,位宽的预分频器,允许选择四种不同的分频比,1:1,、,1:2,、,1:4,或,l:8,。,在对寄存器对,TMR1H:TMR1L,进行写操作时,可以使预分频器被清,0,。,另一个信号复用器,MUX2,,允许触发信号有两个不同的来源:一个是由内部系统时钟产生的指令周期;另一个是取自于外部引脚的触发信号或自带振荡器。,一个施密特触发器,G2,,用于对来自外部引脚的触发信号或自带振荡器产生的时钟信号进行整形。,一个由受控三态门,G3,构成的独立的低频低功耗晶体振荡器,用来为,TMR1,提供独立于系统时钟的时间基准信号,如图,3.4,所示。,只有当使能端,T1OSCEN,为高电平时,振荡器才能够工作;而当,T1OSCEN,为低电平时,非门,G3,的输出端呈现高阻状态,振荡器不能工作,此时,工作于计数器方式的,TMR1,的触发信号,从,T1OSO,端加入。,9.4 TMR1,的工作原理,TMR1,有定时器方式和计数器方式;计数器方式又分为同步计数器方式和异步计数器方式。,TMR1,的工作信号共有,4,种获取方式:,由内部系统时钟提供;,从,RC0,T1OSO,T1CKI,口线输入;,从,RC1,T1OSI,CCP2,口线输入;,自带振荡器产生。,TMR1,的工作方式由,TMR1CS,确定。,当,TMR1CS=0,,,TMR1,工作于定时器方式,,TMR1,的,16,位计数器在每个指令周期到来时增加;当,TMR1CS=1,,,TMR1,工作于计数器方式,,TMR1,的,16,位计数器在每个外部时钟输入的上升沿到来时增加。,一旦,TMR1,自带振荡器被使能,(T1OSCEN=1),,,RC1,T1OSI,CCP2,和,RC0,T1OSO,T1CKI,引脚就自动设为专用引脚,此时,TRISC,方向寄存器,bit1,和,bit0,的值将失效。,当对寄存器,TMR1H,或,TMR1L,进行赋值时,预分频器将会自动清,0,。,9.4.1,禁止,TMR1,工作,TMRl,比,TMR0,多一种选择,即可以被关闭。具体方法是,将,TMRl,使能位,TMR1ON,清,0,。此时,与门,G1,的一只引脚被低电平封锁,因此使得累加计数器维持静止状态。等效电路如图,3.5,所示。,9.4.2,定时器工作方式,当,TMR1CS=0,时,,TMR1,工作于定时器方式,时钟来自内部,fosc,4,指令周期。在此情况下,同步控制信号,T1SYNC,不起作用,因为,,TMR1,的输入信号与系统时钟总是同步的。其等效电路如图,3.6,所示。这种模式常用来延时、定时功能。,9.4.3,计数器工作方式,当,TMRlCS,=1,,,TMR1,工作于计数器方式,时钟来源于外部引脚或自带振荡器。,TMR1,累加计数器在触发信号的上升沿递增。,TMR1,在计数器方式时,存在输入触发信号与系统时钟同步的问题。图,3.8,所示。,控制位,T1SYNC,的设定,既可以选择同步方式,也可以选择异步方式。工作于计数方式时,,TMRl,的触发信号有三种获取方法:,第,1,种:当,T1OSCEN=0,时,外部触发信号从,T1OSO,T1CKI,引脚输入,如图,3.9(a),所示;,第,2,种,当,T1OSCEN=1,时,并且振荡器外部不接石英晶体时,外部触发信号从引脚,T1OSI,输入,(,如图,3.9(b),所示;,第,3,种:当,T1OSCEN=1,,并且振荡器外部引脚接有石英晶体时,,TMR1,是通过振荡器产生的时钟脉冲上升沿实现增量的,(,如图,3.9(c),所示。,同步计数器工作方式,当,T1SYNC,=0,,,TMR1,工作在同步方式。此时,外部输入信号要与系统时钟脉冲在相位上进行同步。此时假如单片机进入了睡眠模式,即使有外部触发信号输入,,TMR1,也不会增加,因为同步逻辑电路被关闭,如下图所示。,异步计数器工作方式,当,T1SYNC,=1,时,,TMRl,工作在异步方式。此时,外部输入信号不与系统时钟脉冲相位进行同步。此时若单片机处于睡眠模式时,计数器随着外部触发信号所进行的增量操作不受影响,如图,3.11,所示。,工作在异步计数器方式期间,对于,TMR1,寄存器对的读取、写入操作应特别注意。,读取操作:,当对寄存器对,TMR1HTMR1L,进行读操作时,可以分两次进行。但是,在读取期间存在,TMR1,的低字节向高字节产生进位的可能性。,此时,TMR1H:TMR1L,可能正巧发生从,00FFH,到,0100H,或从,FFFFH,到,0000H,之类的递增。,若,TMR1H:TMR1L,正好从,00FFH,到,0100H,递增,先读,TMR1H,再读,TMR1L,,,则会读到,0000H,的错误结果;而先读,TMR1L,再读,TMR1H,,,则会读到,01FFH,的错误结果。,同理若正巧发生,TMR1H:TMR1L,从,FFFFH,到,0000H,的递增,无论是先读,TMR1H,再读,TMR1L,,或先读,TMR1L,再读,TMRlH,,都可能会产生错误结果。也就是说,在分为两个字节来读取,TMR1,时,可能会出现错误结果。下面是一段实用程序片段,可以避免在不断运行时读取,TMR1,而发生错误。,BCF INTCON,GIE ;,所有中断被禁止,MOVF TMR1H,W ;,读取高字节,MOVWF TMPH ;,暂存到,TMPH,MOVF TMR1L,W ;,读取低字节,MOVWF TMPL ;,暂存到,TMPL,MOVF TMR1H,W ;,读取高字节,SUBWF TMPH,W ;,用第,2,次读取值减第,1,次读取值,BTFSC STATUS,Z.;,结果为,0,否?,GOTO CONTINUE ;,是,!,无溢出,结果正确,结束读操作,MOVF TMR1H,W ;,否,!,重新读取,MOVWF TMPH ;,暂存到,TMPH,MOVF TMR1L,W ;,读取低字节,MOVWF TMPL ;,暂存到,TMPL,BSF INTCON,GIE ;,放开全局中断屏蔽位,CONTINUE ;,继续执行其他程序,写入操作:,当对,TMR1,进行写操作时,如果计数器正在递增,可能会产生一个不确定值。因此,先让计数器停止运行,再写入所希望的值。,假如非要在,TMR1,不间断运行的情况下写入,那么,就应该首先清零,TMR1L,,以确保在它向,TMR1H,寄存器发生溢出进位之前,有足够长的递增距离,尽量避免溢出进位。随即装载,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,的应用举例,例,1,蠕动灯,实现的功能,把演示板上的,8,只发光二极管,D0,D7,,,设计为“进三步,退两步”的蠕动前进的方式依次发光,即发光的规律是:,D0D1D2D3D2D1D2D3D4D3D2 D3D4D5+D4+.,。,并且在各个状态之间切换时,插入一个,l,4s,的延时。,硬件电路规划:,电路如图,10.12,所示。由,RC,振荡器为电路提供系统时钟信号,其频率按,4MHz,计算。,硬件电路规划:,电路如图,10.12,所示。由,RC,振荡器为电路提供系统时钟信号,其频率按,4MHz,计算。,软件设计思路,利用,TMR1,产生,1/4s,的延时。具体方法是,利用中断方式和反复装载初始值的方式,将预分频器的分频比设定为,1:4,。下面计算,TMR1,的,16,位寄存器的初值。,TMR1,的初值,因为系统时钟为,4MHZ,,,那么机器周期为,1s,。,延迟时间为,1,4s=250,000s,。,假设初值为,X,,,则以下公式成立:,4*(65536-X)*1 s=250,000s,X=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 ;,中断控制寄存器地址,PORTC EQU 7H ;,端口,C,的数据寄存器地址,TRISC EQU 87H ;,端口,C,的方向控制寄存器地址,COUNT EQU
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!