找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

关於51定时器的初值设置的(包括许多教科书)误区

[复制链接]
admin 发表于 2012-9-2 11:09:02 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

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

×
51单片机T0或T1定时器做时钟计时,大都是直接设置成需要的数值(包括许多教科书),比如" MOV T0L,(65536-50000)MOD 256",其实这里有不小的误差。
从溢出中断向量000BH或001BH跳转语句 JMP ****,要用2个周期,
重装初值语句 MOV T0L, #****,(MOV T0H, #**** ,在後) ,又是2个周期,
如果先 MOV T0H, #**** ,然後再 MOV T0L, #****,又多两个周期。
如果是 " MOV T0L,(65536-50000)MOD 256",则慢了(4~6)/5000 ,
如果更小 比如 " MOV T0L,(65536-10000)MOD 256",则慢了 (4~6)/10000 ,
这样的误差也许有些场合可以容许,但是如果作准确计时,则显得误差太大了,10000~50000分钟慢1分钟,大概不好接受。
如果做实验的话,可以用8952系列的,同时启动T0和T2,T2采用自装载模式,在仿真时 可以发现T2 每次中断一个周期不错,
而T0每次多出4、5、6个周期,(到现在为止,多出5个周期的原因我仍没找出原因)。
根据以上,如果使用 T0 或 T1 ,在设置初值时,应增加4~5个周期,如果先重装 T0H 的话,需要增加5~6个周期。
如:
CTC0:
MOV T0L, (65536-50000+4)MOD 256 ;(先装)
MOV T0H, (65536-50000+4)/256
这样可以保证计时器的精确度和 T2 自装载模式相同。

[ 此帖被ahshmj在2011-02-09 14:30重新编辑 ]
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 20:37 , Processed in 0.050351 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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