大家好,关于51单片机定时器问题,定时不精准,差不多30s就有一秒的误差,很多朋友都还不太明白,今天小编就来为大家分享关于数字定时误差检测算法的知识,希望对各位有所帮助!
本文目录
51单片机定时器问题,定时不精准,差不多30s就有一秒的误差,51单片机内置定时器制作计时的误差怎么产生的。51单片机定时器问题,定时不精准,差不多30s就有一秒的误差,65536-46080=19456个机器周期。
你使用11.0592M,如果单片机是12T的话,那就是每秒有11059200/12=921600个周期
19456/921600=0.0211111秒
再加上你在中断函数中到TH0,TL0赋值的操作,包括,跳转,关键数据入栈,TH0,TL0赋值等的时间。
换句话说,你一次中断大概是0.021120秒
接下来,你就自己算吧
51单片机内置定时器制作计时的误差怎么产生的。首先,单片机定时器的记数的频率是由单片机的时钟频率所决定的,而单片机的时钟频率是由外部晶振或内部震荡电路所决定的。不管是外部晶振还是内部晶振,本身都是有误差的!然后又受外部的温度、湿度、电磁干扰的影响,他们的频率也是在变化的。这是无法避免的。然后,人在操作时也是有误差的,例如51单片机工作在模式1的16位的定时器。当发生定时中断后,要重装定时器的初值,而执行这两条指令也是要花时间的。这个误差很小,可以忽略。最后就是当你的中断函数过长,其执行时间已经超过了定时周期,这时候将会丢失中断。因为在发生下一次中断的时候,而CPU还在执行本次的中断服务程序。由于同优先级的中断不能被打断,所以就会丢失中断信号,这是产生了错误,而非误差,所以中断函数尽量短!
OK,关于51单片机定时器问题,定时不精准,差不多30s就有一秒的误差,和数字定时误差检测算法的内容到此结束了,希望对大家有所帮助。