MCS-51单片机中断响应的三种方法解析
出处:电子发烧友 发布于:2019-05-08 13:40:35
文中以定时器T1工作在定时方式1为例,晶振频率为12MHz。
1 方法1
在定时器溢出中断得到响应时,停止定时器计数,读出计数值(反映了中断响应的延迟时间),根据此计数值算出到下中断时,需多长时间,由此来重装载和启动定时器。例如定时周期为1ms,则通常定时器重装载值为-1000(0FC18H)。下面的程序在计算每个定时周期的重装载值时,考虑了由停止计数(CLR TR1)到重新启动计数(SETB TR1)之间的7个机器周期时间。程序中#LOW(-1000+7)和#HIGH(-1000+7)是汇编符号,分别表示-1000+7=0FC1FH这个立即数的低位字节(1FH)和高位字节(0FCH)。
CLR EA ;禁止所有中断
CLR TR1 ;停止定时器T1
MOV A,#LOW(-1000+7) ;期望数的低位字节
ADD A,TL1 ;进行修正
MOV TL1,A ;重装载低位字节
MOV A,#HIGH(-1000+7) ;对高位字节处理
ADDC A,TH1
MOV TH1,A
SETB TR1 ;重启动定时器
SETB EA ;重开中断
此方法适用于各种原因造成的定时误差的情况,为通用方法。
2 方法2
假如定时周期为10ms,通常定时器重装载值为0D8F0H,中断子程序如下[2]:
ORL TL1,#0F0H
MOV TH1,#0D8H
这里用ORL TL1,#0F0H代替MOV TL1,#0F0H 可提高定时。此方法只适用于重装载值低位字节的低4位为零,且中断响应的延迟时间小于16个机器周期的情况。类似的定时器重装载值有0FFF0H,0FFE0H等。
3 方法3
假如定时周期为1ms,通常定时器重装载值为0FC18H,中断子程序如下:
MOV A,#LOW(-1000+4) ;期望数的低位字节
ADD A,TL1
MOV TL1,A
MOV A,#HIGH(-1000+4) ;对高位字节处理
ADDC A,TH1
MOV TH1,A
DEC TL1 ;恢复提前了的2个机器周期
这种方法中不停止定时器计数过程,若在执行指令ADDC A,TH1 或MOV TH1,A时,恰好产生TL1溢出向TH1进位的情况,则TH1的值就不对了,会产生更大的误差。为此,程序段开头为重装载值加4,若有溢出进位,则可提前发生,其中2个机器周期是考虑到为TL1重装载占用的时间。
此方法适用于系统中无其它更高优先级中断源的情况。若类似方法1,在程序段开头和结尾分别加上禁止所有中断(CLR EA)和开中断(SETB EA)指令,则将适用于所有情况。
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- Microchip 发布PIC16F13145系列MCU,促进可定制逻辑的新发展2024/4/23 15:34:17
- 什么是MCU2024/3/25 17:05:40
- 了解GD32单片机和STM32单片机2024/3/13 14:17:13
- STM32F103单片机概述2024/3/13 14:13:33
- 什么是DSP?DSP的分类2024/1/22 16:38:45
- 英特尔数据存储如何操作和实现
- 什么是微动开关_微动开关有什么用_微动开关使用方法
- VCC,VDD,VEE,VSS在电源原理图中有什么区别?
- 低压配电系统设计规范_低压配电系统设计注意事项
- xEV 主逆变器电源模块中第四代 SiC MOSFET 的短路测试
- 光耦详细应用教程
- 定义绝缘耐久性评估的电压脉冲测试要求
- 采用沟槽MOS结构,使存在权衡关系的VF和IR相比以往产品得到显著改善 ROHM推出实现业界超快trr的100V耐压SBD“YQ系列”
- NOVOSENSE - 纳芯微推出车规级温湿度传感器NSHT30-Q1,助力汽车智能化发展
- Keysight - EV 电池设计创新:扩大续航里程、延长电池寿命