单片机定时中断的精确定时编程方法种种.doc

单片机定时中断的精确定时编程方法种种.doc

ID:59300074

大小:16.01 KB

页数:3页

时间:2020-09-06

单片机定时中断的精确定时编程方法种种.doc_第1页
单片机定时中断的精确定时编程方法种种.doc_第2页
单片机定时中断的精确定时编程方法种种.doc_第3页
资源描述:

《单片机定时中断的精确定时编程方法种种.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、单片机定时中断的精确定时编程方法种种引言  MCS-51单片机的中断响应延迟时间,取决于其它中断服务程序是否在进行,或取决于正在执行的是什么样的指令。单中断系统中的中断响应时间为3~8个机器周期[1]。无论是哪一种原因引起的误差,在精确定时的应用场合,必须考虑它们的影响,以确保精确的定时控制。根据定时中断的不同应用情况,应选择不同的精确定时编程方法。  文中以定时器T1工作在定时方式1为例,晶振频率为12MHz。1方法1  在定时器溢出中断得到响应时,停止定时器计数,读出计数值(反映了中断响应的延迟时间),根据此计数值算出到下一次中断时,需多长时间,由此来重装载和启动定时器。例如

2、定时周期为1ms,则通常定时器重装载值为-1000(0FC18H)。下面的程序在计算每个定时周期的精确重装载值时,考虑了由停止计数(CLRTR1)到重新启动计数(SETBTR1)之间的7个机器周期时间。程序中#LOW(-1000+7)和#HIGH(-1000+7)是汇编符号,分别表示-1000+7=0FC1FH这个立即数的低位字节(1FH)和高位字节(0FCH)。作者:■南京农业大学蹇兴亮引言  MCS-51单片机的中断响应延迟时间,取决于其它中断服务程序是否在进行,或取决于正在执行的是什么样的指令。单中断系统中的中断响应时间为3~8个机器周期[1]。无论是哪一种原因引起的误差,

3、在精确定时的应用场合,必须考虑它们的影响,以确保精确的定时控制。根据定时中断的不同应用情况,应选择不同的精确定时编程方法。  文中以定时器T1工作在定时方式1为例,晶振频率为12MHz。1方法1  在定时器溢出中断得到响应时,停止定时器计数,读出计数值(反映了中断响应的延迟时间),根据此计数值算出到下一次中断时,需多长时间,由此来重装载和启动定时器。例如定时周期为1ms,则通常定时器重装载值为-1000(0FC18H)。下面的程序在计算每个定时周期的精确重装载值时,考虑了由停止计数(CLRTR1)到重新启动计数(SETBTR1)之间的7个机器周期时间。程序中#LOW(-1000+

4、7)和#HIGH(-1000+7)是汇编符号,分别表示-1000+7=0FC1FH这个立即数的低位字节(1FH)和高位字节(0FCH)。......CLREA;禁止所有中断CLRTR1;停止定时器T1MOVA,#LOW(-1000+7);期望数的低位字节ADDA,TL1;进行修正MOVTL1,A;重装载低位字节MOVA,#HIGH(-1000+7);对高位字节处理ADDCA,TH1MOVTH1,ASETBTR1;重启动定时器SETBEA;重开中断......  此方法适用于各种原因造成的定时误差的情况,为通用方法。2方法2  假如定时周期为10ms,通常定时器重装载值为0D8F0

5、H,中断子程序如下[2]:ORLTL1,#0F0HMOVTH1,#0D8H......  这里用ORLTL1,#0F0H代替MOVTL1,#0F0H可提高定时精度。此方法只适用于重装载值低位字节的低4位为零,且中断响应的延迟时间小于16个机器周期的情况。类似的定时器重装载值有0FFF0H,0FFE0H等。3方法3  假如定时周期为1ms,通常定时器重装载值为0FC18H,中断子程序如下:MOVA,#LOW(-1000+4);期望数的低位字节ADDA,TL1MOVTL1,AMOVA,#HIGH(-1000+4);对高位字节处理ADDCA,TH1MOVTH1,ADECTL1;恢复提前

6、了的2个机器周期......  这种方法中不停止定时器计数过程,若在执行指令ADDCA,TH1或MOVTH1,A时,恰好产生TL1溢出向TH1进位的情况,则TH1的值就不对了,会产生更大的误差。为此,程序段开头为重装载值加4,若有溢出进位,则可提前发生,其中2个机器周期是考虑到为TL1重装载占用的时间。  此方法适用于系统中无其它更高优先级中断源的情况。若类似方法1,在程序段开头和结尾分别加上禁止所有中断(CLREA)和开中断(SETBEA)指令,则将适用于所有情况。4方法4  假如定时周期不确定,只知道定时器重装载值存放在寄存器R3、R2中,中断子程序如下:MOVA,#05H;

7、3个机器周期装载TL1,2个周期提前ADDA,TL1ADDA,R2MOVTL1,AMOVA,R3;处理高位字节ADDCA,TH1MOVTH1,ADECTL1;恢复提前了的2个机器周期......  此法适用于定时周期不确定的情况,其它同方法3。5方法5  当定时中断发生的位置可预知时,通常出现在主程序的AJMP$(或SJMP$)等待指令处,中断延迟时间为3个或4个机器周期。取固定值4可简化补偿程序。以定时周期1ms为例,中断子程序如下:ORG001BHMOVTL1,#LOW(-1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。