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.

[参考译文] 编译器/MSP430G2553:msp430g2553

Guru**** 2582405 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/613420/compiler-msp430g2553-msp430g2553

器件型号:MSP430G2553

工具/软件:TI C/C++编译器

我有3个开关。 它们是 x、y、z。 x 表示0,y 表示1,z 表示在密码正确时激活 LED。  密码已在代码中创建。 例如1100。 我按开关, 如果键入正确的开关, 指示灯亮起。 我做了一些错误的事情。 我不知道我在哪里做错了。 请帮帮我。  

#include

int 密码= 0xC;

int pass = 0;

INT 状态= 0;

枚举状态{

  IDLE = 0、

  first_char、

  Wait_second、

  second_char、

  Wait_third、

  third_char、

  WAIT_Fth、

  ford_char、

  检查

};

/**

 * blink.c

 *

void main (void)

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

P1DIR |= BIT0;//输出 LED 显示密码是否正确

P1DIR &=~BIT1;         //输入 x

P1DIR &=~BIT2;         //输入 y

P1DIR &=~BIT3;         //输入 z

P1DIR |= BIT5;          //输出 LED 显示密码是否错误

P2DIR = 0xFF;

volatile unsigned int i;// volatile 以阻止优化

while (1)

开关(状态)

空闲情况:      //This is the wait state where no charactered of password has been entered (等待状态,在此状态中没有输入密码字符)

  P1OUT &=~BIT0;

  P1OUT &=~BIT4;

  if (P1IN =BIT1)

  {

    PASS =(PASS << 1)| 0;

    State = first_char;

  }

  否则、如果(P1IN =BIT2)

  {

    PASS =(PASS << 1)| 1;

    State = first_char;

  }

  否则、如果(P1IN =BIT3)

  {

    状态=检查;

  }

中断;

     Case First_char:

       P1OUT &=~BIT0;

       if (P1IN =0)

       {

         STATE = WAIT_second;

       }

       其他

       {

         State = first_char;

       }

     中断;

     案例 WAIT_second:

       P1OUT &=~BIT0;

       if (P1IN =BIT1)

       {

         PASS =(PASS << 1)| 0;

         State = second_char;

       }

       否则、如果(P1IN =BIT2)

       {

         PASS =(PASS << 1)| 1;

         State = second_char;

       }

       否则、如果(P1IN =BIT3)

       {

         状态=检查;

       }

     中断;

     案例 second_char:

       P1OUT &=~BIT0;

       if (P1IN =0)

       {

         状态= WAIT_third;

       }

       其他

       {

         State = second_char;

       }

     中断;

     案例 WAIT_third:

       P1OUT &=~BIT0;

       if (P1IN =BIT1)

       {

         PASS =(PASS << 1)| 0;

         State = third_char;

       }

       否则、如果(P1IN =BIT2)

       {

         PASS =(PASS << 1)| 1;

         State = third_char;

       }

       否则、如果(P1IN =BIT3)

       {

         状态=检查;

       }

     中断;

     case third_char:

       P1OUT &=~BIT0;

       if (P1IN =0)

       {

         状态= WAIT_FAND_;

       }

       其他

       {

         State = third_char;

       }

     中断;

     案例 WAIT_FAND_:

       P1OUT &=~BIT0;

       if (P1IN =BIT1)

       {

         PASS =(PASS << 1)| 0;

         State = ford_char;

       }

       否则、如果(P1IN =BIT2)

       {

         PASS =(PASS << 1)| 1;

         State = ford_char;

       }

       否则、如果(P1IN =BIT3)

       {

         状态=检查;

       }

     中断;

     FAND_CHAR 案例:      //This is the wait state where no charactered of password has been entered (等待状态,在此状态中没有输入密码字符)

      P1OUT &=~BIT0;

      if (P1IN =BIT3)

      {

        状态=检查;

      }

      其他

        State = ford_char;

     中断;

     案例检查:      //This is the wait state where no charactered of password has been entered (等待状态,在此状态中没有输入密码字符)

      if (pass ==密码)

      {

        P1OUT |= BIT0;

        if (P1IN =BIT0)

          状态=空闲;

      }

      其他

      {

        P1OUT |= BIT5;

        if (P1IN = BIT5)

          状态=空闲;

      }

     中断;

P2OUT =状态;