第6章定时器计数器_第1页
第6章定时器计数器_第2页
第6章定时器计数器_第3页
第6章定时器计数器_第4页
第6章定时器计数器_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章 定时器计数器,定时器/计数器模块是大部分单片机都内置的一项重要功能 定时器/计数器的正常工作一般表现为计数累计功能,通常是由时钟脉冲来驱动。 当对内部标准时钟累计计数时,用作定时器。 当对外部脉冲累计计数时,用作计数器。,主要特点:,一般适用于以下3种不同的应用场合:,发出定时信息,或从单片机I/O引脚上向外部电路输出一系列符合一定时规范的方波信号。 从单片机I/O引脚上,检测外部电路输入的一系列方波信号的脉宽、周期或频率,以便单片机接收外部电路的输入信号或通信信号。 单片机对其端口引脚上输入的由外部事件产生的触发信号进行准确地计数,依据计数结果来控制完成相应的动作。,二进制异步加法计

2、数器,由于D端接Q非,所以触发器每次跳变都反向相翻转,分频器电路,分频器电路,分频器电路,CP,FQ1=1/2 FCP,FQ2=1/4 FCP,FQ3=1/8 FCP,跳变触发计数,TMR0模块简化原理图(掌握),+,RA4/T0CK1,看门狗用,1,2,3,4,5,6,累加计数寄存器,定时器/计数器TMR0模块的电路结构和工作原理,需要对3个开关进行选择设置,计数的内外时钟选择 预分频器的选择 预分频器的预分频参数选择,预分频参数选择,2 与定时器计数器TMR0模块相关的寄存器,定时器/计数器 TMR0 选项寄存器OPTION_REG 中断控制寄存器INTCON 端口RA方向控制寄存器TRI

3、SA,3个开关设置,TMR0具有以下硬件结构特点总结 (1)TMR0是一个8位宽的由时钟信号上升沿触发的循环累加计数寄存器。 (2)有一个专用的外部触发信号输入端(T0CKI)。 (3) TMR0也是一个在文件寄存器区域内统一编址的寄存器,地址为01H或101H,用户用软件方式可直接读/写计数器的内容。 (4) 具有一个软件可编程的8位预分频器。 (5) 当使用内部触发信号,即指令周期作为时钟信号源时,模块TMR0工作于定时方式,触发方式为固定上升沿触发有效。在计数器溢出时,相应的溢出中断标志T01F自动置位,并可产生溢出中断。 (6)当使用外部时钟信号源时,模块TMR0工作于计数方式,触发方

4、式可由程序设置位上升沿触发或下降触发有效。在计数器溢出时,也可产生溢出中断。,TMR0模块工作过程,8位TMR0累加计数器工作总是在送人初始值(称为时间常数)以后,推迟2个指令周期,在初始值的基础上对脉冲跳变触发产生计数,直到计数寄存器TMR0计满到FFH再加1,TMR0恢复到0,产生溢出和溢出标志T0IF。如果是中断使能T0IE开启的情况下,T0IF就能引发中断。 TMR0恢复到0后, 将继续自动对跳变触发产生计数加1, TMR0的计数始终不会停,称为循环计数。,分析TMR0两种工作模式的特点,设置定时模式特点: 计数触发信号来源于系统时钟,即为内部的指令周期信号。定时的长短主要取决于3种因

5、素。 一是初始时间常数,其数值设置越小,定时越长,最大定时为256个触发脉冲周期。 二是系统振荡频率,PIC单片机时钟振荡频率的范围为020 MHz,频率越高,计数信号为指令周期就越短,相同条件下的定时时间就越短。假定时钟振荡频率为4 MHz,指令周期为1s,那么如果不考虑其他因素,理论上TMR0固有定时时间最短为1s,而最长为256s。 三是预分频器,是对指令周期信号进行按比例分频,可在一定范围内大幅调整定时的长短。,设置计数模式特点: 计数模式,计数触发信号来源于IO端口RA T0CKI信号。 只有处于计数模式下,跳变沿选择TOSE位才有效 对T0CKI信号,既可以是标准的脉冲信号(周期脉

6、冲信号),也可以是无规则的时序脉冲信号。因此,计数和定时不同,TMR0计数的长短一般不能确定定时的长短。 了解即可: 计数脉冲和指令周期的同步:单片机将对TOCKI引脚在1个指令周期内做2次等间隔的判读来判断是否有计数有效沿出现,如果一次为高另一次为低,则表明出现了一个脉冲沿跳变,如果此跳变符合T0SE的设置,TMR0的值就加一。所以,外部输入信号必须保证2次跳变之间的间隔至少维持2个振荡周期的宽度(1个指令周期=4个振荡周期),再另外加多20ns的内部电路延时。,当计数寄存器写入初始值时,TMR0将被推迟2个指令周期,便开始或重新启动累加计数。当精度要求高时,可以通过定时参数补偿2个指令周期

