本文包含原理图、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重新编辑 ] |