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

 我来答
意法半导体(中国)投资有限公司 2020-01-15
展开全部
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
wjfhsym
2015-04-01 · TA获得超过946个赞
知道小有建树答主
回答量:475
采纳率:85%
帮助的人:308万
展开全部
你的初值是对的,而你计算的时候 错了。
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晶振时,只能要求近似等于了,就像同等情况下串口通信的波特率有误差一样。一般的控制程序中,这些细微的差别不会影响你的设计。等你熟练掌握以后,你就会明白。
意法半导体(中国)投资有限公司
2020-01-15 广告
就51单片机而言,定时器只有8位和16位两种,没达到“各种”那么多。而计算初值的方法是相同的,区别只是8位数是用256作基数,16位用6536作基数。根据晶振频率计算机周期,Tc=12/fosc,设定时的时间为Td,则初值X=基数-Td/T... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
天云小店
2015-04-01 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:797万
展开全部
不用拿65536去减,因为初值的意思是时钟脉冲到了45872个后就等于是到了50ms,所以没必要用65536去减
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式