搜索
bottom↓
回复: 17

一直困扰我的一个51问题

[复制链接]

出0入0汤圆

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2011-6-28 07:12:21 | 显示全部楼层
%是取余数吧?

出0入0汤圆

 楼主| 发表于 2011-6-28 07:30:41 | 显示全部楼层
回复【1楼】catwill  
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 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,说得很罗嗦, 不知道你理解没有。

出0入0汤圆

发表于 2011-6-28 07:47:21 | 显示全部楼层
POW(2,8)=256

出0入0汤圆

发表于 2011-6-28 07:50:02 | 显示全部楼层
① TH0,TL0是八位的寄存器 最大值为0xFF(255)
② 对于任意一个数 Num  它的个位数是Num%10
                       它的十位数是Num/10

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

出0入0汤圆

 楼主| 发表于 2011-6-28 08:36:10 | 显示全部楼层
回复【3楼】yoko  
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2011-6-28 08:37:27 | 显示全部楼层
回复【5楼】YL_L
① th0,tl0是八位的寄存器 最大值为0xff(255)
② 对于任意一个数 num  它的个位数是num%10
                       它的十位数是num/10
如果理解这些就会理解上面的
-----------------------------------------------------------------------

ls解释的太透彻了

出0入0汤圆

发表于 2011-6-28 10:26:11 | 显示全部楼层
这个不困惑吧,很直白了

出0入0汤圆

发表于 2011-6-28 12:25:43 | 显示全部楼层
hehe

出0入0汤圆

发表于 2011-6-28 13:20:21 | 显示全部楼层
3楼解释的清晰明了,so good

出0入0汤圆

发表于 2011-6-28 14:26:27 | 显示全部楼层
新手 努力!!

出0入0汤圆

发表于 2011-6-28 14:51:49 | 显示全部楼层
是编译器预处理时就计算了的,没什么秘密的

出0入0汤圆

发表于 2011-6-28 16:20:35 | 显示全部楼层
说明你对2进制,8进制,16进制理解和使用习惯还没到像10进制的那种地步
忘记10进制吧

出0入0汤圆

发表于 2011-6-28 19:42:59 | 显示全部楼层
取余是得到不足256的部分即后8位

出0入0汤圆

发表于 2011-7-6 22:13:48 | 显示全部楼层
一个数对2^8(既256)进行求余,余数不是那个数的低8位吗

出0入0汤圆

发表于 2012-10-17 12:44:22 | 显示全部楼层
yoko 发表于 2011-6-28 07:44
说通俗点,一个字节最大可以表示0XFF,即255,从0-255共256个数,那么51的定时器是16位的,也就是2个字节, ...

解释得真好,学习了!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 15:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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