通过分析后,你大概应该清楚怎么去修改这个程序了,同时,顺便也说一下,之前板子上的 Key,好像不是你现在的用途,更像是模式设定的用途,现在你改变了用途,当然也应该顺便改变一些东西。
我也顺手重写了你的关键代码,只要把 board_process() 用我下面的代码替换,大概应该可以满足你的密码输入的需求了。不过,我从来不确定自己的代码是否可以正常工作的,我也没测试,你拿去试试看吧,关键还是思路:
INT8U Key_count = 0;
// 去声明一个全局变量记录按键次数
void board_process( void )
{
INT8U i,j;
INT8U KeyVal = get_key();
if( Key_count < 3){
switch( KeyVal )
{
case KEY_1:
password[Key_count] = KEY_1;
Key_count++;
break;
case KEY_2:
password[Key_count] = KEY_2;
Key_count++;
break;
case KEY_3:
password[Key_count] = KEY_3;
Key_count++;
break;
case KEY_4:
password[Key_count] = KEY_4;
Key_count++;
break;
default:
password[Key_count] = 0;
Key_count++;
break;
}
}
if( Key_count == 3 ){
for(j = 0 ;j < 4 ;j++)
//比较密码
{
if(password[j] == rightpassword[j])
{
Key_count--;
}
else
{
bWarn=1;
DisplayListChar(1,1,"password error");
break;
}
}
}
if( Key_count == 0){
bPass=1;
DisplayListChar(1,1,"password right");
}
if( bWarn || bPass ) Key_count = 0;
// Key_count 这个时候进行重置
}