单片机 第五章 MCS-51的定时器
MCS51单片机第5章

中断优先级处理原则
同时发生多个中断申请时 多个中断申请时: 对同时发生多个中断申请时: 不同优先级的中断同时申请(很难遇到) ☞不同优先级的中断同时申请(很难遇到) ——先高后低 先高后低 相同优先级的中断同时申请(很难遇到) ☞相同优先级的中断同时申请(很难遇到) ——按序执行 按序执行 ☞正处理低优先级中断又接到高级别中断 ——高打断低 高打断低 ☞正处理高优先级中断又接到低级别中断 ——高不理低 高不理低
MCS-51单片机的中断系统 MCS-51单片机的中断系统 计算机与外设之间交换信息的方式: 计算机与外设之间交换信息的方式: 无条件传送方式:外设对计算机来说总是准备好的。 (1)无条件传送方式:外设对计算机来说总是准备好的。 (2)查询传送方式:传送前计算机先查询外设的状态, 查询传送方式:传送前计算机先查询外设的状态, 若已经准备好就传送,否则就继续查询/等待。 若已经准备好就传送,否则就继续查询/等待。 中断传送方式: (3)中断传送方式:外设通过申请中断的方式与计算 机进行数据传送。 机进行数据传送。 直接存储器存取方式(DMA) (DMA): (4)直接存储器存取方式(DMA):传送数据的双方直 接通过总线传送数据, 不经CPU中转。 CPU中转 接通过总线传送数据, 不经CPU中转。
中断请求的撤除
为了避免中断请求标志没有及时撤除而造成的重复响应同一中 断请求的错误, CPU在响应中断时必须及时将其中断请求标志 断请求的错误, CPU在响应中断时必须及时将其中断请求标志 位撤除。 位撤除。
申请标志 IE0 TF0 IE1 TF1 RI/TI TF2
中断矢量 0003H 000BH 0013H 001BH 0023H 002BH
中断优先级 最高优先级
最低优先级
第05章 MCS-51单片机的中断与定时(1-4)

2
1
TH0
;P1.0输出“0” ;P1.0输出“1”
5.2 MCS-51单片机的中断系统
五、外中断应用举例
1. 中断初始化程序
设置外中断源的触发方式 设置中断允许寄存器IE 设置中断优先级寄存器IP
2. 中断服务程序
保护现场 中断处理 恢复现场
23/65
5.2 MCS-51单片机的中断系统
【例5-3】 设外部中断0为下降沿触发方 式,高优先级,试编写中断初始化程序
5.2 MCS-51单片机的中断系统
【例5-4】 将单脉冲接到外中断0(INT0)引脚,利 用P1.0作为输出,经反相器接发光二极管。编写程 序,每按动一次按钮,产生一个外中断信号,使发 光二极管的状态发生变化,由亮变暗,或反之
P1.0 单脉冲 发生器 INT0
1
+5V
8031
26/65
5.2 MCS-51单片机的中断系统
串口:0023H
20/65
5.2 MCS-51单片机的中断系统
四、中断请求的撤除
1.定时/计数器中断请求标志TF0/TF1会自动撤除 2.串行口中断请求标志TI/RI要用指令撤除
CLR TI ;清TI标志位 CLR RI ;清RI标志位
3.负脉冲触发的外中断请求标志IE0/IE1会自动撤除 4.低电平触发的外中断请求信号需要外加电路撤除
下次课前请预习5.3节
30/65
5.3 51单片机的定时器/计数器
MCS-51单片机内部有两个16位定时/计数器 T0和T1,简称定时器0和定时器1
在特殊功能寄存器TMOD和TCON的控制下, 它们既可以设定成定时器使用,也可以设定 成计数器使用
定时/计数器有4种工作方式,具有中断功能, 可以完成定时、计数、脉冲输出等任务
第5章 MCS-51中断、定时计数器及串行接口

