打印

关于计数器的返回值问题,

[复制链接]
1877|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zifeiyuuuu|  楼主 | 2009-6-25 11:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请温下面这段怎么理解啊.
return (TH1*256+TL1) ;       /*返回计数值到count*/
计数器1 计数结果 放在TH1和TL1里面,  比如 0X2323
按上面的公式 是23×256+23=5911 即count==5911

如果按照 16进制算 是 2*16*16*16+3*16*16+2*16+3  2个 结果明显 不相等啊, 请问各位 这个是怎么理解的。

谢谢你的回答 首先。。

还是不很理解,为什么返回值要做这样的处理,请问可以详细点说明一下吗?  我开始以为这样做是为了转变成10进制的数,现在不是,请问能详细说明一下为什么这么处理吗?谢谢。。。!~!_!~     ^_^

   

相关帖子

沙发
smileagain| | 2009-6-25 12:08 | 只看该作者

不是23×256+23

0x2323应该理解为0x23×256+0x23
注意0x23不等于十进制中的23

使用特权

评论回复
板凳
zifeiyuuuu|  楼主 | 2009-6-26 10:37 | 只看该作者

关于计数器的返回值问题

谢谢你的回答 首先。。

还是不很理解,为什么返回值要做这样的处理,请问可以详细点说明一下吗?  我开始以为这样做是为了转变成10进制的数,现在不是,请问能详细说明一下为什么这么处理吗?谢谢。。。!~!_!~     

使用特权

评论回复
地板
zifeiyuuuu|  楼主 | 2009-6-26 13:44 | 只看该作者

关于计数器的返回值问题

没人吗?  希望大家能解答我的疑问,谢谢了 。。。

使用特权

评论回复
5
zifeiyuuuu|  楼主 | 2009-6-30 09:24 | 只看该作者

关于计数器的返回值问题

搞明白了,上面那位说的是对的,首先23都要转化为十进制,乘256,即可得到十进制的count了.......

使用特权

评论回复
6
lelee007| | 2009-6-30 09:37 | 只看该作者

0x2323里边的TH1中的23是16进制,怎么能直接用来*256了?

你是说TH1*256是为什么吧?

TL1和TH1都是8位寄存器,51中除了DPTR是16位寄存器,其他都是8位寄存器

51的定时/计数器是16位的,但是没有16位的寄存器来存放计数值,所以就用TL1和TH1两个8位寄存器来拼成16位寄存器,TL1中存放16位计数值中的低8位,TH1存放计数值的高8位

所以要得到实际计数值,需要将TH1左移8位,然后加上TL1中的数值

TH1<<8 等价于 TH1*256,而且C51编译器也会将TH1*256编译为TH1<<8

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

96

帖子

0

粉丝