G2553在操作P1IN和P2IN上有顺序要求吗?

2019-03-24 10:24发布

我在用G2553写矩阵键盘的控制程序时用到了8个IO口,分别是P2.0—P2.5、P1.6、P1.7#define KEYDIR0() {P1DIR |= (BIT7+BIT6);P2DIR |= (BIT5+BIT4+BIT3+BIT2+BIT1+BIT0) ; }//
#define KEYDIR1() {P1DIR&=~(BIT7+BIT6);P2DIR&=~(BIT5+BIT4);P2DIR&=~(BIT3+BIT2+BIT1+BIT0);}//
#define KEYOUT0() {P1OUT|=(BIT7+BIT6);P2OUT|=(BIT5+BIT4+BIT3+BIT2+BIT1);P2OUT&=~BIT0;}
#define KEYOUT1() {P1OUT|=(BIT7+BIT6);P2OUT|=(BIT5+BIT4+BIT3+BIT2);P2OUT&=~BIT1;P2OUT|=BIT0;}
#define KEYOUT2() {P1OUT|=(BIT7+BIT6);P2OUT|=(BIT5+BIT4+BIT3);P2OUT&=~BIT2;P2OUT|=(BIT1+BIT0);}
#define KEYOUT3() {P1OUT|=(BIT7+BIT6);P2OUT|=(BIT5+BIT4);P2OUT&=~BIT3;P2OUT|=(BIT2+BIT1+BIT0);}
#define KEYIN (P1IN & 0xc0)|(P2IN & 0x3f)//这个是对的
//#define KEYIN (P2IN & 0x3f)|(P1IN & 0xc0)//这个是错误
上面是宏定义部分对于最后两句,在逻辑上是一样的吧,都是位运算可是就像注释那样,只有定义成#define KEYIN (P1IN & 0xc0)|(P2IN & 0x3f)才能使程序运行正确这是怎么回事啊?我用的是CCS编译器谢谢(^_^)......
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
数码小叶
2019-03-24 18:49
< 一般这种复杂的应该和上面一样,最外面加括号

一周热门 更多>

相关问题

    相关文章