第六章 定时器/计数器TMR0
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定时时间计算
若晶振频率为4MHz,则机器周期为1µs,定时 器TMR0最小定时时间为: [28 – (28– 1)] ×1 = 1µs
定Байду номын сангаас器TMR0最大定时时间为: [(28– 0) ×1]×256= 65536µs
分频值的计算
设定时要求为:62.5ms(参看182页) 不用分频器只能记录256us 如果分频比为256,则定时62.5ms需要计数 62500/256=244.14次,计数器能够名字要求
写TMR0的正确方法
不管程序执行到此处时TMR0内的计 数值是多少,只要在158的基础上让 它少跑这部分计数值,(将这部分计 数值一起挖去,少计这部分计数值) 无需关心中断程序中赋值的先后,都 能保证准确性。
尽量避免少写TMR0
在改变TMR0寄存器内容的同时会将预分频 器清0,预分频器中的计数值会被清除,也 会影响计数精度
101 110 111
1:32
1:64 1:128 1:256
1:16
1:32 1:64 1:128
2 与定时器/计数器TMR0模块相关的寄存器
定时器/计数器 TMR0 选项寄存器OPTION_REG 中断控制寄存器INTCON 端口RA方向控制寄存器TRISA
与TMR0模块相关的寄存器
二进制异步加法计数器
由于D端 接Q非, 所以触发 器每次跳 变都反向 相翻转
分频器电路
Q3
T'
1:8
Q
Q Q2 1:4 1:2 输出
T'
Q
Q Q1
T'
Q
Q 1:1
Clock 时钟输入
T1CKPS1:T1CKPS0 分频器电路 图9.3 可编程预分频器等效电路
CP
FQ1=1/2 FCP FQ2=1/4 FCP
GI E
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
端口RA 方向寄 存器 TRISA
85H
— —
——
TRIS A5
TRIS A4
TRIS A3
TRIS A2
TRIS A1
TRIS A0
TMR0具有以下硬件结构特点总结
(1)TMR0是一个8位宽的由时钟信号上升沿触发的循环累加计 数寄存器。 (2)有一个专用的外部触发信号输入端(T0CKI)。 (3) TMR0也是一个在文件寄存器区域内统一编址的寄存器, 地址为01H或101H,用户用软件方式可直接读/写计数器的 内容。 (4) 具有一个软件可编程的8位预分频器。 (5) 当使用内部触发信号,即指令周期作为时钟信号源时, 模块TMR0工作于定时方式,触发方式为固定上升沿触发有效。 在计数器溢出时,相应的溢出中断标志T01F自动置位,并可 产生溢出中断。
初始值计算
如设定定时时间为t,指令周期为T,分频比为P: 不使用分频器时,计数寄存器写入的初始值X为: X=28 — t /T + 2 使用分频器时,那么计数寄存器写入的初始值X 为: X=28 — t /(T×P) 例如: 定时64ms时: X=28—64×1000/ (1×10-6×256)=6
定时时间计算:(计数初值,应保证对剩余空间
计数定时=需要记录的脉冲数 N * T ) 对8位定时器TMR0,不使用分频器时,定时时间的计 算公式为:
(28 – 计数初值-2) ×指令周期,
使用分频器时,定时时间的计算公式为: 分频比×(28 – 计数初值) ×指令周期 分频比取值为2、4、8…256。
的信号时自动加1,这时TMR0最长固有定时时间将达到65535us。
定时时间计算
假设:定时时间为t,标准时钟周期为T, 实际累加 记录的脉冲数 N,有关系式: t = T * N , N = t / T
解决问题: 控制计数器,当定时时间到时,发出通知; 怎样发出通知?通过计数器的什么? 怎样把N写入计数器?
第4章 定时器/计数器
主要特点:
1. 2. 3.
定时器/计数器模块是大部分单片机都内置的一 项重要功能 定时器/计数器的的核心模块为计数累计功能, 通常是由时钟脉冲来驱动。 核心功能为: 当对内部标准时钟累计计数时,用作定时器。 当对外部脉冲累计计数时,用作计数器。
一般适用于以下不同的应用场合:
试验六要求
清晰理解跑马灯显示控制的流程图和程序; 在跑马灯程序的基础上,实现队列灯的显 示; 会调整不同时间参数; 会自己想象,调整出想要的显示效果;
查询方式:队列灯实验,电路
该电路只是参考,和电路板不一样
队列灯查表子程序
;********** 读取显示信息的查表子程序 ************ read addwf pcl,1 ;地址偏移量加当前Pc值,执行完该条指令后pcl还会自动加1 retlw b‘00000001’ ;队列灯显示信息码,下同 retlw b'00000011' retlw b'00000111' retlw b'00001111' retlw b'00011111' retlw b'00111111' retlw b'01111111' retlw b'11111111' retlw b'11111110' retlw b'11111100' retlw b'11111000' retlw b'11110000' retlw b'11100000' retlw b'11000000' retlw b'10000000' retlw b'00000000' end ;通知汇编器源程序结束
PS2,PS1,PS0 预分频值设置
4
3
PSA 预分频器指定
图5-5 简化TMR0的功能原理图 图6-1 TMR0功能原理图
参看168页
跳变触发计数
累加计数器的工作过程
8位TMR0累加计数器工作总是在送入初始值(称为时间常数) 以后,启动计数,推迟2个指令周期,在初始值的基础上, 对脉冲跳变触发产生计数,直到计数寄存器TMR0计满到 FFH再加1,TMR0恢复到0,产生溢出和溢出标志T0IF。如 果是中断使能T0IE开启的情况下,T0IF就能引发中断。 TMR0恢复到0后, 将继续自动对跳变触发产生计数加1, TMR0的计数始终不会停,称为循环计数。
TMR0应用注意问题:
注意:TMR0作为定时器时的计数 过程无法停止,是循环计数
1、写TMR0的不理想方法:
例:其工作条件是4MHz振荡频率,TMR0每隔1 00us中断,预 分频器设为1:1,故理论计数起始值应为256-100+2=158。
分析原因
当它一次计数溢出发生中断,在单片机响应中断到真正 处理其中断服务时,必定经过了若干指令周期的延时, 如现场保护、中断源识别等,此时TMR0寄存器中已经有 了一些计数值,说明已经花费了部分时间。
FQ3=1/8 FCP
TMR0模块简化原理图(熟练掌握)
多选开关
指令周期 fosc/4
RA4/T0CK1
0
看门狗用
累加计数 寄存器
8位数据总线
1
+
2
T0SE 脉冲沿选择
1
TMR0用
预分频器
分频 输出
0
计数脉冲和 内部指令周 期同步过程
TMR0寄存器
2个指令 周期延时
5
6
溢出时置 中断T0IF
T0CS 1 脉冲源选择
三是预分频器,是对指令周期信号进行按比例分频,可在一 定范围内大幅调整定时的长短,分频比越大,定时越长。
设置计数模式特点: 计数模式,计数触发信号来源于I/O端口RA / T0CKI信 号。
只有处于计数模式下,跳变沿选择TOSE位才有效
对T0CKI信号,既可以是标准的脉冲信号(周期脉冲信号), 也可以是无规则的时序脉冲信号。因此,计数和定时不同, TMR0计数的长短一般不能确定定时的长短。
1.
2.
3.
4.
对外部事件计数:单片机对其端口引脚上输入的由外部 事件产生的触发信号进行准确地计数,依据计数结果来 控制完成相应的动作; 对内部产生定时信息或定时中断; 输出定时信号:或从单片机I/O引脚上向外部输出一系 列符合一定时规范的方波信号。 检测信号:从单片机I/O引脚上,检测外部电路输入的一 系列方波信号的脉宽、周期或频率;
定时器/计数器TMR0模块的电路结构和工作原理
中断逻辑
EEIF EEIE ADIF ADIE
3个基本(内核)中断
GIE T0IF T0IE INTF INTE RBIF RBIE
Interrupt to CPU
RCIF RCIE
TXIF TXIE . . . .
+
Wake-up (if in SLEEP)
寄存器 的名称 和符号
寄存器内容
寄存器 地址 Bi t7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
定时器/ 计数器 TMR0 选项寄 存器 OPTION_ REG 中断控 制寄存 器 INTCON
01H/101 H
8位累加计数寄存器
3个开关设置
81H/181 H 0BH/8BH / 10B/H/1 8BH RB PU INTE DG T0CS T0SE PSA PS2 PS1 PS0
定时时间计算
当计数寄存器写入初始值时,TMR0将被推迟2个指令周期,
便开始或重新启动累加计数。当精度要求高时,可以通过定时 参数补偿2个指令周期。精度要求不高时,可以不考虑。
若没有使用分频器,TMR0会在每个指令周期信号(时钟周期
的4倍)到来时自动加1。
若使用分频器,TMR0会在指令周期信号分频某个倍数后产生
了解即可: 计数脉冲和指令周期的同步:单片机将对TOCKI引脚在1个 指令周期内做2次等间隔的判读来判断是否有计数有效沿 出现,如果一次为高另一次为低,则表明出现了一个脉冲 沿跳变,如果此跳变符合T0SE跳变沿的设置,TMR0的值 就加一。所以,外部输入信号必须保证2次跳变之间的间 隔至少维持2个振荡周期的宽度(1个指令周期=4个振荡周 期),再另外加多20ns的内部电路延时。
(6)当使用外部时钟信号源时,模块TMR0工作于计数方式, 触发方式可由程序设置位上升沿触发或下降触发有效。在计 数器溢出时,也可产生溢出中断。
分析TMR0两种工作模式的特点
设置定时模式特点: 计数触发信号来源于系统时钟,即为内部的指令周期信号。 定时的长短主要取决于3种因素。 一是初始时间常数,其数值设置越小,定时越长,最大定时 为256个触发脉冲周期。 二是系统振荡频率,PIC单片机时钟振荡频率的范围为0~20 MHz,频率越高,计数信号为指令周期就越短,相同条 件下的定时时间就越短。假定时钟振荡频率为4 MHz,指 令周期为1µs,那么如果不考虑其他因素,理论上TMR0固 有定时时间最短为1µs,而最长为256µs。
+
PEIE
BCLIF BCLIE
11个外围模块的中断
总结,请求能够 传达到CPU的条 件:模块功能完 成的标志,模块 使能,外围使能, 总使能;
预分频参数选择
PS2 PS1 PS0
000 001 010 011
TMR0比率
1:2 1:4 1:8 1:16
WDT比率
1:1 1:2 1:4 1:8
100
而定时时间是确定的,赋值的初值后,其实定时时间不 再是158,而是比158要大,具体大多少取决于整个中断 服务程序执行到指令①时所花的指令周期数。 但当程序中除了TMR0还有其他中断源也将发出中断响应 时,那么调查中断3源后,轮到响应TMR0时的时间延时 就根本无法确定,这时想用软件补偿也没办法实现了。