[ZLG-ARM] 怎样操作一个GPIO才不至于影响到其他IO口

[复制链接]
3331|7
 楼主| 有意思 发表于 2007-1-3 20:25 | 显示全部楼层 |阅读模式
怎样操作一个GPIO才不至于影响到其他IO口?例如:<br />#define&nbsp;LED1&nbsp;1&nbsp;&lt&lt&nbsp;10<br />#define&nbsp;LED2&nbsp;1&nbsp;&lt&lt&nbsp;15<br />#define&nbsp;LED3&nbsp;1&nbsp;&lt&lt&nbsp;17<br />IO0DIR&nbsp;|=&nbsp;LED1&nbsp;|&nbsp;LED2&nbsp;|&nbsp;LED3;&nbsp;<br />IO0CLR&nbsp;|=&nbsp;LED1&nbsp;|&nbsp;LED2&nbsp;|&nbsp;LED3;<br />IO0SET&nbsp;|=&nbsp;LED1&nbsp;|&nbsp;LED2&nbsp;|&nbsp;LED3;<br /><br />
TRUE_ARM 发表于 2007-1-3 20:27 | 显示全部楼层

认真看一下DATASHEET

IOxCLR、IOxSET只对写“1”的位有效。
 楼主| 有意思 发表于 2007-1-3 20:35 | 显示全部楼层

这个当然知道

除了IODIR,几乎所有的寄存器都是写入1有效,写入0无效,但是在实际中,操作的确会影响到其他口线,<br /><br />
hotpower 发表于 2007-1-3 20:39 | 显示全部楼层

改成IO0CLR = LED1 | LED2 | LED3;IO0SET = LED1 | LED2 | LED3;

  
 楼主| 有意思 发表于 2007-1-3 20:47 | 显示全部楼层

是这样作的

两个485,两个IO口控制MAX485的DE(RE),<br />#define&nbsp;Rs485ctrol0&nbsp;1&nbsp;&lt&lt&nbsp;19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//P1_19&nbsp;485_1<br />#define&nbsp;Rs485ctrol1&nbsp;1&nbsp;&lt&lt&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//P0_10&nbsp;485_2<br /><br />IO1DIR&nbsp;|=&nbsp;Rs485ctrol0;<br />//IO0DIR&nbsp;|=&nbsp;Rs485ctrol1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//加上这条就会影响接收和发送<br />
hotpower 发表于 2007-1-3 20:51 | 显示全部楼层

和优先级有关???加个()

#define&nbsp;Rs485ctrol0&nbsp;(1&nbsp;&lt&lt&nbsp;19)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//P1_19&nbsp;485_1<br />#define&nbsp;Rs485ctrol1&nbsp;(1&nbsp;&lt&lt&nbsp;10)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//P0_10&nbsp;485_2<br /><br />
zyc32 发表于 2007-1-11 09:46 | 显示全部楼层

怎样操作一个GPIO才不至于影响到其他IO口

先读出原来的值,再采用或运算。即读出-写入
 楼主| 有意思 发表于 2007-1-11 21:55 | 显示全部楼层

这样呢

#define&nbsp;ON_LED5&nbsp;&nbsp;IO0CLR&nbsp;|=&nbsp;LED5;<br />or<br />#define&nbsp;ON_LED5&nbsp;&nbsp;IO0CLR0&nbsp;|=&nbsp;LED5
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

331

帖子

0

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