打印
[ZLG-ARM]

求助:有关I/O设置的问题

[复制链接]
1506|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lsj198111|  楼主 | 2008-8-5 12:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define KEY1_SET      1<<20    //P1.20
#define IO1PIN          (*((volatile unsigned long *) 0xE0028010))
IO1PIN & KEY1_SET
IO1PIN是一个32位的,KEY1_SET只知道前20位的值,IO1PIN & KEY1_SET操作后,它们的值的21到32是不是不确定阿?为什么?

相关帖子

沙发
xgywinner| | 2008-8-8 12:33 | 只看该作者

KEY1_SET的32位都是确定的

我的理解是KEY1_SET的32位都是确定的,1的二进制表示是第0位为1,第二位到第三十一位全是0,1<<20是在此基础上左移二十位,前面都是0,后面也补0,结果只有第二十位为1

使用特权

评论回复
板凳
zlgarm| | 2008-8-8 19:02 | 只看该作者

楼主

您好!
   找个变量,把1 << 20 的值赋给变量,再查看变量的值。当然,变量要为32位。

使用特权

评论回复
地板
biao.l| | 2008-8-9 22:16 | 只看该作者

我用1<<31时,编译器老是报超出范围警告

使用特权

评论回复
5
computer00| | 2008-8-9 23:29 | 只看该作者

强制转换为无符号的才移动,(1UL)<<31

使用特权

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

本版积分规则

22

主题

30

帖子

0

粉丝