This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430 F5529 判断输入引脚状态出现问题



#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子句在条件真的时候都能正常进入