单片机定时器初值计算。我算的不对啊

 我来答
wjfhsym
2015-04-01 · TA获得超过946个赞
知道小有建树答主
回答量:475
采纳率:85%
帮助的人:305万
展开全部
你的初值是对的,而你计算的时候 错了。
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晶振时,只能要求近似等于了,就像同等情况下串口通信的波特率有误差一样。一般的控制程序中,这些细微的差别不会影响你的设计。等你熟练掌握以后,你就会明白。
天云小店
2015-04-01 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:785万
展开全部
不用拿65536去减,因为初值的意思是时钟脉冲到了45872个后就等于是到了50ms,所以没必要用65536去减
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式