发 帖  
原厂入驻New
[问答]

求解答一个困扰我的51定时器问题

3021 计算器 定时器
分享
      51定时器初值计算比如TH0=(65536-50000)/256;TL0=(65536-50000)%256;以前我从来没这样用过,我直接用计算器算的,但是很久以前我看过别人这么算!我就郁闷了好久,后来没多想,就忘记了,但是今天我突然看就又有人这么写。。所以想问个彻底明白。。。为何/256就得高8位??%256就得第八位??。。。。/256还好理解:相当于右移8位,当然得到高8位。。。但是%256为何就能直接得到低8位??原理是什么?谁能解释一下?比画比画一下。。。
1
2011-6-29 15:45:08   评论 分享淘帖 邀请回答

相关问题

7个回答
2011-6-29 15:46:39 评论

举报



hands 发表于 2011-6-29 15:46
%是表示取余数吧。



为什么要选择256求余?其实最不明白的是为何对256求余就会得到低8位?它的过程是怎么样的??、、、这点难理解。。。/256倒是比较好理解。。右移8位..直接得到高8位
2011-6-29 15:48:34 评论

举报

一个字节最大可以表示0XFF,即255,从0-255共256个数,那么51的定时器是16位的,也就是2个字节,我们暂用H表示高字节,L表示低字节,用HL表示一个16位的整数;那么当L递增到255+1时,就会向H进位,这时L==0, H==1, 可以看出H是以每256加1的,以此类推 当 H=255,L=255,再递增就都溢出变成0了,H==0,L==0;  HL/256整除就得到了高位的字节H,相当于表示有多少个256, HL%256求余数就得到了 低位字节L. 逆过程就是 HL==H*256+L,也可以像你理解的这种形式,HL=H, HL=HL<<8|L
2011-6-29 15:49:32 评论

举报

本帖最后由 suae 于 2011-6-29 15:51 编辑

楼上说的很透彻明了了。
① TH0,TL0是八位的寄存器 最大值为0xFF(255)
② 对于任意一个数 Num  它的个位数是Num%10
                       它的十位数是Num/10

如果理解这些就会理解上面的
2011-6-29 15:50:45 评论

举报

这样就有点明白了。谢谢大家 。
2011-6-29 15:52:17 评论

举报

T0计数器是16位,是由TH0和TL0构成,而TH0,TL0是8位,也就是如果满256就要向高位进位。也可以从十进制数来理解从0开始加,到9就要进位。比如35,那么它的个位数=35%10,十位数=35/10;同理对一个十六进制数0xff00;  低位数=0XFF00%256 , 高位数=0XFF00/256;
2011-11-10 19:55:46 评论

举报



assingle 发表于 2011-6-29 15:49
一个字节最大可以表示0XFF,即255,从0-255共256个数,那么51的定时器是16位的,也就是2个字节,我们暂用H ...



{:soso_e128:}讲的很好, 楼主这应该明白了
2011-11-20 14:38:12 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
我要提问
关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表