51单片机的定时器初值到底是TH0 = (65536-x) /256;还是TH0 = (65535-x) /256;

一个无符号整形数不是从0~65535吗?怎么会有一个65536做了被减数?为什么要以65536进行相减?虽然定时差别不大,但是这个真实的被减数值到底是65536还是655... 一个无符号整形数不是从0~65535吗? 怎么会有一个65536做了被减数?
为什么要以65536进行相减?虽然定时差别不大,但是这个真实的被减数值到底是65536还是65535呢?
展开
 我来答
11kxmx
推荐于2017-10-15 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:70%
帮助的人:2419万
展开全部
应该是65536减去定时脉冲个数
16位计数器,最大可写入65535 若定时1US(假设频率是12M),即来一个脉冲就溢出了,就该写入65535 刚好65536-1=65535
(65536-x) /256是正确的 因既然要用定时器,定时时间不可能是0,所以 (65536-x) /256结果不会是256 小于256的数都是可以装入的 对于TL0同样不会是256,因256的倍数除256余数是0
其实 不管是65535还65536对TH0写入的结果是一样的
但对于TL0(或整个计数器来说)理论上有一个脉冲的差别,若定时1US的话,写入65535或65534,都不会是准确的
假设写入65535,定时器一打开,脉冲立即来到,可能不到1US,,写入65534,需两个脉冲才会溢出 时间肯定大于1US
用这种方法来实现这么小的定时,肯定是不准确的 还有中断响应时间,主程序响应时间都要考虑
而对于长时间定时,这个误差又可以忽略的
要想减小误差,就要提高晶振或系统时钟的频率,当定时脉冲个数多时,就不必纠结这一个脉冲的误差了,同时中断响应时间和中断程序处理的时间也减小了,大多数情况下是可忽略的
Smart_wolf
2015-01-14 · TA获得超过1696个赞
知道小有建树答主
回答量:1468
采纳率:50%
帮助的人:631万
展开全部
当然是65536,只有到了65536定时器才会溢出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逍123遥33
2015-01-14
知道答主
回答量:23
采纳率:0%
帮助的人:11.1万
展开全部
就是从0开始数到65535啊,这就是数了65536次啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式