myqiang1990 发表于 2011-6-28 07:09:27

一直困扰我的一个51问题

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

catwill 发表于 2011-6-28 07:12:21

%是取余数吧?

myqiang1990 发表于 2011-6-28 07:30:41

回复【1楼】catwill
-----------------------------------------------------------------------

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

yoko 发表于 2011-6-28 07:44:37

说通俗点,一个字节最大可以表示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,说得很罗嗦, 不知道你理解没有。

geniuskim 发表于 2011-6-28 07:47:21

POW(2,8)=256

YL_L 发表于 2011-6-28 07:50:02

① TH0,TL0是八位的寄存器 最大值为0xFF(255)
② 对于任意一个数 Num它的个位数是Num%10
                     它的十位数是Num/10

如果理解这些就会理解上面的

myqiang1990 发表于 2011-6-28 08:36:10

回复【3楼】yoko
-----------------------------------------------------------------------

O.O...这就有点明了了。。。。

LitePuter_uvn 发表于 2011-6-28 08:37:27

回复【5楼】YL_L
① th0,tl0是八位的寄存器 最大值为0xff(255)
② 对于任意一个数 num它的个位数是num%10
                     它的十位数是num/10
如果理解这些就会理解上面的
-----------------------------------------------------------------------

ls解释的太透彻了

comway 发表于 2011-6-28 10:26:11

这个不困惑吧,很直白了

eryueniao 发表于 2011-6-28 12:25:43

hehe

whhityang 发表于 2011-6-28 13:20:21

3楼解释的清晰明了,so good

nan_banqiu 发表于 2011-6-28 14:26:27

新手 努力!!

xiaobendan 发表于 2011-6-28 14:51:49

是编译器预处理时就计算了的,没什么秘密的

keen9327 发表于 2011-6-28 16:20:35

说明你对2进制,8进制,16进制理解和使用习惯还没到像10进制的那种地步
忘记10进制吧

liyang0727 发表于 2011-6-28 19:42:59

取余是得到不足256的部分即后8位

defection 发表于 2011-7-6 22:13:48

一个数对2^8(既256)进行求余,余数不是那个数的低8位吗

xts 发表于 2012-10-17 12:44:22

yoko 发表于 2011-6-28 07:44 static/image/common/back.gif
说通俗点,一个字节最大可以表示0XFF,即255,从0-255共256个数,那么51的定时器是16位的,也就是2个字节, ...

解释得真好,学习了!
页: [1]
查看完整版本: 一直困扰我的一个51问题