问个关于定时器的问题

[复制链接]
 楼主| dream1231 发表于 2007-10-27 00:08 | 显示全部楼层 |阅读模式
   TH0=-50000/256;
   TL0=-50000%256;
TH0 TL0结果是什么??
ayb_ice 发表于 2007-10-27 07:56 | 显示全部楼层

书看少了

ayb_ice 发表于 2007-10-27 08:35 | 显示全部楼层

等于下面

   TH0=(65536-50000) / 256;
   TL0=(65536-50000) % 256;
 楼主| dream1231 发表于 2007-10-27 10:06 | 显示全部楼层

问个关于定时器的问题

就是根据上面作出来是3CB0

但是用keil反汇编后是3DB0怎么回事?????
linqing171 发表于 2007-10-27 10:10 | 显示全部楼层

不应该啊。

莫非编译器是按照
 TH0=256-50000/ 256;
计算的?
这样就会少个1。
或者编译器看你是负的给你加一个?

问一句,你为什么要用负的?
 楼主| dream1231 发表于 2007-10-27 10:18 | 显示全部楼层

问个关于定时器的问题

用上面公式的结果如图:

计算结果应该是D80B才对啊???????
 楼主| dream1231 发表于 2007-10-27 10:21 | 显示全部楼层

问个关于定时器的问题

回复5楼:
那也不应该是TH0高位多个1?
 楼主| dream1231 发表于 2007-10-27 13:44 | 显示全部楼层

问个关于定时器的问题

??
沈老 发表于 2007-10-27 14:02 | 显示全部楼层

负数除正数=负数!

-50000/256=-195.3125;
195=C3;
负数在计算机内用补码表示:
-195的补码=C3的反码+1=3D !!!!
应该这样:
    TH0=-50000 >> 8;//0x3CB0
    TL0=-50000 & 0xFF;
或:
    TH0=((unsigned int)-50000)/256;//0x3CB0
    TL0=((unsigned int)-50000)%256;
 楼主| dream1231 发表于 2007-10-27 14:24 | 显示全部楼层

原来是符号数转换问题!!

Thank You!!!
ayb_ice 发表于 2007-10-27 15:12 | 显示全部楼层

我一般用减法而不用负数,所有没有问题。。。

等一下去验证一下。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部