单片机定时器初值计算。我算的不对啊
2个回答
展开全部
你的初值是对的,而你计算的时候 错了。
TH0 = (65536-45872)/256
你要知道,它的定时总周期数是45872 ,因为定时器要从 65536-45872=19664 开始计时,要从19664计到65536 会溢出,这个间隔是45872。要弄清楚啊。
所以,45872*12/11.0592*10(-6)约= 50 MS
TH0 = (65536-45872)/256
你要知道,它的定时总周期数是45872 ,因为定时器要从 65536-45872=19664 开始计时,要从19664计到65536 会溢出,这个间隔是45872。要弄清楚啊。
所以,45872*12/11.0592*10(-6)约= 50 MS
追答
你这样只是套用公式,而且用公式时,X 应该是 19453,这还是个近似值。你要学会在实际情况下灵活运用。
我上面都说是约等于50MS了,因为你的晶振是11.0592,你用12除以它永远不是整数,怎么可能要求结果是50MS整呢。通常刚开始学习单片机时,为了计算方便,会用12M的晶振,这样你就可以把初值设置如下:
TH0 = (65536-50000)/256 ,这样12M的晶振,定时器出的结果正好是50MS整。
而你实际用11.0592M晶振时,只能要求近似等于了,就像同等情况下串口通信的波特率有误差一样。一般的控制程序中,这些细微的差别不会影响你的设计。等你熟练掌握以后,你就会明白。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询