22:26
7
保护现场
课本P103
保护现场是指由于CPU执行中断处理程序时, 可能使用主程序中用过的累加器、寄存器或标志位。
为了使这些寄存器的值在中断服务程序中不被 冲掉,进入中断服务程序前,要将它们保护起来。
中断服务程序执行完,必须恢复原寄存器的内 容及原程序中断处的地址,即恢复现场和恢复断点。
22:26
课本P105
一、中断请求控制
(1) TCON中的中断请求标志位 Timer Controller
TCON为定时/计数器控制寄存器,其字节 地址为88H,可位寻址。这个寄存器除了控制定 时/计数器T0和T1的溢出中断外,还控制外部中 断的触发方式和锁存外部中断请求标志位。
图5-3 TCON中的各位定义
22:26
24
2. 中断响应过程
课本P110
CPU响应中断后,由硬件自动执行如下的功能操作:
(1)根据请求源的优先级高低,对相应的优先级状态 触发器置1,自动生成长调用指令LCALL addr16。
(2)保护断点,把程序计数器PC的内容压入堆栈。 (3)清除相应的中断请求标志位。 (4)把被响应的中断源所对应的中断服务程序入口地
…
先进后出
…
POP DPL
POP DPH
POP ACC
RETI
最后1条指令 必须是RETI
27
中断响应过程
处理文档 电话铃响 暂停文档 文档中作暂停记号 电话交谈 找出暂停记号位置 继续处理文档
执行主程序(日常事务程序) 中断申请信号有效(中断请求)
暂停执行主程序响应中断 当前PC及寄存器入栈(保护现场)
22:26
5
中断系统的基本问题
MCS-51单片机的定时器计数器

1. 定时器T0/T1 中断申请过程
(1)在已经开放T0/T1中断允许且已被启动的前提下, T0/T1加1计满溢出时 TF0/TF1标志位自动置“1” ;
(2)CPU 检测到TCON中TF0/TF1变“1”后,将产生指 令:LCALL 000BH/LCALL 001BH 执行中断服务程序;
(3)TF0/TF1标志位由硬件自动清“0”,以备下次中断申
郑州大学
docin/sundae_meng
(3)工作方式寄存器TMOD
T1
T2
GATE C / T M1 M0 GATE C / T M1 M0
M1,M0:工作方式选择位 。
=00:13位定时器/计数器; =01:16位定时器/计数器(常用); =10:可自动重装的8位定时器/计数器(常用); =11:T0 分为2个8位定时器/计数器;仅适用于T0。 C/T :定时方式/计数方式选择位。 = 1:选择计数器工作方式,对T0/T1引脚输入的外部事件 的负脉冲计数; = 0 :选择定时器工作方式,对机器周期脉冲计数定时。 如下页图所示。
CPL P1.0 MOV TH0,#15H MOV TL0,#0A0H
START:MOV SP,#60H MOV P1,#0FFH
SETB TR0 POP PSW
MOV TMOD,#01H MOV TH0,#15H MOV TL0,#0A0H
POP ACC RETI END
SETB EA
Байду номын сангаас
SETB ET0
定时器/计数器0采用工作方式1,其初值为:
21650ms/1s=6553650000=15536=3CB0H
电路图如下:
郑州大学
docin/sundae_meng
单片机原理及其接口技术--第5章 MCS-51单片机中断系统

下来,这称为保护现场,由用户自己编程完成。
保护断点和现场后即可执行中断服务程序,执行完毕, CPU由中断服务程序返回主程序。 主目录 上一页 下一页 结 束
15
……
响应
单片机原理及其接口技术
主程序A
断点
返回
中断返回过程如下:
RETI 中断服务程序B
首先恢复原保留寄存器的内容和标志位的状态,这称为恢 复现场,由用户编程完成。 然后,再加返回指令RETI,RETI指令的功能是恢复PC值, 使CPU返回断点,这称为恢复断点。 恢复现场和断点后,CPU将继续执行原主程序,中断响应 过程到此为止。 主目录 上一页 下一页 结 束
主目录 上一页 下一页 结 束
单片机原理及其接口技术
5.2.2 中断标志与中断控制
1.中断标志
(1) 定时器控制寄存器TCON
SFR之一,锁存中断请求标志,字 节地址88H,可位寻址。
其结构、位名称、位地址及其功能 如表5.1所示。
主目录 上一页 下一页 结 束
单片机原理及其接口技术 表5.1 TCON的结构、位名称、位地址和功能
单片机原理及其接口技术
第5章 MCS-51单片机中断系统
教学目标 5.1 中断概述 5.2 MCS-51中断系统 5.3 中断系统的应用 本章小结 思考题与习题主目录上一页来自下一页结束
单片机原理及其接口技术
教学目标
通过本章教学,要求达到以下目标: 1.熟记MCS-51 5个中断源及其中断入口地址。 2.熟悉TCON、SCON、IE、IP的结构、控制 作用和设置方法。 3.理解MCS-51中断响应过程。 4.了解中断响应等待时间。 5.理解中断请求撤除情况和应对措施。 6.熟悉中断优先控制的方法。 7.掌握中断应用程序的编制方法。
第5章 MCS-51的定时计数器

