[ZLG-ARM] 求助:有关I/O设置的问题

[复制链接]
2408|4
 楼主| lsj198111 发表于 2008-8-5 12:14 | 显示全部楼层 |阅读模式
#define&nbsp;KEY1_SET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&lt&lt20&nbsp;&nbsp;&nbsp;&nbsp;//P1.20<br />#define&nbsp;IO1PIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*((volatile&nbsp;unsigned&nbsp;long&nbsp;*)&nbsp;0xE0028010))<br />IO1PIN&nbsp;&&nbsp;KEY1_SET<br />IO1PIN是一个32位的,KEY1_SET只知道前20位的值,IO1PIN&nbsp;&&nbsp;KEY1_SET操作后,它们的值的21到32是不是不确定阿?为什么?
xgywinner 发表于 2008-8-8 12:33 | 显示全部楼层

KEY1_SET的32位都是确定的

我的理解是KEY1_SET的32位都是确定的,1的二进制表示是第0位为1,第二位到第三十一位全是0,1&lt&lt20是在此基础上左移二十位,前面都是0,后面也补0,结果只有第二十位为1
zlgarm 发表于 2008-8-8 19:02 | 显示全部楼层

楼主

您好!<br />&nbsp;&nbsp;&nbsp;找个变量,把1&nbsp;&lt&lt&nbsp;20&nbsp;的值赋给变量,再查看变量的值。当然,变量要为32位。
biao.l 发表于 2008-8-9 22:16 | 显示全部楼层

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

  
computer00 发表于 2008-8-9 23:29 | 显示全部楼层

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

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

30

帖子

0

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