TH0=-50000/256;TH0=(65536-50000)/256分别什么意思

 我来答
惠企百科
2022-12-01 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部
(65536-50000)=15536,换算成16进制就是3CB0H\x0d\x0a(65536-50000)/256的结果是3CH,即一个字的高位字节。\x0d\x0a而(65536-50000)%256的结果是B0H,即一个字的低字节。\x0d\x0a单片机TH0=(65536-50000)/256;就是将定时器0(TH0)高位字节付值3CH。
cczm1
2010-08-05 · TA获得超过860个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:102万
展开全部
这是16位的定时器,最大计数2的16次方即65536。
式中的5000表示需要定时器定时一次需要计数的个数。
那么定时器的初始值就是(65536-50000)。
需要把这个初值分别赋给 TH0(高字节)TL0(低字节)
高字节就是这个数除以256,即TH0=(65536-50000)/256。
具体的结果编译器就给你计算了,这是一个省劲的写法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小灰灰的梦想0
2019-11-08 · TA获得超过711个赞
知道小有建树答主
回答量:204
采纳率:96%
帮助的人:20.9万
展开全部
如果你选的单片机的晶振一定,比如12MHZ来说吧,机器周期是1us,就是说每1us产生一次计数,就拿50ms来说,这是你想要的计时,意思是,对机器周期进行50000计数就可以得到我想要的,可T0是一个可以对机器周期能进行65536次计数,也就是说我想要的50MS不能让T0溢出,怎么办,那么先给这个定时器里面放些数,放多少,就是我们想要的50MS在加上一个多少就能等于65536,也就是65536和50000的差值,这个值就是我们说的初值。

为什么除以256,因为我们的计时器是两个8位组成的,那么要把那些差值装进这两个8位,那么低8位最多能装256个机器周期,那么256计满了就用高8位的,就是说低8位满一次高8位加1,那么高8位装多少,低8位就满了几次,算法就是用差值除一下256取其整数,剩下的,就是还剩了小于256次数的就放在低8位,就是差值的余数。如果我要放一个超过256的数,肯定是超过先放高八位,把剩下的部分放在低八位中了,TH0=(65536-50000)/256就是把TL0中放不下的部分放在THO中,再把剩下的部分放在THO中。

void timer(0) interrupt 1

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

flag++;

if(flag==20)//当定时到1秒时执行花括号里面的语句

{}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黄石佳诚家电维修
2012-10-01 · TA获得超过1427个赞
知道小有建树答主
回答量:1559
采纳率:93%
帮助的人:585万
展开全部
它们是相等的,在51单片机中是16位定时器(65535)初值的高8位,可以写成TH0=(65536-50000)/256,也可以写成TH0=-50000/256,在这它省略了65535而已.
希望能帮助到您,若再有疑问可以在追加噢,谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我不想细看
2010-08-05 · TA获得超过373个赞
知道答主
回答量:132
采纳率:100%
帮助的人:0
展开全部
(65536-50000)=15536,换算成16进制就是3CB0H
(65536-50000)/256的结果是3CH,即一个字的高位字节。
而(65536-50000)%256的结果是B0H,即一个字的低字节。
单片机TH0=(65536-50000)/256;就是将定时器0(TH0)高位字节付值3CH。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式