7、。精度要求不高时,可以不考虑。 若没有使用分频器,TMR0会在每个指令周期信号(时钟周期的4倍)到来时自动加1。 若使用分频器,TMR0会在指令周期信号分频某个倍数后产生的信号时自动加1,这时TMR0最长固有定时时间将达到65535us。,定时时间计算,定时时间计算,假设:定时时间为t,标准时钟周期为T, 实际累加记录的脉冲数 N,有关系式: t = T * N , N = t / T 解决问题: 控制计数器,当定时时间到时,发出通知; 怎样发出通知?通过计数器的什么? 怎样把N写入计数器?,定时时间计算:(计数初值应保证对剩余空间计数=定时需要记录的脉冲数 N),对8位定时器TMR0,不使用

8、分频器时,定时时间的计算公式为: (28 计数初值-2) 指令周期, 使用分频器时,定时时间的计算公式为: 分频比(28 计数初值) 指令周期 分频比取值为2、4、8256。,初始值计算,如设定定时时间为t,指令周期为T,分频比为P,不使用分频器时,计数寄存器写入的初始值X为: X=28 t /T + 2 使用分频器时,那么计数寄存器写入的初始值X为: X=28 t /(TP) 定时64ms时: X=28641000/ (110-6256)=6,定时时间计算,若晶振频率为4MHz,则机器周期为1s,定时器TMR0最小定时时间为: 28 (28 1) 1 = 1s 定时器TMR0最大定时时间为:

9、 (28 0) 1256= 65536s,分频值的计算,设定时要求为:62.5ms(参看182页) 不用分频器只能记录256us 如果分频比为256,则定时62.5ms需要计数 62500/256=244.14次,计数器能够名字要求,TMR0应用注意问题:,1、写TMR0的不理想方法: 例:其工作条件是4MHz振荡频率,TMR0每隔1 00us中断,预分频器设为1:1,故理论计数起始值应为256-100+2=158。,注意:TMR0作为定时器时的计数过程无法停止,是循环计数,分析原因,当它一次计数溢出发生中断,在单片机响应中断到真正处理其中断服务时,必定经过了若干指令周期的延时,如现场保护、中

10、断源识别等,此时TMR0寄存器中已经有了一些计数值,说明已经花费了部分时间。 而定时时间是确定的,赋值的初值后,其实定时时间不再是158,而是比158要大,具体大多少取决于整个中断服务程序执行到指令时所花的指令周期数。 但当程序中除了TMR0还有其他中断源也将发出中断响应时,那么调查中断3源后,轮到响应TMR0时的时间延时就根本无法确定,这时想用软件补偿也没办法实现了。,写TMR0的正确方法,不管程序执行到此处时TMR0内的计数值是多少,只要在158的基础上让它少跑这部分计数值,(将这部分计数值一起挖去,少计这部分计数值) 无需关心中断程序中赋值的先后,都能保证准确性。,尽量避免少写TMR0,

11、在改变TMR0寄存器内容的同时会将预分频器清0,预分频器中的计数值会被清除,也会影响计数精度,试验五要求,清晰理解跑马灯显示控制的流程图和程序; 会调整不同时间参数 会自己想象,调整出想要的显示效果; 在跑马灯程序的基础上,实现队列灯的显示;,查询方式:队列灯实验,电路,该电路只是参考,和电路板不一样,队列灯查表子程序,;* 读取显示信息的查表子程序 * read addwf pcl,1 ;地址偏移量加当前Pc值,执行完该条指令后pcl还会自动加1 retlw b00000001 ;队列灯显示信息码,下同 retlw b00000011 retlw b00000111 retlw b00001111 retlw b00011111 retlw b00111111 r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论