[ZLG-ARM] 请教:GPIO读写问题

[复制链接]
2500|8
 楼主| cd666 发表于 2008-12-1 15:20 | 显示全部楼层 |阅读模式
目的是想将P0.8-P0.15的内容存入一个8字节内.<br />代码如下:<br />variable&nbsp;uint8&nbsp;pin;<br />pin=0x00;<br />IO0PIN=0x12345678;<br />pin=(uint8)IO0PIN&gt&gt8;<br />但pin的内容不能得到我需要的0x56的内容.在AXD里面添加Watch提示Variable&nbsp;removed&nbsp;by&nbsp;compiler(optimization)<br />请各位指点一下.谢谢<br />
gooofy 发表于 2008-12-1 15:53 | 显示全部楼层

全局变量

把pin改成全局变量
 楼主| cd666 发表于 2008-12-1 16:34 | 显示全部楼层

还是不行

改成全局变量加了限定词之后,没有提示被优化的提示了.但是PIN还是=0X00.<br />我的目的就是读P0.8-P0.15引脚的内容,后存到8BIT的数组里,但现在一个字节的内容都搞不定,请谁给一段正确的C代码.
gooofy 发表于 2008-12-1 16:36 | 显示全部楼层

volatile

#include&nbsp;&quot;config.h&quot;<br /><br />volatile&nbsp;uint8&nbsp;pin;<br />int&nbsp;main&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0DIR=0xFFFFFFFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;pin=0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0PIN=0x12345678;<br />&nbsp;&nbsp;&nbsp;&nbsp;pin=(uint8)(IO0PIN&gt&gt8);<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}
 楼主| cd666 发表于 2008-12-1 17:02 | 显示全部楼层

还有点不明白

PIN等于0X00我知道是因为类型转换的时候少了一个(),结果导制先将IO0PIN进行了转换&nbsp;再移位了.<br />为什么要将PIN设为全局变量呢.
gooofy 发表于 2008-12-1 17:26 | 显示全部楼层

不晓得

呵呵<br />具体原因我也不晓得啊<br />
 楼主| cd666 发表于 2008-12-1 17:43 | 显示全部楼层

谢谢,那个高手有空能讲解一下就好了

  
ZLG_Dengz 发表于 2008-12-1 23:28 | 显示全部楼层

RE

&nbsp;&nbsp;&nbsp;因为编译器认为你的变量并非必要,把它优化了,改成全局变量,编译器就不会认为其他地方可能使用这个变量,而不会将其移除。&nbsp;<br />&nbsp;&nbsp;&nbsp;你也可以使用volatile来声明一个不用优化的变量,这样也不会被编译器移除。<br />&nbsp;&nbsp;&nbsp;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

153

帖子

0

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