定时器计数器tmr

上传人:san****019 文档编号:70799536 上传时间:2019-01-18 格式:PPT 页数:26 大小:412.81KB
返回 下载 相关 举报
定时器计数器tmr_第1页
第1页 / 共26页
定时器计数器tmr_第2页
第2页 / 共26页
定时器计数器tmr_第3页
第3页 / 共26页
定时器计数器tmr_第4页
第4页 / 共26页
定时器计数器tmr_第5页
第5页 / 共26页
点击查看更多>>
资源描述

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

1、第8章 定时器/计数器TMR0,在许多世界著名的半导体制造公司开发的型号繁多的单片机芯片内部,定时器/计数器模块是一种基本上普遍配置的常用外围设备模块,只是配备的数量和规格不同而已。其中,规格的不同指的是:宽度不同,是否附带预分频器和后分频器以及预分频器后分频器的分频比的不同,等等。,8.1 定时器/计数器模块的基本用途,在单品机芯片内部配置的各种外围设备模块中,定时器/计数器模块是一种应用比较灵活的外设模块。那么,定时器/计数器模块究竟有什么用途呢?经过初步分析和归纳,此类模块大致上可以适用于以下3类不同的应用场合:,(1)在一些单片机的应用项目中,又是要求单片机在其端口引脚上,向外部电路送

2、出一系列符合一定时序规范的方波信号。例如,空调机中的变频控制,VCD,光盘驱动器,照相机,打印机提示音的音调产生,PWM脉冲宽度调制信号的形成,等等。在对这些应用项目的单片机进行编程时,需要在程序的执行过程中,插入一定时长的延时。对此有两种方案可供选择,一直利用芯片内部现成的硬件资源可编程定时器,来精确控制输出实现预定的时间间隔;二是采用软件手段插入一段延时程序。关于软件手段延时,在“PIC汇编语言程序设计基础”章节中已经做过介绍,其缺点,传真机中不仅电动机的驱动,电器设备的是需要占用“机时”,也就是耗费CPU的“精力”。在此仅对第一种方法中用到的硬件资源进行讲解。,(2)在另外一些单片机的应

3、用项目中,经常要求单片机在其引脚上,检测外部电路送来的一系列方波信号的脉宽、周期或频率,以便单片机接收外部电路的输入信号或通信信号。例如,遥控电视机中的红外遥控信号的接收,速度里程表中的转速检测,超声波测距仪中发射波与反射波之间的时间间隔的精确测量,等等。这类应用程序的编写,会用定时器来对“视线未知”的时间间隔进行精确计时。,(3)还有一些单片机应用项目中,需要单片机对其端口引脚上输入的有外部事件产生的触发信号进行精确的计数,依据计数结果来控制完成相应的动作。例如,在饮料的生产和包装车间里,传送带上的易拉罐在移动时,可以借助于红外线透射或者反射方式,获得触发信号并且送入单片机的相应引脚,有单片

4、机内部的可编成计算器来对移过红外探头的易拉罐数量进行计数。每当计数器的累加值达到预设值时,就控制相应装置完成封箱操作。,8.2 PIC系列单片机定时器/ 计数器 TMR0模块的特性,Microchip公司产生的PIC系列单片机也不例外,各款产品内部全部配备有定时器/计数器模块,并且配备的数量也不尽相同。早期研制的PIC单片机产品系列,例如PIC12CXXX/CEXXX系列,PIC16C5X/5XX系列、PIC16C8X/F8X系列中的全部产品、PIC16C62X/CE62X系列中的部分产品,只配置了一个定时器/计数器模块。除了在最早的PIC16C5X系列弹片机中,把该模块叫做RTCC模块之外,

5、在其余所有PIC单片机中都把该模块叫做TMR0模块。近期新研制的PIC单片机产品系列中,大都配置了多个定时器/计数器模块,例如PIC17CXXX系列和PIC18CXXX系列都配置了4个定时器/计数器模块。,在本书中当作样板讲解的PIC16F87X系列单片机都配置了3个定时器/计数器模块,分别记为TMR0、TMR1、TMR2。需要事先声明的是, TMR0、TMR1、TMR2 3个定时器/计数器模块,不仅电路结构上均不相同,而且涉及的初中也各有所异,但是,三者之间也存在着许多的共同之处。具体的分析如下: 不同点有:TMR0为8位宽,有一个可选的预分频器,用于通用目的;TMR1为16位宽,附带一个可