电气与信息工程学院
2011/3/26
安徽理工大学
5.2 工作方式
(1) 方式0 方式0
位和TL 的低5位组成13 13位计数器 由THX的8位和TLX的低5位组成13位计数器 13位计数加 到全“1”,再加 就产生溢出, 位计数加1到全 就产生溢出, 位计数加 到全“ ,再加1就产生溢出 位为1,同时计数器全变为“ 置TCON的TFX位为 ,同时计数器全变为“0” 的
电气与信息工程学院
2011/3/26
安徽理工大学
(2) 方式1 方式1
唯一的差别是TH 组成一个16位计数器。 16位计数器 唯一的差别是THX和TLX组成一个16位计数器。
振荡器 ÷12
C /T=0 C /T=1 T0 TR0 GATE INT0 1 > 1 & 控制
TL0 TH0 (8位)(8位)
TF0
中断
定时/计数方式1 定时/计数方式1时的逻辑电路结构图 上例中
单片机课件—定时计数器
理
工
大
振荡器 12 C/T=0
学
TLx THx
工 程
Tx端
C/T=1
(8位) (8位) 控制 =1
技 TRx位 术 GATE位 学 INTx端 院
开关接通
&
≥1 与门 或门
申请 TFx 中断
2020年5月23日2时16分
第五章 MCS-51系列单片机硬件资源的应用
工作方式1 的编程要点:
成 都
THx/TLx赋初值:THx赋高8位,TLx赋低8位
成
都 理 工
定时/计数器可按片内机器周期定时,也可对由 T0/T1引脚输入一个负脉冲进行加法计数
大
学 在已经开放T0/T1中断允许且已被启动的前提下:
Hale Waihona Puke 工程 T0/T1加满溢出时 TF0/TF1标志位自动置“1”
技 术 学
检测到TCON中TF0/TF1变“1”后,将产生指令: LCALL 000BH/LCALL 001BH 执行中断服务程序,
TFx 中断
溢
≥1
控制 =1
开关接通
&
THx
与门
(8位)
出 位 门开
学 INTx端
或门
院
2020年5月23日2时16分
第五章 MCS-51系列单片机硬件资源的应用
工作方式 2 的编程:
成 都 理 工
☞ THx/TLx赋相同初值 在TLx计数达到0FFH 再加“1”时,TLx 将溢出,进位位直接进入“TFx”去申请
大 0 0:13位 Timer——用它无益,不要记它!
学 0 1:16位 Timer——经常用到
工 1 0:可自动重装的 8位 Timer——经常用到
简述mcs-51单片机中定时器方式0、方式1和方式2的工作特点。
MCS-51单片机中定时器的方式0、方式1和方式2具有不同的工作特点。
方式0是一个13位的定时器/计数器,其使用了16位寄存器(TH0和TL0)中的13位,包括TL0的低5位和TH0的8位,而TL0的高3位并未使用。
方式1是一个16位的定时器/计数器,TH0和TL0对应的16位全部参与计数运算。
当TH0和TL0计数满溢出时,硬件会自动将TF0置位并申请中断,同时16位加1计数器会从0开始继续计数。
在定时工作方式下,定时时间t对应的初值为X=216–t×fosc/12。
在计数工作方式下,计数长度最大为216=65536(个外部脉冲)。
方式2的特点是初值只需设置一次,每次溢出后,初值会自动从TH0加载到TL0或从TH1加载到TL1,但计数范围比方式1小。
在方式2中,只有TL0用作8位计数器参与脉冲计数工作,TH0不参与计数,只用来保存初值。
以上信息仅供参考,建议咨询专业计算机技术人员或者查阅专业书籍了解更多详细信息。
单片机原理第5章定时、计数器
5.2.2 控制寄存器 控制寄存器TCON
5,控制寄存器TCON初始化设置 ,控制寄存器 初始化设置
0
0 1
0
1 0 1
0
0
0
0
复位时, 的所有位被清0. 复位时,TCON的所有位被清 的所有位被清 要启动,关闭 , 要启动,关闭TI, T0,需对 ,需对TR1,TR0用 , 用 软件设置: 软件设置: SETB TRx;启动 ; CRL TRx;关闭 ; 也可以用传送指令 MOV TCON,#50H , 同时启动T0, 同时 同时启动 ,T1同时 使用电平触发方式. 使用电平触发方式.
时钟 振荡 ÷12
2,脉冲计数 , 每来1个脉冲,计 每来 个脉冲, 个脉冲 数器加1. 数器加 .
C P U
T0 TL0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0
溢 出 启动 TH0 工作 方式
TCON
TMOD
中断
5.1 定时器的结构及工作原理
1,计数脉冲来源 ,
(P3.4)
INT0(INTI)=1 指令 SETB TR0(TR1) 启动定时/计数器 启动定时 计数器T0(T1) 计数器
1
5.2.2 控制寄存器 控制寄存器TCON
1,溢出标志位 TFx
0 1
TFl(TCON.7):T1溢出标志位.当T1溢出时由硬 : 溢出标志位 溢出标志位. 溢出时由硬 件自动使中断触发器TFl置1,并向 申请中断. 件自动使中断触发器 置 ,并向CPU申请中断. 申请中断 响应进入中断服务程序后, 当CPU响应进入中断服务程序后,TFl又被硬件 响应进入中断服务程序后 又被硬件 自动清0. TFl也可以用软件清 . 自动清 . 也可以用软件清0. 也可以用软件清 TF0(TCON.5):T0溢出标志位.其功能和操作同 : 溢出标志位 其功能和操作同TFl 溢出标志位.
第5章MCS-51的中断系统
例:写出INT1为低电平触发的中断系统初始化程序
SETB EA; SETB EX1 SETB PX1 CLR IT1
二、 中断服务程序
1、编写中断程序应注意以下几点: ① 为了要跳到用户设计的中断服务程序,在相应入口 地址安排一条跳转指令; ② 在中断服务程序的末尾,安排一条返回指令RETI; ③ 由于在响应中断时,CPU只自动保护断点,所以 CPU的其他现场的保护和恢复也必须由用户在中断服 务程序中安排。
1、T0/T1中断撤除:自动清除TF0 TF1
2、TX/RX中断撤除:不能自动撤除,必须软件清“0” CLR RI CLR TI ANL SCON ,#0FCH
3、外部中断请求的撤除
对于负边沿触发的外部中断,CPU在响应中断后是 用硬件自动清除中断请求标志IE0或IE1。
电平触发时,虽然自动清除中断请求标志IE0或IE1。但 不及时撤除低电平的话会重复响应中断,必须采取措施。
中断允许寄存器IE的单元地址是A8H,各控制位也可 位寻址,故既可以用字节传送指令也可以用位操作指 令来对各个中断请求加以控制。 例:开放T/C1的溢出中断
MOV IE,#88H;
SETB EA SETB ET1
二、 对中断优先级的控制
MCS-51具有两个中断优先级,可由软件设置每个中断 源为高优先级中断或低优先级中断,可实现二级中断 嵌套。
可在中断服务程序开 头安排如下程序: INSVR:ANL P1 ,#0FEHORL Fra bibliotek1,#01H …
RETI END
§4 中断系统的初始化及应用
一、中断系统的初始化 中断初始化是指用户对TCON、SCON、IE等特殊功能 寄存器中的各控制位进行赋值。
中断系统的初始化步骤: 1、 CPU开中断或关中断 2、 某中断源中断请求的允许或禁止(屏蔽) 3、 设定所用中断的中断优先级 4、若为外部中断,则应规定低电平还是负边沿的中断 触发方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章MCS-51的定时器/计数器在工业检测、控制中,许多场合都要用到计数或定时功能。
例如,对外部脉冲进行计数、产生精确的定时时间、作串行口的波特率发生器。
MCS-51单片机内有两个可编程的定时器/计数器,以满足这方面的需要。
它们具有两种工作模式(计数器模式和定时器模式)及4种工作方式(方式0、方式1、方式2和方式3),其控制字均在相应的特殊功能寄存器中,通过对它的特殊功能寄存器的编程,用户可方便地选择适当的工作模式和工作方式。
本章介绍定时器/计数器的结构,功能,状态字、控制字的含义以及工作模式和工作方式的选择与编程方法。
5.1 定时器/计数器的结构特殊功能寄存器TMOD用于控制和确定定时器/计数器T0、T1的工作模式和工作方式。
特殊功能寄存器TCON用于控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。
TMOD、TCON这两个寄存器的内容由软件设置。
系统复位时,两个寄存器的所有位都被清0。
5.1.1 工作方式控制寄存器TMODTMOD用于控制定时器/计数器的工作模式及工作方式,它的字节地址为89H,其格式如下所示:GATE位:门控位。
GATE=1时,T0、T1是否计数受外部引脚输入电平的控制、INT0引脚控制T0运行,INT1引脚控制T1运行。
可用于测量在INT0或INT1引脚出现的正脉冲的宽度;GATE=0,定时器/计数器的运行不受外部输入引脚l的控制。
C/T位:计数器模式和定时器模式的选择位。
C/T=0,为定时器模式。
内部计数器对晶振脉冲12分频后的脉冲计数。
该脉冲的周期等于机器周期。
即对机器周期进行计数。
若选择12M晶振,则计数频率为1MHz,从计数值便可求得计数的时间,所以称为定时器模式;C/T=1,设置为计数器模式,计数器对外部输入引脚T0(P3.4脚)或T1(P3.5脚)的外部脉冲(负跳变)计数,允许最高计数频率为晶振频率的1/24。
M1、M0位:工作方式选择位。
共有4种编码,对应于4种工作方式。
0 0 :方式0,13位定时器/计数器0 1 :方式1,16位定时器/计数器1 0 :方式2,8位自动重装载定时器/计数器1 1 :方式3,仅适用于T0,分成两个8位定时器/计数器5 .1.2 定时器/计数器控制寄存器TCONTCON的字节地址为88H,位地址为88H-8FH,TCON的格式如下:5.2 定时器/计数器的四种工作方式5.2.1 方式05.2.2 方式15.2.3 方式25.2.4 方式35.3 定时器/计数器对输入信号的要求当MCS-51内部的定时器/计数器被选定为定时器工作模式时,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲,计数器增1,因此,定时器/计数器的输入脉冲为时钟振荡频率的l/12。
当采用12MHz的晶体时,计数速率为1MHz,输入脉冲的周期为1微秒。
由于定时的精度决定于输入脉冲的周期,因此,当需要高分辨率的定时时,应尽量选用频率较高的晶体(MCS-51最高为12MHz)。
当定时器/计数器用作计数器时,计数脉冲来自外部输入引脚T0或T1 。
当输入信号产生由1至0的跳变时,计数器的值增1。
如在第一个周期中采得的值为1,而在下一个周期中采得的值为0、则在紧跟着的下一个周期期间,计数器加1。
由于确认一次下跳变要花两个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为振荡器频率的1/24,例如选用6MHz频率的晶体,允许输入的脉冲频率为250KHz,如果选用12MHz频率的晶体,则可输入500KHz的外部脉冲。
对于外部输入信号的占空比并没有什么限制,但为了确保某一给定的电平在变化之前能被采样一次,则这一电平至少要保持一个机器周期。
5.4 定时器/计数器编程和应用n1.计数器初值的计算n把计数器计满为零所需要的计数值设定为C,计数初值设定为TC,由此可得到公式:TC=M-Cn式中,M为计数器模值,该值和计数器工作方式有关。
在方式0时M为213;在方式1时M为216;在方式2和方式3时M为28。
n 2.定时器初值的计算n 在定时器模式下,计数器由单片机主脉冲经12分频后计数。
因此,定时器定时时间T 的公式:T=(M-TC )T 计数上式也可写成:TC=M-T/ T 计数n 式中,M 为模值,和定时器的工作方式有关;T 计数是单片机振荡周期T CLK 的12倍;TC 为定时器的定时初值。
5.4.1 方式0应用(1ms定时)假设时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,方波的周期用定时器T0来确定,并假定CPU不作其它工作,因而可以来用查询的方式进行控制。
n确定定时常数机器周期=12/晶振频率=12/(6x106)=2us;设:需要初值为X,则(213-X)x2x10-6=1x10-3 213-X=500 X=7692化为16进制X=1E0CH根据13位定时器特性,初值应为TH0=0F0H TL0=0CHMAIN: MOV SP,#60HMOV TMOD,#00HSETB TR0 LOOP: MOV TL0,#0CHMOV TH0,#0F0H LOOP1: JNB TF0,LOOP1CLR TF0CPL P1.0SJMP LOOPEND5.4.2 方式1应用方式1与方式0基本相同,只是方式1改用了16位计数器。
要求定时周期较长时,13位计数器不够用,可改用16位计数器。
假设利用定时器方式1产生一个50Hz的方波,由P1.0输出,采用12MHz时钟,采用中断的方法来实现,即在T0中设置一个时间常数,使其每隔10ms产生一次中断,CPU响应中断后,在中断服务程序中对P1.0取非。
T0中断人口地址为000BH。
初值可由下式算得:(216-X)×10-6=10-2因而,X=55536=0D8EFHORG 0000HLJMP MAINORG 000BHLJMP T0_PROCORG 0100H MAIN: MOV SP,#60HMOV TMOD,#01HMOV TL0,#0EFHMOV TH0,#0D8HSETB TR0SETB ET0SETB EA HERE: AJMP HERET0_PROC:MOV TL0,#0EFHMOV TH0,#0D8HCPL P1.0RETI5.4.3 方式2应用(0.5ms定时)假设时钟频率采用6MHz,要在P1.0上输出一个周期为1ms的方波(1KHz),方波的周期用定时器T0来确定,采用方式2和中断的方法来实现。
n确定定时常数机器周期=12/晶振频率=12/(6x106)=2us;设:需要初值为X,则(28-X)x2x10-6=5x10-428-X=250 X=6ORG 0000HLJMP MAINORG 000BHLJMP T0_PROCORG 0100H MAIN: MOV SP,#60HMOV TMOD,#02HMOV TL0,#06HMOV TH0,#06HSETB TR0SETB ET0SETB EA HERE: AJMP HERET0_PROC:CPL P1.0RETI5.4.4 方式3的应用下面的程序使定时器/计数器0工作在方式3,TL0和TH0作为两个独立的8位定时器/计数器,分别产生200us和300us定时中断,使P1.0和P1.1产生周期为400us和600us的方波(晶体频率为6MHz)。
ORG 0000HLJMP MAINORG 000BHLJMP T0_PROCORG 001BHLJMP T1_PROCORG 0100H MAIN: MOV SP,#60HMOV TMOD,#03HMOV TL0,#9CHMOV TH0,#6AHSETB TR0SETB ET0SETB TR1SETB ET1SETB EA HERE: AJMP HERET0_PROC:MOV TL0,#9CHCPL P1.0RETIT1_PROC:MOV TH0,#6AHCPL P1.1RETI5.4.5 门控制位GATE的功能和使用方法(以T1为例)门控制位GATE使定时器/计数器T1的启动计数受INT1的控制,当GATE为1,TR1为1时,只有INT1引脚输入高电平时,T1才被允许计数,利用GATE的这个功能,可测试引脚(P3.3)上正脉冲的宽度(机器周期数)。
MOV SP,#60HMOV TMOD,#90HMOV TL1,#00HMOV TH1,#00H LOOP:JB P3.3,LOOP LOOP1:JNB P3.3,LOOP1SETB TR1LOOP2:JB P3.3,LOOP2CLR TR1MOV R2,TL1MOV R3,TH15.4.6 定时器溢出同步问题定时器溢出时,自动产生中断请求,但中断响应是有延迟的,这种延迟并非固定不变,而是取决于其它中断服务是否在进行,或取决于正执行的是什么样的指令。
若定时器溢出中断是唯一的中断源,则延迟时间取决于后一个因素,可能在3-8个机器周期内变化,在这种情况下,相邻两次定时中断响应的间隔的变化不大。
在大多数场合可以忽略。
但一些对定时精度要求十分苛刻的场合,则对此误差应进行补偿,这一节介绍的补偿方法,可以使相邻两次中断响应的间隔误差不超过1个机器周期。
这种方法的简单原理是:在定时溢出中断得到响应时,停止定时器计数,读出计数值(它反映了中断响应的延迟时间),根据这个计数算出下一次中断时,需多长时间,据此来重装载和起动定时器。
下面给出的程序在计算每个周期的精确重装值时,还考虑了由停止计数(CLR TR1)到重新起动计数(SETB TR1)之间相隔了7个机器周期。
………..CLR EACLR TR1MOV A,#TL1NUM+7 ADD A,TL1MOV TL1,AMOV A,#TH1NUM ADDC A,TH1MOV TH1,ASETB TR1………………5.4.7 运行中读定时器/计数器在读取运行中的定时器计数器时,需要特别加以注意,否则读取的计数值有可能出错。
原因是不可能在同一时刻同时读取TL和TH的内容。
比如,先读TL,后读TH,由于定时器在不断运行,读TH前,若恰好产生TL溢出向TH进位的情形,则读得的TL值就完全不对了。
同样,先读TH,再读TL也可能出错。
一种解决读错问题的方法是:先读TH,后读TL,再读TH,若两次读得TH相同,则可确定读得的内容是正确的。
若前后两次读得的TH有变化,则再重复上述过程,这次重复读得的内容就应该是正确的。
READTIME:MOV A,TH0MOV R0,TL0CJNE A,TH0,READTIMEMOV R1,ARET。