单片机的定时器C语言编程中:TH0与TL0为什么是TH0=(65536-50000)/256;TL0=(65536-50000)%256 ?

这个256是表示啥意思?... 这个256是表示啥意思? 展开
 我来答
阑珊处的野狗
高粉答主

2019-07-14 · 关注我不会让你失望
知道答主
回答量:562
采纳率:0%
帮助的人:14.3万
展开全部

1、首先第一步要定时器0设置于模式1时,然后由高8位TH0和低8位TL0两个8位寄存器组成,注意的是当设定计算值为65536-50000=15536(D)时,转换为十六进制就是3CB0(H),此时,TH0=3C,TL0=B0分别装入就可以了。

2、接这就是采用“TH0=(65536-50000)/256;TL0=(65536-50000)%256“的编程方式,然后这时候就可以去让单片机自己去计算结果。

3、最后一步就是将定时的时间分别存在高八位的th0和低八位的tl0,2的八次方就是256了,然后要除以256是得到高八位,这时候就可以和256求余就是得到低八位即可。

wannenggong9559f
生活家

推荐于2017-09-10 · 关注于个人成长
知道大有可为答主
回答量:3691
采纳率:82%
帮助的人:637万
展开全部
标准答案:定时器0设置于模式1时,计数寄存器为16位模式,由高8位TH0和低8位TL0两个8位寄存器组成,当设定计算值为65536-50000=15536(D)时,转换为十六进制就是3CB0(H),此时,TH0=3C,TL0=B0分别装入即可,为了免除这些计算步骤,很多编程者采用“TH0=(65536-50000)/256;TL0=(65536-50000)%256“的编程方式,去让单片机自己去计算结果,那么为什么要介入256呢?其实并不难理解,做一下10——16进制的换算就知道了,256(D)=0100(H),这里01就是高8位的数据,00就是低8位的数据,通俗点说,15536(D)里有多少个256,就相当于高8位有多少数值,就是除的关系了,商存入高8位寄存器后余下的数存入低8位即可,取商计算就是TH0=(65536-50000)/256;而取余计算就是TL0=(65536-50000)%256 。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
镭毅
2012-09-01 · TA获得超过1394个赞
知道大有可为答主
回答量:1155
采纳率:0%
帮助的人:1081万
展开全部
单片机的定时器是32位,TH0和TL0分别是0号定时器的高八位和低八位。

由于单片机是八位的,不能一次对32位赋值,要分两次赋值。

TH0=(65536-50000)/256是取32位数的高八位,赋值给TH0
TL0=(65536-50000)%256 是取32位数的低八位,赋值给TL0

256是八位二进制数的最大数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笨笨wb
2012-09-01 · TA获得超过301个赞
知道答主
回答量:108
采纳率:0%
帮助的人:81.3万
展开全部
这是将定时的时间分别存在高八位的th0和低八位的tl0,2的八次方就是256了,除以256是得到高八位,和256求余就是得到低八位,举个例子,42和10求余得到的是2,42除以10则得到4,这分别就将42的十分和个位求出来了……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ywhjp
2012-09-01 · TA获得超过1299个赞
知道小有建树答主
回答量:1002
采纳率:60%
帮助的人:426万
展开全部
因为一个字节最大只能表示256个数, 现在是要把TH0 TL0看成一个整型, 最大范围为65536
所以要把高字节放在高位TH0, 把低字节放在TL0中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式