6、编程的预分频器,还附带一个可选的低频时基振荡器,适合与CCP(捕捉/比较/脉宽调制)模块配合使用来实现输入捕捉或输出比较功能;TMR2为8位宽,同时附带一个可编程的预分频器和一个可编程的后分频器,还附带一个周期寄存器和比较器,适合与CCP模块配合使用来实现PWM脉冲宽度调制信号的产生。,相同点:它们的核心部分都是一个由时钟信号触发的按递增规律(即累加方式)工作的循环计数器;都是从预先设定的某一初始值(或0)开始记起,在累积到超过最大值(或者预先设定的某一终了值)时产生溢出,并且同时会建立一个相应的溢出标志(即中断标志位):对于它们的编程方法也大同小异。因此,我们打算首先从中选择一款具备通用性、

7、代表性和相对简单的定时器/计数器,也是各种档次、各款PIC单片机型号内部,普遍都配置了的定时器/计数器模块TMR0,作为本章讲解的模型和重点。至于其他2个定时器/计数器模块TMR1和TMR2,将在后面设专门章节另行讲解。这样安排的目的主要是,为了更好的适应初级读者,以循序渐进的方式接收和认识新技术新知识的需要,定时器/计数器TMR0具有以下特性: 是一个8位宽的由时钟信号上升沿触发的循环累加计数器; TMR0也是一个文件寄存器区域内统一编址的寄存器,核心地址为01H或101H; 用户用软件方式可直接读书或写入计数器的内容; 具有一个可选用的8位可编程预分频器; 用于累加计数的信号源可选择内部或

8、外部时钟信号源,也就是即可工作于定时模式,又可工作于计数器模式; 当时用外部触发信号作为时钟信号源时可由程序定义上升沿或下降沿触发有效; 据有溢出中断功能。,8.3 与定时器/计数器TMR0模块 有关的寄存器,现在让我们做一下总结归纳,在PIC16F87X单片机的RAM数据存储器区域,与定时器/计数器TMR0模块有关的特殊功能寄存器共有四个,分别是8位宽的累加计数寄存器TMR0、中断控制寄存器INTCON、选项寄存器OPTION和端口RA方向控制寄存器TRISA,如表8.1所示。,表8.1 与TMR0相关的寄存器,选项寄存器OPTION_REG,表8.2 选项寄存器OPTION_REG各位分布

9、,PS2PS):分频器分频比选择位。如表8.3所列。 PSA:分频器分配位 1=分频器分配给WDT 0=分频器分配给TMR0,表8.3 PS2PS0对应的分频比,T0SE:TMR0的时钟源触发边沿选择位。只有当TMR0工作于计数器模式时,该位才发挥作用。 1=外部时钟T0CK1下降沿触发TMR0递增; 0=外部时钟T0CK1上升沿触发TMR0递增。 T0CS:TMR0的时钟源选择位。 1=由T0CK1外部引脚输入的脉冲信号作为计数器TMR0时钟源; 0=由内部提供的指令周期信号作为定时器TMR0时钟源。 2. 中断控制寄存器INTCON(见表8.4),表8.4 中断控制寄存器INTCON各位分

10、布,中断控制寄存器也是一个可读/写的寄存器与TMR0有关的各位的含义如下: T0IF:TMR0溢出标志位(也就是溢出中断标志)。 1=TMR0发生溢出; 0=TMR0未发生溢出。 T0IE:TMR0溢出中断使能位。 1=TMR0允许溢出后产生中断; 0=TMR0屏蔽溢出后产生中断。 GIE:全局中断使能位。 1=允许CPU相应所有外围设备模块产生的中断请求; 0=允许CPU相应所有外围设备模块产生的中断请求。,3. 端口RA方向控制寄存器TRISA(见表8.5 ),表8.5 RA端口方向寄存器各位TRISA分布,TRISA4:与TMR0有关的只有一个位。由于TMR0模块的外部输入信号T0CK1

11、与端口引脚RA4是复合在同一条引脚上的,当TMR0工作于计数器模式时,要求该脚必须设定为输入方式,作为T0CK1信号专用输入引脚,即: 1=端口引脚RA4设定为输入,以便从该脚T0CK1送进信号,定时器/计数器模块的结构方框图如图8.1所示。,图8.1 TMR0+分频器+看门狗结构图,在剖析TMR0的电路是应遵循“化繁为简”的原则,不妨将整个电路功能简化为3个相对独立的主要组成部分:计数寄存器TMR0、分频器和看门狗定时器WDT。参见如图8.2所示的简化方框图。其中,看门狗定时器WDT在以后的章节中将作为专题介绍。,预分频器,TMR0,8,超时溢出,溢出中断,T0CS,数据总线,PSA,1,0

