定时器时间设置八小时

51单片机的定时器可以设置八小时吗,如果可以误差会有多少? 如果不可以那可以用什么来定时设置八小时

我记得51好像定时器最大好像是定时72ms吧。你可以建立一个定时器中断,定时40ms,每过40ms进入一次中断。中断里面有一个变量count(名字随便取),然后每次中断++一次。再写一个if判断count是否大于720000的,8h等于28800s,也就是28800000ms,除以40就是720000。这样就不那么准确的定时了8h,为什么说不准确,因为51定时器有一定的偏差,执行++程序和if需要一点点时间,当你定时时间越长,偏差放大越大,所以偏差可能还是比较大

定时器不可以设置8小时
可以用定时器中断,在中断里计数累加,这样就能设置很长时间的定时,甚至长达很多年。
定时器中断的计时精度还是蛮高的,一般经过校准后能达到一天小于一秒的定时误差。

你如果要定时8小时,说明不在意差个1、2秒的,你在意的是误差不要累计下去越差越多
那么其实你定时去读系统时间就好了呀,系统时钟一般来说每个月误差几秒吧
如果是固定每8小时干一些什么事,那直接判断小时%8==0即可,再设置hour变量来记录当前的小时,变化了才再次判断并执行,避免同一个小时里多次执行
如果只是从当前时间开始延时8小时做一些事情,那记录下当前时间,再用系统时钟去和当前时间相减比较即可

不建议用单片机来定时,误差太大,可以用其他的RTC芯片。

51单片机计时器如果采用自重装方式,可实现200多us一次的中断,在中断中计算次数即可。因为是自重装方式,不会带来额外的误差,此时的误差跟晶振误差一致,基本是±20ppm,即百万分之二十。如果采用非自重装方式,误差就大了,因为每次进入中断再设置初值会有计数损失。