找回密码
 注册
关于网站域名变更的通知
查看: 375|回复: 1
打印 上一主题 下一主题

c51单片机定时中断的精确定时编程方法总结

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-7 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
c51单片机定时中断的精确定时编程方法总结
6 {( y% V5 k: r  g& |) Q+ E: z6 a' y5 J2 A8 B$ k# B1 K
. H5 E/ @6 I$ I' D  b9 D

MCS-51单片机的中断响应延迟时间,取决于其它中断服务程序是否在进行,或取决于正在执行的是什么样的指令。单中断系统中的中断响应时间为3~8个机器周期[1]。无论是哪一种原因引起的误差,在精确定时的应用场合,必须考虑它们的影响,以确保精确的定时控制。根据定时中断的不同应用情况,应选择不同的精确定时编程方法。

文中以定时器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 u6 q7 T# \. m1 `; ]  m% g

该用户从未签到

2#
发表于 2019-3-7 22:44 | 只看该作者
楼主给力,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-30 17:42 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表