12、,0,1,0,0,1,1,0,只是因为看门狗在电路上与TMR0之间存在一定的关联,并且与TMR0共同分享同一个分频器,于是两者就有了同时出现在同一个章图上的理由。图8.3就是将看门狗定时器WDT剔除之后带有可编程预分频器的TMR0模块的方框图。,预分频器, 寄存器,与内部 时钟同步,溢出置位,数据总线, ,异或门,fosc/4,MUX,MUX,PSout,PSout,PSA,PS2PS0,T0CS,图8.3 带有可编程分频器TMR0的模块方框图,在图8.2的简化方框图中,3个组成部分之间借助于支由同一个PSA信号控制的切换开关MUX 、MUX 和MUX 相互联结在一起 MUX 、MUX 和MU

13、X 只切换开关还可以理解为一只带有组单刀双掷转换开关的继电器的组触点,如图8.4所示当PSA控制断送来逻辑低电平信号时,3开关靠自身弹力倒向静合触点“0”一端;而当PSA端送来逻辑1高电平信号时,继电器得电吸合,3组开关靠磁力转换到动合“1”一侧。,图8.4 带有3组单刀双掷转换开关的继电器,8.4.1 分频器,看门狗定时器WDT与TMR0共同分享同一个分频器,但两者不能同时使用。也就是说,在某一时刻分频器只能分配给两者当中的WDT或着TMR0。与TMR0配合使用时,它是以一个“预”分频器的骄色出现在TMR0的输入信号路径中的;而与WDT配合使用时,它是以一个“后”分频器的角色出现在WDT的输

14、出信号路径中的。分频器实际上也是一个8位累加计数器,不过它不能像TMR0那样通过内部数据总线用程序进行读、写操作,并且它只能配合TMR0或WDT起分频作用。由于它主要用来与TMR0配合工作,因此在厂家提供的产品手册中总是习惯的把它叫做“预分频器”,其实把它叫做“分频器”笔者认为更确切,并且也不会产生任何舞会和影响。分频器的电路结构示意图如图8.5所示,可以把它看作有2片CMOS通用集成电路构成,一片是12位二进制计数器CD4040(在此仅使用低8位),一片是8选1模拟开关CDCD4051(或者是一片8选1数据选择器74LS1151)。当开关切换到Q1点时,时钟信号 CLOCK经过1级二进制分频

15、后送到OUT端,分频为1:2 ;当开关切换到Q2点时,时钟信号 CLOCK经过2级二进制分频后送到OUT端,分频为1:4;当开关切换到Q3点时,时钟信号 CLOCK经过3级二进制分频后送到OUT端,分频为1:8;当开关切换到Q8点时,时钟信号CLOCK经过8级二进制分频后送到OUT,分频比为1:256。开关的切换位置取决于PS2PS0的值,也就是由PS2PS0设定分频比。,分频器的功能就是将进入TMR0的时钟信号或从WDT送出的时钟信号频率除以一个指定的倍数,这个倍数就是分频笔,又OPTION_REG寄存器中的PS2PS0决定。,几经将分频器配置给WDT还是TMR0,这就要有控制信号PSA的逻

16、辑电平来决定,当PSA为低电平时,分频器归TMR0所有,进入累加计数器TMR0的时钟信号,都要经过分频器;而当PSA为高电平时,分频器与TMR0个例,进入TMR0的时钟信号,不能再经过分频器。 应注意,当分频器分配给TMR0时,任何以TMR0为目标的写操作指令(如CLRF 1,MOVWF 1)都会同时将分频器清0。同理,当分频器分配给WDT时,一条清WDT的指令(CLRWDT)将会同时清0其分频器。这里指的是分频器清0,而分频比和分频对象并不会改变。,8.4.2 TMR0累加计数寄存器,顾名思义,定时器/计数器TMR0模块既可以作为定时器使用,也可以作为计数器使用,或者说,TMR0具有定时器和计数器两种工作模式。实际上,两种模式之间的主要差异就是送入累加计数寄存器TMR0的

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

当前位置:首页 > 高等教育 > 大学课件

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