打印

请问老农,你的教材好像有点问题。

[复制链接]
1776|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
emailli|  楼主 | 2007-8-23 09:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*********************************************************************/
在SysTimer.h文件中有这样一个定义

#define T0PRELOAD_22M 144L

1、敢问144L是什么意思?

/*********************************************************************/
16为定时器的高位预装值你是这样计算的
sInSysTimer.sT0_PreLoad = (~mPreLoad) + 1;  //T0高位预装值

2、可是高位预装值应该是要取高八位。我这里实在很难看出怎么取的高八位。

/*********************************************************************/
还请不吝赐教!


谢谢!

相关帖子

沙发
computer00| | 2007-8-23 09:09 | 只看该作者

144L表示这个数是long int型的...

使用特权

评论回复
板凳
emailli|  楼主 | 2007-8-23 09:31 | 只看该作者

哦。明白了。可以编译。

但是时间常数的计算好像不对啊。

使用特权

评论回复
地板
hotpower| | 2007-8-24 03:54 | 只看该作者

取反加一是取负数~~~(A人都知道~~~)

因为51的timer都是+1器.

sInSysTimer.sT0_PreLoad = (~mPreLoad) + 1;  //T0高位预装值

实际为:

sInSysTimer.sT0_PreLoad = 0 - mPreLoad;  //T0高位预装值

这是所长在诱导呀~~~

使用特权

评论回复
5
emailli|  楼主 | 2007-8-24 08:07 | 只看该作者

我知道是负数

我问的是 本来是要高八位的值。

你取反加一以后截取的还是低八位的值啊!

不成还有自动转换的时候是截取高八位的用法?

抑或是经过取反加一以后截取低八位的值就和 直接截取高八位的值一样?

使用特权

评论回复
6
lixun00| | 2007-8-24 08:07 | 只看该作者

呵呵。。。应该相信所长是酒精考验的战士

使用特权

评论回复
7
xzhenggen| | 2007-8-24 08:07 | 只看该作者

取反加一是取负数??

如果X=0xff;则~X+1=0x01;为啥是负数?真晕!

使用特权

评论回复
8
yewuyi| | 2007-8-24 08:24 | 只看该作者

-(-1)

使用特权

评论回复
9
popmu| | 2007-8-24 08:41 | 只看该作者

受教了:)

使用特权

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

本版积分规则

98

主题

1172

帖子

55

粉丝