《定时器计数器 优秀课件.ppt》由会员分享,可在线阅读,更多相关《定时器计数器 优秀课件.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、定时器计数器 第1页,本讲稿共26页8.1 定时器/计数器模块的基本用途 在单品机芯片内部配置的各种外围设备模块中,定时器/计数器模块是一种应用比较灵活的外设模块。那么,定时器/计数器模块究竟有什么用途呢?经过初步分析和归纳,此类模块大致上可以适用于以下3类不同的应用场合:第2页,本讲稿共26页 (1)在一些单片机的应用项目中,又是要求单片机在其端口引脚上,向外部电路送出一系列符合一定时序规范的方波信号。例如,空调机中的变频控制,VCD,光盘驱动器,照相机,打印机提示音的音调产生,PWM脉冲宽度调制信号的形成,等等。在对这些应用项目的单片机进行编程时,需要在程序的执行过程中,插入一定时长的延时
2、。对此有两种方案可供选择,一直利用芯片内部现成的硬件资源可编程定时器,来精确控制输出实现预定的时间间隔;二是采用软件手段插入一段延时程序。关于软件手段延时,在“PIC汇编语言程序设计基础”章节中已经做过介绍,其缺点,传真机中不仅电动机的驱动,电器设备的是需要占用“机时”,也就是耗费CPU的“精力”。在此仅对第一种方法中用到的硬件资源进行讲解。第3页,本讲稿共26页 (2)在另外一些单片机的应用项目中,经常要求单片机在其引脚上,检测外部电路送来的一系列方波信号的脉宽、周期或频率,以便单片机接收外部电路的输入信号或通信信号。例如,遥控电视机中的红外遥控信号的接收,速度里程表中的转速检测,超声波测距
3、仪中发射波与反射波之间的时间间隔的精确测量,等等。这类应用程序的编写,会用定时器来对“视线未知”的时间间隔进行精确计时。第4页,本讲稿共26页 (3)还有一些单片机应用项目中,需要单片机对其端口引脚上输入的有外部事件产生的触发信号进行精确的计数,依据计数结果来控制完成相应的动作。例如,在饮料的生产和包装车间里,传送带上的易拉罐在移动时,可以借助于红外线透射或者反射方式,获得触发信号并且送入单片机的相应引脚,有单片机内部的可编成计算器来对移过红外探头的易拉罐数量进行计数。每当计数器的累加值达到预设值时,就控制相应装置完成封箱操作。第5页,本讲稿共26页8.2 PIC系列单片机定时器/计数器 TM
4、R0模块的特性 Microchip公司产生的PIC系列单片机也不例外,各款产品内部全部配备有定时器/计数器模块,并且配备的数量也不尽相同。早期研制的PIC单片机产品系列,例如PIC12CXXX/CEXXX系列,PIC16C5X/5XX系列、PIC16C8X/F8X系列中的全部产品、PIC16C62X/CE62X系列中的部分产品,只配置了一个定时器/计数器模块。除了在最早的PIC16C5X系列弹片机中,把该模块叫做RTCC模块之外,在其余所有PIC单片机中都把该模块叫做TMR0模块。近期新研制的PIC单片机产品系列中,大都配置了多个定时器/计数器模块,例如PIC17CXXX系列和PIC18CXX
5、X系列都配置了4个定时器/计数器模块。第6页,本讲稿共26页 在本书中当作样板讲解的PIC16F87X系列单片机都配置了3个定时器/计数器模块,分别记为TMR0、TMR1、TMR2。需要事先声明的是,TMR0、TMR1、TMR2 3个定时器/计数器模块,不仅电路结构上均不相同,而且涉及的初中也各有所异,但是,三者之间也存在着许多的共同之处。具体的分析如下:不同点有:TMR0为8位宽,有一个可选的预分频器,用于通用目的;TMR1为16位宽,附带一个可编程的预分频器,还附带一个可选的低频时基振荡器,适合与CCP(捕捉/比较/脉宽调制)模块配合使用来实现输入捕捉或输出比较功能;TMR2为8位宽,同时
6、附带一个可编程的预分频器和一个可编程的后分频器,还附带一个周期寄存器和比较器,适合与CCP模块配合使用来实现PWM脉冲宽度调制信号的产生。第7页,本讲稿共26页 相同点:它们的核心部分都是一个由时钟信号触发的按递增规律(即累加方式)工作的循环计数器;都是从预先设定的某一初始值(或0)开始记起,在累积到超过最大值(或者预先设定的某一终了值)时产生溢出,并且同时会建立一个相应的溢出标志(即中断标志位):对于它们的编程方法也大同小异。因此,我们打算首先从中选择一款具备通用性、代表性和相对简单的定时器/计数器,也是各种档次、各款PIC单片机型号内部,普遍都配置了的定时器/计数器模块TMR0,作为本章讲
7、解的模型和重点。至于其他2个定时器/计数器模块TMR1和TMR2,将在后面设专门章节另行讲解。这样安排的目的主要是,为了更好的适应初级读者,以循序渐进的方式接收和认识新技术新知识的需要第8页,本讲稿共26页定时器/计数器TMR0具有以下特性:是一个8位宽的由时钟信号上升沿触发的循环累加计数器;TMR0也是一个文件寄存器区域内统一编址的寄存器,核心地址为01H或101H;用户用软件方式可直接读书或写入计数器的内容;具有一个可选用的8位可编程预分频器;用于累加计数的信号源可选择内部或外部时钟信号源,也就是即可工作于定时模式,又可工作于计数器模式;当时用外部触发信号作为时钟信号源时可由程序定义上升沿
8、或下降沿触发有效;据有溢出中断功能。第9页,本讲稿共26页 8.3 与定时器/计数器TMR0模块有关的寄存器现在让我们做一下总结归纳,在PIC16F87X单片机的RAM数据存储器区域,与定时器/计数器TMR0模块有关的特殊功能寄存器共有四个,分别是8位宽的累加计数寄存器TMR0、中断控制寄存器INTCON、选项寄存器OPTION和端口RA方向控制寄存器TRISA,如表8.1所示。第10页,本讲稿共26页表8.1 与TMR0相关的寄存器寄存器名称寄存器符号寄存器地址寄存器内容bit7bit6bit5bit4bit3bit2bit1bit0定时器/计数器TMR001H/101H8位累加计数寄存器选
9、项寄存器OPTION_REG81H/181HRBPU INTEDGT0CS T0SEPSAPS2PS1PS0中断控制寄存器INTCON0BH/8BH/10BH/18BHGIEPEIE T0IE INTE RBIE T0IF INTF RBIF A口方向寄存器 TRISA85H_TRISA5TRISA4TRISA3TRISA2TRISA1TRISA0第11页,本讲稿共26页1.选项寄存器OPTION_REGbit7bit6bit5bit4bit3bit3bit1bit0RBPU INTEDG T0CS T0SEPSAPS2PS1PS0表8.2 选项寄存器OPTION_REG各位分布PS2PS):
10、分频器分频比选择位。如表8.3所列。PSA:分频器分配位 1=分频器分配给WDT 0=分频器分配给TMR0第12页,本讲稿共26页 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对应的分频比第13页,本讲稿共26页 T0SE:TMR0的时钟源触发边沿选择位。只有当TMR0工作于计数器模式时,该位才发挥作用。1=外部时钟T0CK1下降沿触发TMR0递增;0=外部时钟T0
11、CK1上升沿触发TMR0递增。T0CS:TMR0的时钟源选择位。1=由T0CK1外部引脚输入的脉冲信号作为计数器TMR0时钟源;0=由内部提供的指令周期信号作为定时器TMR0时钟源。2.中断控制寄存器INTCON(见表8.4)bit7bit6bit5bit4bit3bit2bit1bit0GIEEEIET0IEINTERBIFT0IFINTFRBIF表8.4 中断控制寄存器INTCON各位分布第14页,本讲稿共26页 中断控制寄存器也是一个可读/写的寄存器与TMR0有关的各位的含义如下:T0IF:TMR0溢出标志位(也就是溢出中断标志)。1=TMR0发生溢出;0=TMR0未发生溢出。T0IE:
12、TMR0溢出中断使能位。1=TMR0允许溢出后产生中断;0=TMR0屏蔽溢出后产生中断。GIE:全局中断使能位。1=允许CPU相应所有外围设备模块产生的中断请求;0=允许CPU相应所有外围设备模块产生的中断请求。第15页,本讲稿共26页3.端口RA方向控制寄存器TRISA(见表8.5)表8.5 RA端口方向寄存器各位TRISA分布bit7bit6bit5bit4bit3bit2bit1bit0TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 TRISA4:与TMR0有关的只有一个位。由于TMR0模块的外部输入信号T0CK1与端口引脚RA4是复合在同一条引脚上的
13、,当TMR0工作于计数器模式时,要求该脚必须设定为输入方式,作为T0CK1信号专用输入引脚,即:1=端口引脚RA4设定为输入,以便从该脚T0CK1送进信号第16页,本讲稿共26页定时器/计数器模块的结构方框图如图8.1所示。十PSAPS2:PS0MUX(1)MUX(2)同步逻辑TMR0寄存器MUX(3)MUX(4)8位预分频器8选1选择开关看门狗定时器8数据总线设置T0IF标志位WDT超时信号输出T0SET0CSPSACLKOUT(fout/4)内部信号指令周期RA4/T0CK1外部引脚11110000WDT使能位PSA图8.1 TMR0+分频器+看门狗结构图第17页,本讲稿共26页 在剖析T
14、MR0的电路是应遵循“化繁为简”的原则,不妨将整个电路功能简化为3个相对独立的主要组成部分:计数寄存器TMR0、分频器和看门狗定时器WDT。参见如图8.2所示的简化方框图。其中,看门狗定时器WDT在以后的章节中将作为专题介绍。预分频器TMR0内部信号外部信号WDT8超时溢出溢出中断T0CS数据总线PSA100100110第18页,本讲稿共26页 只是因为看门狗在电路上与TMR0之间存在一定的关联,并且与TMR0共同分享同一个分频器,于是两者就有了同时出现在同一个章图上的理由。图8.3就是将看门狗定时器WDT剔除之后带有可编程预分频器的TMR0模块的方框图。预分频器寄存器与内部时钟同步溢出置位数
15、据总线异或门fosc/4MUXMUXPSoutPSoutPSAPS2PS0T0CS图8.3 带有可编程分频器TMR0的模块方框图第19页,本讲稿共26页 在图8.2的简化方框图中,3个组成部分之间借助于支由同一个PSA信号控制的切换开关MUX、MUX 和MUX 相互联结在一起 MUX、MUX 和MUX 只切换开关还可以理解为一只带有组单刀双掷转换开关的继电器的组触点,如图8.4所示当PSA控制断送来逻辑低电平信号时,3开关靠自身弹力倒向静合触点“0”一端;而当PSA端送来逻辑1高电平信号时,继电器得电吸合,3组开关靠磁力转换到动合“1”一侧。010011A1A2A3B1B2B3PSA图8.4
16、带有3组单刀双掷转换开关的继电器第20页,本讲稿共26页8.4.1 分频器 看门狗定时器WDT与TMR0共同分享同一个分频器,但两者不能同时使用。也就是说,在某一时刻分频器只能分配给两者当中的WDT或着TMR0。与TMR0配合使用时,它是以一个“预”分频器的骄色出现在TMR0的输入信号路径中的;而与WDT配合使用时,它是以一个“后”分频器的角色出现在WDT的输出信号路径中的。分频器实际上也是一个8位累加计数器,不过它不能像TMR0那样通过内部数据总线用程序进行读、写操作,并且它只能配合TMR0或WDT起分频作用。由于它主要用来与TMR0配合工作,因此在厂家提供的产品手册中总是习惯的把它叫做“预
17、分频器”,其实把它叫做“分频器”笔者认为更确切,并且也不会产生任何舞会和影响。分频器的电路结构示意图如图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点时,时钟
18、信号CLOCK经过8级二进制分频后送到OUT,分频比为1:256。开关的切换位置取决于PS2PS0的值,也就是由PS2PS0设定分频比。第21页,本讲稿共26页PS2 PS1 PS0OUTCLOCKQ7Q61Q4Q5Q3Q2Q1Q0图8.5 分频器等效电路分频器的功能就是将进入TMR0的时钟信号或从WDT送出的时钟信号频率除以一个指定的倍数,这个倍数就是分频笔,又OPTION_REG寄存器中的PS2PS0决定。第22页,本讲稿共26页 几经将分频器配置给WDT还是TMR0,这就要有控制信号PSA的逻辑电平来决定,当PSA为低电平时,分频器归TMR0所有,进入累加计数器TMR0的时钟信号,都要经
19、过分频器;而当PSA为高电平时,分频器与TMR0个例,进入TMR0的时钟信号,不能再经过分频器。应注意,当分频器分配给TMR0时,任何以TMR0为目标的写操作指令(如CLRF 1,MOVWF 1)都会同时将分频器清0。同理,当分频器分配给WDT时,一条清WDT的指令(CLRWDT)将会同时清0其分频器。这里指的是分频器清0,而分频比和分频对象并不会改变。第23页,本讲稿共26页8.4.2 TMR0累加计数寄存器 顾名思义,定时器/计数器TMR0模块既可以作为定时器使用,也可以作为计数器使用,或者说,TMR0具有定时器和计数器两种工作模式。实际上,两种模式之间的主要差异就是送入累加计数寄存器TM
20、R0的触发信号的来源不同而已,(这里所说的触发信号指的是数字电路学科中的时钟信号的概念,所以也可以叫做时钟信号)。TMR0的工作模式由T0CS位,即选项寄存器OPTION_REG位5决定,如表8.6所列。T0CS TMR0工作模式 触发信号的来源 0 定时器 计数器的触发信号取自内部指令周期 1 数器 计数器的触发信号取自外部引脚T0CK1点平的上升沿/下降沿表8.6 TMR0的工作模式第24页,本讲稿共26页 1.定时器模式 当T0CS(OPTION_REG)=0时,TMR0模块北设置为定时器模式,触发信号源取自于芯片内部的指令周期信号。也常被说成是,指令周期信号作为累加器的时钟信号源。在定
21、时器工作模式下,一旦往计数寄存器中写入初始值后,TMR0便重新启动累加计数。在没有使用分频器的情况下,TMR0会在每个指令周期信号(等于晶体振荡器产生的主时钟周期的4倍)到来时自动加1。在配置了分频器的情况下,TMR0会在每次收到由分频器指令周期信号分频一个固定倍数后产生的信号时自动加1。如果TMR0在累加计数的过程中,CPU执行一条往TMR0中写入数据的指令,则累加计数器的加1操作将被推迟个指令周期,重新开始技术。这2个指令周期的偏差在用户编写时间精度要求较高的程序是应引起注意,可以通过在每次写入TMR0时给一个调整值的方法来解决。第25页,本讲稿共26页 2.计数器模式 当T0CS(OPT
22、ION_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操作第26页,本讲稿共26页