|
4M晶振,如果定时器是16位,1s中断一次是达不到的;要是32为的可以;虽然说把计时放在中断中可以提高精确度,但多多少少还是有店误差的,可以通过观察,然后通过软件来校中下,这样误差就更小了引用楼主 9smile 的回复:
初看,很简单,越研究越深入,发觉越麻烦。若换成12M 或者 6M的晶振,不叫问题,but,目前要求用89C51,晶振4M,实现1s的精确定时。
我们知道 对51单片机而言,一个机器周期等于12个晶振周期,故:
若晶振为12M,1个机器周期=12*(1/12M)=1us
若晶振为 4M,1个机器周期=12*(1/4M)=3us
用Timer0,设 TMOD = 1,使之工作于16-bit timer/counter.?
一个时钟周期为3us的话 <对应晶振是4M>,如何实现1s的定时呢?
最大计时为65536*3us=196.608ms? ,无论这个值取何值,例如150ms,定时多少次,例如6次 <0.9s>或者7次 <1.05s>,怎么得到1s呢?凑不出这个整数,, < 1s/3us=1000000/3=333333.3333333333333333333333333333 >
请大家指教一二,该如何实现?
|
|