[国产单片机] STC12C5A60S2精确定时

[复制链接]
 楼主| sdwys 发表于 2013-7-21 10:10 | 显示全部楼层 |阅读模式
想精确定时就要用汇编

这是一个项目中的精确定时方式,按此思路保证能让你设定的时间准确

;-----------------------------------
;定时器中断0
;功能:定时采集脉冲
;要求:精确定时
;说明:
;晶振22.1184,时钟周期:1 000,000,000/22,118,400=45.21ns

;定时器选12分频:45.21*12=542.52ns

;中断周期:100us
;中断次数:100,000ns/542.52ns=184.32=184次
;定时器初值:65536-184=65352=FF48H,实际定时时间542.52ns*184=99,823.68ns

;对定时时间的影响因素:
;1、中断响应最小(1+6=7时钟周期)
;2、跳转指令LJMP(4时钟周期)
;3、入栈指令PUSH ACC(4时钟周期),PUSH PSW(4时钟周期)
;4、关总中断指令CLR EA(4时钟周期)
;5、定时器装载初值2条指令,(2*3=6时钟周期)

;共计:7+4+4+4+4+6=25
;耗时:25*45.21ns=1130.25ns=1.13025us
;1次中断耗时:99.82368us+1.13025us=100.95393us
;1秒钟中断次数:1S/100.953us=9905.5996=9906=26B2H,实际时间100.953us*9906=1000,040.418us,每秒误差约40.418us

评论

受教了!  发表于 2021-11-30 17:31
Aidaohuakai 发表于 2013-7-27 13:13 | 显示全部楼层
楼主厉害!
lydmom 发表于 2013-7-28 15:37 | 显示全部楼层
历害,学习学习。楼主汇编学得好哈
大山的魂 发表于 2013-8-30 17:15 | 显示全部楼层
精品啊
lanqiao1026 发表于 2013-8-30 17:37 | 显示全部楼层
你确定一定准吗?
片羽之神 发表于 2013-9-4 15:46 | 显示全部楼层
楼主很细致啊!支持!
 楼主| sdwys 发表于 2013-9-5 15:52 | 显示全部楼层
定时时间一定准,这在实际项目中已经得到验证。
opal11 发表于 2013-9-5 23:32 | 显示全部楼层
细致。
yjz101 发表于 2013-9-7 15:46 | 显示全部楼层
参考OK!
opal11 发表于 2013-9-13 20:59 | 显示全部楼层
支持。
McuPlayer 发表于 2013-9-14 01:05 | 显示全部楼层
建议楼主使用定时器自动加载,这样虽然有误差,但误差不会积累
urcllr 发表于 2013-9-15 08:48 | 显示全部楼层
精确定时,除了程序精确控制外,晶振温漂也很重要,一般买的那些石英晶体,同一个程序,夏天走慢些,冬天走快些,一年下来,最快最慢相差十几分钟的
lyjian 发表于 2021-11-30 19:40 | 显示全部楼层
精确定时和汇编没有必然关系。
用C用11楼做法不会有区别
lyjian 发表于 2021-11-30 19:42 | 显示全部楼层
本帖最后由 lyjian 于 2021-12-1 07:26 编辑

精确定时菜鸟才用这种方法
lyjian 发表于 2021-11-30 21:15 | 显示全部楼层
本帖最后由 lyjian 于 2021-11-30 21:16 编辑

100uS*22.1284MHz*25=55296=2212*21+2211*4
定时器自动重装方式,开始每2212个时钟周期中断一
次,21次后切到2211个时钟周期中断一次,4次后切回
2212个时钟周期中断一次.....  
每2.5mS零误差,1S零误差。
lyjian 发表于 2021-11-30 22:36 | 显示全部楼层
STC12C5A60S2中断响应时间最短7T最长17T。这种方法注定就和精确扯不上关系。
ayb_ice 发表于 2021-12-1 16:58 | 显示全部楼层
这怎么可能精确呢,中断还受当前指令的影响(不同的指令执行时间有区别),也受更高级中断的影响,还有可能用户临时关中断,这些都有影响
lyjian 发表于 2021-12-1 23:15 | 显示全部楼层
ayb_ice 发表于 2021-12-1 16:58
这怎么可能精确呢,中断还受当前指令的影响(不同的指令执行时间有区别),也受更高级中断的影响,还有可能 ...

还真的可以精确。
ayb_ice 发表于 2021-12-2 08:34 | 显示全部楼层
lyjian 发表于 2021-12-1 23:15
还真的可以精确。

如果真的精确,就没有必要搞自动重装载了
lyjian 发表于 2021-12-2 12:48 | 显示全部楼层
ayb_ice 发表于 2021-12-2 08:34
如果真的精确,就没有必要搞自动重装载了

自动重装载的优点是可以省去软件处理,但这不代表只有自动重装载才能做到精确。
不用自动重装载加点软件技巧也是一样可以做到精确滴。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

436

帖子

3

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