单片机定时里 TH0=(65536-45872)/256; TL0=(65536-45872)%256; 这两句 为什么每算完一次就是50MS?

里面的(65536-45872)是什么意思/256和%256又是为什么干什么用?请帮忙解答一下!... 里面的(65536-45872)是什么意思 /256和%256又是为什么 干什么用? 请帮忙解答一下! 展开
 我来答
帐号已注销
2020-01-17 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:167万
展开全部

/256和%256 是用于计算TH,和TL的值。即高8位,和低8位。

要了解定时器计数一次是多久,例如:定时器对系统时钟计数,系统时钟周期1US,那么定时器1US计数一次。要计数1MS,那么就计数1000次,计算方法:

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

依次类推。

50MA定时初值应该是50000,但考虑到中断延迟,故把常数改为了45872。

前一个求商后赋值给TH0,后一个求余数赋值给TL0

相当于:

TH0=(65536-100)>>8,所以得到16位的高八位。

TL0=(65536-100)&0x00ff,所以得到16位的低八位。

TH0=(65536-100)/256 ;//这是定时100us时高8位的值。

TL0=(65536-100)%256;//这是定时100us时低8位的值。

扩展资料:

(1)单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分方便,可以模块化应用。

(2)单片机有着较高的集成度,可靠性比较强,即使单片机处于长时间的工作也不会存在故障问题。

(3) 单片机在应用时低电压、低能耗,是人们在日常生活中的首要选择, 为生产与研发提供便利。

(4)单片机对数据的处理能力和运算能力较强,可以在各种环境中应用,且有着较强的控制能力。

参考资料来源:百度百科-单片原理

wannenggong9559f
生活家

推荐于2018-02-27 · 关注于个人成长
知道大有可为答主
回答量:3691
采纳率:82%
帮助的人:658万
展开全部
首先说45872为什么是50MS的赋值,这是因为当T0中断函数中内容很多事势必会占用运行时间,从而影响了T0的定时时间,所以,如果是通过T0编程的时钟程序,要想准确,几乎没有赋值50000或其他别人确定的值而延时50MS的,都是自己经过一次次的校准才确定的值;其次,/256;%256的问题我在这里的回答说的极其详细,不妨去看看吧。http://zhidao.baidu.com/question/472019671?&oldq=1
更多追问追答
追问
原来如此 这个我搞懂了 但是我又不明白他得出来的数有什么用? 得到50ms的原因是什么? 就如(65536-50000)/256 得到的商是60 (65536-50000)%256 得到余数6875 那得到这些数据又有什么用?
追答
“定时器0设置于模式1时,计数寄存器为16位模式,由高8位TH0和低8位TL0两个8位寄存器组成,”

*******“商存入高8位寄存器, 余下的数存入低8位即可,”**************你还是点开连接看看吧,肯定能看懂的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2013-07-05 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
定时器T0的计数单元是TH0、TL0。

这两条:
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
是对定时器T0,写入初始值。

(65536-45872)是什么意思 ?
65536 - 45872 = 19664,19664 是初始值。

/256和%256又是为什么 干什么用?
/256 是取 19664 的高八位;
%256 是取 19664 的低八位;

这两句,为什么每算完一次就是50MS?
这和单片机的晶振有关。

写入后,T0 即从 19664 开始加一,加了 45872 次,就会溢出,产生中断。
加了 45872 次,就是50MS?
这和单片机的晶振有关。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一万光年MEGn0
2018-07-05 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1073万
展开全部
/256和%256 是用于计算TH,和TL的值。即高8位,和低8位。
首先要了解定时器计数一次是多久,例如:定时器对系统时钟计数,系统时钟周期1US,那么定时器1US计数一次。要计数1MS,那么就计数1000次,计算方法:
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
依次类推。
50MA定时初值应该是50000,但考虑到中断延迟,故把常数改为了45872
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式