电子密码锁修改密码代码有问题,求指正

######在写关于电子密码锁的代码时,修改密码那一部分的代码遇到了问题。
编译是没有问题的,但是修改密码那一块的代码没有反应,感觉是跳转不到修改密码的函数上,求指正

#include 
#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();
        }
}
}

以下是我的回答,希望能点击一下采纳,让我有继续回答下去的动力
https://blog.csdn.net/weixin_63568691/article/details/128771284

问题可能出在未在修改密码后,对密码进行相应的更新。可以将mima=NewPassword放在xiugai()函数末尾,在返回主函数后再更新显示。

另外,在main函数中,输入密码错误时,P2_0=1,这可能会导致程序出现问题。