/* 密码比较函数 */
bit pwcmp(void)
{
bit flag;
uchar i;
for (i=0;i<4;i++)
{
if (pw==pwbuf)
flag = 1;
else
{
flag = 0;
i = 4;
error_cnt++;//错误次数加1
}
}
return(flag);
}
void main()
{
uchar j, key;
uchar count = 0; // 初始没有输入密码,计数器设为0
uchar error_cnt=0; //错误次数归0
bit enterflag = 0; // 没有按下确认键
bit pwflag = 0; // 密码标志先置为0
bit last_pwflag=0;
/* 假设内定密码为123456, 修改初始密码可在这里改*/
uchar pw[6] = {1,2,3,4,5,6,}
while(1)
{
if(error_cnt<3) //错误次数小于3
{
key = keyscan(); // 调用键盘扫描函数
if(key>=0&&key<10) //用户输入密码
{
if (count<6)
{
pwbuf[count] = key;
count++;
}
}
else if(key==11) // 确认键按下
{
enterflag = 1; // 确认键按下
if (count==6) // 只有输入4个密码后按确认键才作密码比较
{
delay_ms(10);
pwflag = pwcmp(); //密码比较
}
else
{
pwflag = 0; // 否则直接pmflag赋0
error_cnt++; //错误次数加一
}
last_pwflag=pwflag; //前一次密码输入正确与否标志
enterflag = 0; // 标志位置回0
count = 0; // 密码位计数器清零
delay_ms(10);
if (pwflag==1)
{open = 0; close=1;red=1;beep=1;} //密码正确时,绿灯亮,其它灯灭
else
{open=1;close=0;red=1;baojing(); } //密码错误时,黄灯亮并短报警
}
else if(key==16) //删除键按下
{
count--;
if(count<0) count=0;
}
else if(key==12) // 取消键按下
{
count = 0; // 密码计数清零
}
显示“*”您应该会了
|