工具/软件: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 =状态;
}
}