######在写关于电子密码锁的代码时,修改密码那一部分的代码遇到了问题。
编译是没有问题的,但是修改密码那一块的代码没有反应,感觉是跳转不到修改密码的函数上,求指正
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"
unsigned char KeyNum;
unsigned int Password,Count,Count2,NewPassword;
int mima = 1234;
int cuowu = 0;
int cw = 0;
int i=1;
int xunhuan=65536;
void error_bug()
{if(cuowu==3)
{
LCD_ShowString(2,13,"lock"); //禁止登陆
while(i--)
{
Delay(10000);
} //程序卡死10s
cuowu=0;
}
}
void xiugai()
{
while(xunhuan--)
{
KeyNum=MatrixKey();
if(KeyNum)
{
if(KeyNum<=10) //如果S1~S10按键按下,输入密码
{
if(Count2<4) //如果输入次数小于4
{
NewPassword*=10; //密码左移一位
NewPassword+=KeyNum%10; //获取一位密码
Count++; //计次加一
}
LCD_ShowNum(2,1,Password,4); //更新显示
}
if(KeyNum==15)
{
mima = NewPassword;
xunhuan = 1;
LCD_ShowString(1,14,"yes ");
}
}
}
}
void main()
{
LCD_Init();
LCD_ShowString(1,1,"Password:");
while(1)
{
KeyNum=MatrixKey();
if(KeyNum)
{
if(KeyNum<=10) //如果S1~S10按键按下,输入密码
{
if(Count<4) //如果输入次数小于4
{
Password*=10; //密码左移一位
Password+=KeyNum%10; //获取一位密码
Count++; //计次加一
}
LCD_ShowNum(2,1,Password,4); //更新显示
}
if(KeyNum==16)//如果s16按键按下,退格
{
Password/=10;
LCD_ShowNum(2,1,Password,4); //更新显示
}
if(KeyNum==11) //如果S11按键按下,确认
{
if(Password==mima) //如果密码等于正确密码
{
LCD_ShowString(1,14,"OK "); //显示OK
P2_0=0;
Password=0; //密码清零
Count=0; //计次清零
LCD_ShowNum(2,1,Password,4); //更新显示
}
else
{
LCD_ShowString(1,14,"ER"); //显示ERR
Password=0; //密码清零
Count=0; //计次清零
LCD_ShowNum(2,1,Password,4); //更新显示
P2_0=1;
cuowu++;
}
}
if(KeyNum==12) //如果S12按键按下,取消
{
Password=0; //密码清零
Count=0; //计次清零
LCD_ShowNum(2,1,Password,4); //更新显示
}
if(KeyNum==13)//如果s13按下,修改密码
{
xiugai();
LCD_ShowNum(2,1,Password,4); //更新显示
}
error_bug();
}
}
}