一直困扰我的一个51问题

2020-02-03 10:08发布

51定时器初值计算比如TH0=(65536-50000)/256;TL0=(65536-50000)%256;以前我从来没这样用过,我直接用计算器算的,但是很久以前我看过别人这么算!我就郁闷了好久,后来没多想,就忘记了,但是今天我突然看就又有人这么写。。所以想问个彻底明白。。。为何/256就得高8位??%256就得第八位??。。。。/256还好理解:相当于右移8位,当然得到高8位。。。但是%256为何就能直接得到低8位??原理是什么?谁能解释一下?比画比画一下。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
17条回答
yoko
2020-02-03 15:16
说通俗点,一个字节最大可以表示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,说得很罗嗦, 不知道你理解没有。

一周热门 更多>