打印
[NXP ARM]

求教关于IO口的连续读写的问题!

[复制链接]
2086|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
无冕之王|  楼主 | 2010-5-8 16:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想问你下关于IO口的连续读写,因为我想把我的ARM加上LCD,所以又要写控制,又要写数据,我还要做键盘扫描,最不好弄得就是要不停的改变IO的状态,
1.请问有没有啥子办法在改变状态的时候,其他的IO口不发生变化!(现在晓得了)
2.还有就是我要写数据时,能不能把8bit的数据一次完成的写入IO口??(是不是每次都要判断数据的高低,再用IOSET或者IOCLR)

相关帖子

沙发
司徒老鹰| | 2010-5-8 21:44 | 只看该作者
可以定义一个32位的全局变量,用来保存当前IO口输出值,当需可修改某几个口的输出状态时,可以使用“与”“或”操作先修改该全局变量,再将此变量的值写到IO口输出即可。

使用特权

评论回复
板凳
zwll| | 2010-5-8 21:45 | 只看该作者
楼上的,但是楼主若要根改输入输出状态,IO口的电平就该变了,本来低的遭拉高了,因为要做键盘扫描!

使用特权

评论回复
地板
司徒老鹰| | 2010-5-8 21:46 | 只看该作者
io口复用的真充分
要是我的话键盘就加一个ZLG7290
省事多了。

使用特权

评论回复
5
司徒老鹰| | 2010-5-8 21:46 | 只看该作者
事情并不复杂,仔细想想再试试就行了
/* IO 总线输入模式 */
__inline void IObusInMode(void)
{
    IO2DIR &= ~(0x0ff<<16);
}
/* IO 总线输出模式 */
__inline void IObusOutMode(void)
{
    IO2DIR |=  (0x0ff<<16);
}
/* IO 总线输出全低.高 */
__inline void IObusOutAllL(void)
{
    IO2CLR  =  (0x0ff<<16);
}
__inline void IObusOutAllH(void)
{
    IO2SET  =  (0x0ff<<16);
}
/* IO 总线输出 */
__inline void IObusOut(INT8U d)
{
    IObusOutAllL();
    IO2SET  =  (d<<16);
}
/* IO 总线输入 */
__inline unsigned CHAR IObusIn(void)
{
    return (unsigned CHAR)(IO2PIN >> 16);
}

/* 使能 dial 输入 */
__inline void enDialCS(void)
{
    IO1DIR |= 1<<22;
    IO1CLR  = 1<<22;
}
/* 禁能 dial 输入 */
__inline void diDialCS(void)
{
    IO1DIR |= 1<<22;
    IO1SET  = 1<<22;
}

/* 使能 RELAY 输出 */
__inline void enRELAYCS(void)
{
    IO1DIR |= 1<<23;
    IO1SET  = 1<<23;
}
/* 禁能 RELAY 输出 */
__inline void diRELAYCS(void)
{
    IO1DIR |= 1<<23;
    IO1CLR  = 1<<23;
}

/* 使能 Input 输入 */
__inline void enInputCS(void)
{
    IO1DIR |= 1<<24;
    IO1CLR = 1<<24;
}
/* 禁能 Input 输入 */
__inline void diInputCS(void)
{
    IO1DIR |= 1<<24;
    IO1SET  = 1<<24;
}

使用特权

评论回复
6
dfsa| | 2010-5-9 15:26 | 只看该作者
可以直接对某个IO进行位操作呀

使用特权

评论回复
7
火箭球迷| | 2010-5-9 18:31 | 只看该作者
这楼上说的够详细的

使用特权

评论回复
8
zwll| | 2010-5-10 23:15 | 只看该作者
说了这么多不知楼主解决了没有

使用特权

评论回复
9
pkat| | 2010-5-11 21:08 | 只看该作者
应该是还没解决

使用特权

评论回复
10
zwll| | 2010-5-12 22:49 | 只看该作者
再不懂2楼哥们得晕倒了

使用特权

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

本版积分规则

个人签名:喜欢远行

160

主题

3331

帖子

0

粉丝