我做了一电子密码锁 输玩4位密码之后 如果不按确定键(即in=12)而按其他的键 然后在按确定键就不起作用了 这是为什么 而且我怎么才能增加取消我输入的密码的功能 高手帮忙解决下
void unlock()
{
uchar in,i;
if(num==0)
{
lcd_xieping(0,0,"**密码锁系统** ");
lcd_xieping(1,0,"----------------");
lcd_xieping(2,0," 请输入密码: ");
lcd_xieping(3,0," ");
for(i=0;i<4;i++)
{
t1=keyscan1();
lcd_xieping(3,i,"*");
num=0;
}//输密码
}
in=keyscan1();
if(in==12)
{
i=4;
}
}
if(in==12)//in-确定键标志位
{
in=0;
num=0;
if((t1[0]==t[0])&&(t1[1]==t[1])&&(t1[2]==t[2])&&(t1[3]==t[3]))
{
flag=1;//解密成功与否标志位
//unlock_i=1;
a=0;//功能键标志
lcd_xieping(0,0,"**密码锁系统** ");
lcd_xieping(1,0,"----------------");
lcd_xieping(2,0," 密码正确! ");
lcd_xieping(3,0," 您的身份已确认");
delay_ms(1500);
lcd_xieping(1,0,"----------------");
lcd_xieping(2,0,"功能 I 开锁 ");
lcd_xieping(3,0," II修改密码");
}
else
{
flag=0;
count++;
if(count==3)
{
count=0;
num=1;
lcd_xieping(1,0,"------------");
lcd_xieping(2,0,"您的机会已用完 ");
lcd_xieping(3,0,"对不起您无法进入");
FM=1;
delay_ms(1000);
FM=0;
}
}
}
}
因为你如果不是按确定键而是其他键,in值就不为12,而你的程序又没有判断in不为12的情况,所以就悲剧了
取消功能嘛,判断下,如果keyscan1()输入的是取消键,T1数组清0,i清0,LCD显示的*也清除