[国产单片机]

STC12C5A60S2精确定时

[复制链接]
2434|27
手机看帖
扫描二维码
随时随地手机跟帖
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
评论
huchunhb 2021-11-30 17:31 回复TA
受教了! 

相关帖子

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

帖子

2

粉丝