#include <msp430.h>
/*
* main.c
*/
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
int i=0;
P2DIR&=~(BIT0+BIT1);
P7DIR |=(BIT0+BIT1);
while(1)
{
if(((P2IN&BIT0)==0)&&((P2IN&BIT1)==1))
{
i=1;
}
else if(((P2IN&BIT0)==1)&&((P2IN&BIT1)==0))
{
i=2;
}
else
{
i=3;
}
switch(i)
{
case 1:
{
P7OUT |=BIT0;
P7OUT &=~BIT1;
break;
}
case 2:
{
P7OUT |=BIT1;
P7OUT &=~BIT0;
break;
}
case 3:
{
P7OUT |=(BIT0+BIT1);
break;
}
}
}
return 0;
}
以上是我的代码,加入i是为了测试,一直出现的问题是 if(((P2IN&BIT0)==0)&&((P2IN&BIT1)==1))在输入为真的情况下无法正常进入执行,而且每次判断完这个条件之后,i会变成90
else if子句和else子句在条件真的时候都能正常进入