收藏 分销(赏)

定时器计数器TMR0.ppt

上传人:xrp****65 文档编号:13738698 上传时间:2026-04-07 格式:PPT 页数:26 大小:217.50KB 下载积分:10 金币
下载 相关 举报
定时器计数器TMR0.ppt_第1页
第1页 / 共26页
定时器计数器TMR0.ppt_第2页
第2页 / 共26页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,8,章 定时器,/,计数器,TMR0,在许多世界著名的半导体制造公司开发的型号繁多的单片机芯片内部,定时器,/,计数器模块是一种基本上普遍配置的常用外围设备模块,只是配备的数量和规格不同而已。其中,规格的不同指的是:宽度不同,是否附带预分频器和后分频器以及预分频器后分频器的分频比的不同,等等。,8.1,定时器,/,计数器模块的基本用途,在单品机芯片内部配置的各种外围设备模块中,定时器,/,计数器模块是一种应用比较灵活的外设模块。那么,定时器,/,计数器模块究竟有什么用途呢?经过初步分析和归纳,此类模块大致上可以适用于以下,3,类不同的应用场合:,(,1,)在一些单片机的应用项目中,又是要求单片机在其端口引脚上,向外部电路送出一系列符合一定时序规范的方波信号。例如,空调机中的变频控制,,VCD,,,光盘驱动器,照相机,打印机提示音的音调产生,,PWM,脉冲宽度调制信号的形成,等等。在对这些应用项目的单片机进行编程时,需要在程序的执行过程中,插入一定时长的延时。对此有两种方案可供选择,一直利用芯片内部现成的硬件资源,可编程定时器,来精确控制输出实现预定的时间间隔;二是采用软件手段,插入一段延时程序。关于软件手段延时,在“,PIC,汇编语言程序设计基础”章节中已经做过介绍,其缺点,传真机中不仅电动机的驱动,电器设备的是需要占用“机时”,也就是耗费,CPU,的“精力”。在此仅对第一种方法中用到的硬件资源进行讲解。,(,2,)在另外一些单片机的应用项目中,经常要求单片机在其引脚上,检测外部电路送来的一系列方波信号的脉宽、周期或频率,以便单片机接收外部电路的输入信号或通信信号。例如,遥控电视机中的红外遥控信号的接收,速度里程表中的转速检测,超声波测距仪中发射波与反射波之间的时间间隔的精确测量,等等。这类应用程序的编写,会用定时器来对“视线未知”的时间间隔进行精确计时。,(,3,)还有一些单片机应用项目中,需要单片机对其端口引脚上输入的有外部事件产生的触发信号进行精确的计数,依据计数结果来控制完成相应的动作。例如,在饮料的生产和包装车间里,传送带上的易拉罐在移动时,可以借助于红外线透射或者反射方式,获得触发信号并且送入单片机的相应引脚,有单片机内部的可编成计算器来对移过红外探头的易拉罐数量进行计数。每当计数器的累加值达到预设值时,就控制相应装置完成封箱操作。,8.2 PIC,系列单片机定时器,/,计数器,TMR0,模块的特性,Microchip,公司产生的,PIC,系列单片机也不例外,各款产品内部全部配备有定时器,/,计数器模块,并且配备的数量也不尽相同。早期研制的,PIC,单片机产品系列,例如,PIC12CXXX/CEXXX,系列,,PIC16C5X/5XX,系列、,PIC16C8X/F8X,系列中的全部产品、,PIC16C62X/CE62X,系列中的部分产品,只配置了一个定时器,/,计数器模块。除了在最早的,PIC16C5X,系列弹片机中,把该模块叫做,RTCC,模块之外,在其余所有,PIC,单片机中都把该模块叫做,TMR0,模块。近期新研制的,PIC,单片机产品系列中,大都配置了多个定时器,/,计数器模块,例如,PIC17CXXX,系列和,PIC18CXXX,系列都配置了,4,个定时器,/,计数器模块。,在本书中当作样板讲解的,PIC16F87X,系列单片机都配置了,3,个定时器,/,计数器模块,分别记,为,TMR0,、,TMR1,、,TMR2,。,需要事先声明的是,,TMR0,、,TMR1,、,TMR2 3,个定时器,/,计数器模块,不仅电路结构上均不相同,而且涉及的初中也各有所异,但是,三者之间也存在着许多的共同之处。具体的分析如下:,不同点有:,TMR0,为,8,位宽,有一个可选的预分频器,用于通用目的;,TMR1,为,16,位宽,附带一个可编程的预分频器,还附带一个可选的低频时基振荡器,适合与,CCP,(,捕捉,/,比较,/,脉宽调制)模块配合使用来实现输入捕捉或输出比较功能;,TMR2,为,8,位宽,同时附带一个可编程的预分频器和一个可编程的后分频器,还附带一个周期寄存器和比较器,适合与,CCP,模块配合使用来实现,PWM,脉冲宽度调制信号的产生。,相同点:它们的核心部分都是一个由时钟信号触发的按递增规律(即累加方式)工作的循环计数器;都是从预先设定的某一初始值(或,0,)开始记起,在累积到超过最大值(或者预先设定的某一终了值)时产生溢出,并且同时会建立一个相应的溢出标志(即中断标志位):对于它们的编程方法也大同小异。因此,我们打算首先从中选择一款具备通用性、代表性和相对简单的定时器,/,计数器,也是各种档次、各款,PIC,单片机型号内部,普遍都配置了的定时器,/,计数器模块,TMR0,,,作为本章讲解的模型和重点。至于其他,2,个定时器,/,计数器模块,TMR1,和,TMR2,,,将在后面设专门章节另行讲解。这样安排的目的主要是,为了更好的适应初级读者,以循序渐进的方式接收和认识新技术新知识的需要,定时器,/,计数器,TMR0,具有以下特性:,是一个,8,位宽的由时钟信号上升沿触发的循环累加计数器;,TMR0,也是一个文件寄存器区域内统一编址的寄存器,核心地址为,01H,或,101H,;,用户用软件方式可直接读书或写入计数器的内容;,具有一个可选用的,8,位可编程预分频器;,用于累加计数的信号源可选择内部或外部时钟信号源,也就是即可工作于定时模式,又可工作于计数器模式;,当时用外部触发信号作为时钟信号源时可由程序定义上升沿或下降沿触发有效;,据有溢出中断功能。,8.3,与定时器,/,计数器,TMR0,模块有关的寄存器,现在让我们做一下总结归纳,在,PIC16F87X,单片机的,RAM,数据存储器区域,与定时器,/,计数器,TMR0,模块有关的特殊功能寄存器共有四个,分别是,8,位宽的累加计数寄存器,TMR0,、,中断控制寄存器,INTCON,、,选项寄存器,OPTION,和端口,RA,方向控制寄存器,TRISA,,,如表,8.1,所示。,表,8.1,与,TMR0,相关的寄存器,寄存器名称,寄存器符号,寄存器地址,寄存器内容,bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0,定时器/计数器,TMR0,01,H/101H,8位累加计数寄存器,选项寄存器,OPTION_REG,81,H/181H,RBPU,INTEDG,T0CS,T0SE,PSA,PS2,PS1,PS0,中断控制寄存器,INTCON,0BH/8BH/10BH/18BH,GIE,PEIE,T0IE,INTE,RBIE,T0IF,INTF,RBIF,A,口方向寄存器,TRISA,85,H,_,_,TRISA5,TRISA4,TRISA3,TRISA2,TRISA1,TRISA0,选项寄存器,OPTION_REG,bit7,bit6,bit5,bit4,bit3,bit3,bit1,bit0,RBPU,INTEDG,T0CS,T0SE,PSA,PS2,PS1,PS0,表8.2 选项寄存器,OPTION_REG,各位分布,PS2PS):,分频器分频比选择位。如表8.3所列。,PSA:,分频器分配位,1=分频器分配给,WDT,0=,分频器分配给,TMR0,PS2PS0 TMR0,比率,WDT,比率,000 1:2 1:1,001 1:4 1:2,010 1:8 1:4,011 1:16 1:8,100 1:32 1:16,101 1:64 1:32,110 1:128 1:64,111 1:256 1:128,表8.3,PS2PS0,对应的分频比,T0SE,:,TMR0,的时钟源触发边沿选择位。只有当,TMR0,工作于计数器模式时,该位才发挥作用。,1=,外部时钟,T0CK1,下降沿触发,TMR0,递增,;,0=,外部时钟,T0CK1,上升沿触发,TMR0,递增。,T0CS,:,TMR0,的时钟源选择位。,1=,由,T0CK1,外部引脚输入的脉冲信号作为计数器,TMR0,时钟源;,0=,由内部提供的指令周期信号作为定时器,TMR0,时钟源。,2.,中断控制寄存器,INTCON(,见表,8.4,),bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0,GIE,EEIE,T0IE,INTE,RBIF,T0IF,INTF,RBIF,表8.4 中断控制寄存器,INTCON,各位分布,中断控制寄存器也是一个可读,/,写的寄存器与,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,分布,bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0,TRISA5,TRISA4,TRISA3,TRISA2,TRISA1,TRISA0,TRISA4:,与,TMR0,有关的只有一个位。由于,TMR0,模块的外部输入信号,T0CK1,与端口引脚,RA4,是复合在同一条引脚上的,当,TMR0,工作于计数器模式时,要求该脚必须设定为输入方式,作为,T0CK1,信号专用输入引脚,即:,1=端口引脚,RA4,设定为输入,以便从该脚,T0CK1,送进信号,定时器,/,计数器模块的结构方框图如图,8.1,所示。,十,PSA,PS2:PS0,M,U,X,(1),M,U,X,(2),同步,逻辑,TMR0,寄存器,M,U,X,(3),M,U,X,(4),8,位预分频器,8,选1选择开关,看门狗,定时器,8,数据总线,设置,T0IF,标志位,WDT,超时信号,输出,T0SE,T0CS,PSA,CLKOUT(,f,out,/4),内部信号,指令周期,RA4/T0CK1,外部,引脚,1,1,1,1,0,0,0,0,WDT,使能位,PSA,图8.1,TMR0+,分频器+看门狗结构图,在剖析,TMR0,的电路是应遵循“化繁为简”的原则,不妨将整个电路功能简化为,3,个相对独立的主要组成部分:计数寄存器,TMR0,、,分频器和看门狗定时器,WDT,。,参见如图,8.2,所示的简化方框图。其中,看门狗定时器,WDT,在以后的章节中将作为专题介绍。,预分频器,TMR0,内部,信号,外部,信号,WDT,8,超时溢出,溢出中断,T0CS,数据总线,PSA,1,0,0,1,0,0,1,1,0,只是因为看门狗在电路上与,TMR0,之间存在一定的关联,并且与,TMR0,共同分享同一个分频器,于是两者就有了同时出现在同一个章图上的理由。图,8.3,就是将看门狗定时器,WDT,剔除之后带有可编程预分频器的,TMR0,模块的方框图。,预分频器,寄存器,与内部,时钟同步,溢出置位,数据总线,异或门,f,osc,/4,MUX,MUX,PSout,PSout,PSA,PS2PS0,T0CS,图8.3 带有可编程分频器,TMR0,的模块方框图,在图,8.2,的简化方框图中,,3,个组成部分之间借助于支由同一个,PSA,信号控制的切换开关,MUX,、,MUX,和,MUX,相互联结在一起,MUX,、,MUX,和,MUX,只切换开关还可以理解为一只带有组单刀双掷转换开关的继电器的组触点,如图,8.4,所示当,PSA,控制断送来逻辑低电平信号时,,3,开关靠自身弹力倒向静合触点“,0”,一端;而当,PSA,端送来逻辑,1,高电平信号时,继电器得电吸合,,3,组开关靠磁力转换到动合“,1”,一侧。,0,1,0,0,1,1,A1,A2,A3,B1,B2,B3,PSA,图8.4 带有3组单刀双掷转换开关的继电器,8.4.1,分频器,看门狗定时器,WDT,与,TMR0,共同分享同一个分频器,但两者不能同时使用。也就是说,在某一时刻分频器只能分配给两者当中的,WDT,或着,TMR0,。与,TMR0,配合使用时,它是以一个“预”分频器的骄色出现在,TMR0,的输入信号路径中的;而与,WDT,配合使用时,它是以一个“后”分频器的角色出现在,WDT,的输出信号路径中的。分频器实际上也是一个,8,位累加计数器,不过它不能像,TMR0,那样通过内部数据总线用程序进行读、写操作,并且它只能配合,TMR0,或,WDT,起分频作用。由于它主要用来与,TMR0,配合工作,因此在厂家提供的产品手册中总是习惯的把它叫做“预分频器”,其实把它叫做“分频器”笔者认为更确切,并且也不会产生任何舞会和影响。分频器的电路结构示意图如图,8.5,所示,可以把它看作有,2,片,CMOS,通用集成电路构成,一片是,12,位二进制计数器,CD4040,(,在此仅使用低,8,位),一片是,8,选,1,模拟开关,CDCD4051,(,或者是一片,8,选,1,数据选择器,74LS1151,)。,当开关切换到,Q1,点时,时钟信号,CLOCK,经过,1,级二进制分频后送到,OUT,端,分频为,1:2,;当开关切换到,Q2,点时,时钟信号,CLOCK,经过,2,级二进制分频后送到,OUT,端,分频为,1:4,;当开关切换到,Q3,点时,时钟信号,CLOCK,经过,3,级二进制分频后送到,OUT,端,分频为,1:8,;,;当开关切换到,Q8,点时,时钟信号,CLOCK,经过,8,级二进制分频后送到,OUT,,,分频比为,1:256,。开关的切换位置取决于,PS2PS0,的值,也就是由,PS2PS0,设定分频比。,PS2 PS1 PS0,OUT,CLOCK,Q7,Q61,Q4,Q5,Q3,Q2,Q1,Q0,图,8.5 分频器等效电路,分频器的功能就是将进入,TMR0,的时钟信号或从,WDT,送出的时钟信号频率除以一个指定的倍数,这个倍数就是分频笔,又,OPTION_REG,寄存器中的,PS2PS0,决定。,几经将分频器配置给,WDT,还是,TMR0,,,这就要有控制信号,PSA,的逻辑电平来决定,当,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,的触发信号的来源不同而已,(这里所说的触发信号指的是数字电路学科中的时钟信号的概念,所以也可以叫做时钟信号)。,TMR0,的工作模式由,T0CS,位,即选项寄存器,OPTION_REG,位,5,决定,如表,8.6,所列。,T0CS TMR0,工作模式 触发信号的来源,0 定时器 计数器的触发信号取自内部指令周期,1 数器 计数器的触发信号取自外部引脚,T0CK1,点平的上升沿/下降沿,表,8.6,TMR0,的工作模式,1.,定时器模式,当,T0CS(OPTION_REG)=0,时,,TMR0,模块北设置为定时器模式,触发信号源取自于芯片内部的指令周期信号。也常被说成是,指令周期信号作为累加器的时钟信号源。在定时器工作模式下,一旦往计数寄存器中写入初始值后,,TMR0,便重新启动累加计数。在没有使用分频器的情况下,,TMR0,会在每个指令周期信号,(,等于晶体振荡器产生的主时钟周期的,4,倍,),到来时自动加,1,。在配置了分频器的情况下,,TMR0,会在每次收到由分频器指令周期信号分频一个固定倍数后产生的信号时自动加,1,。如果,TMR0,在累加计数的过程中,,CPU,执行一条往,TMR0,中写入数据的指令,则累加计数器的加,1,操作将被推迟个指令周期,重新开始技术。这,2,个指令周期的偏差在用户编写时间精度要求较高的程序是应引起注意,可以通过在每次写入,TMR0,时给一个调整值的方法来解决。,2.,计数器模式,当,T0CS(OPTION_REG)=1,时,,TMR0,模块被 设置为计数器模式,触发信号源取自于芯片外部引脚,RA4/T0CK1,上的输入信号。也常被说成,外部输入信号作为累加计数器的时钟信号源。当工作在计数器模式时,,T0CS(OPTION_REG),位决定外部时钟信号的触发边沿;,T0CS=1,,,下降沿触发;,T0CS=0,,,上升沿触发。这是因为控制信号和引脚信号成逻辑异或关系,即经过一个异或门之后形成触发信号,如图,8.1,所示,,1,与,1,异或后得,0,,相当于输入信号多经过一级非门;,0,与,1,异或得,1,,相当于输入信号被直接送入。当,TMR0,工作于计数器模式下,一旦往计数寄存器中写入初始值后,,MTR0,便立即开始新一轮的累加计数。在没有使用分频器的情况下,,TMR0,会在每个,T0CS,信号的上升沿或下降沿到来时自动加,1,。在此模式下,外部随机送入的触发脉冲信号和内部的工作时钟之间存在一个同步的问题。也就是说,并不是外部触发信号的跳变沿一送入,,TMR0,就立即进行加,1,操作,而是要经过一个同步逻辑(见图,8.1,),该处罚信号与系统时钟进行同步之后,方能进入累加计数器,TMR0,,,引发一次加,1,操作,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服