关于密码锁判断部分一直出不来的问题,想不出来哎꒦ິ^꒦ິ

要实现输入密码后按第13个按键后调整密码,第14个按键设置流水灯时间。但不知道为什么怎么都跳不出判断密码是否正确的部分

下面是主函数,delay是毫秒延时,where判断哪个按键按下,name是选出对应的数,display是数码管显示,pass是判断密码,go是更改密码,setting是设置时间,working是流水灯
void main()
{
while(flag1)
{
P3 = 0x0f;
if(P3 != 0x0f)
{
delay(5);
if(P3 != 0x0f)
{
where();

            if(flag3 == 1&&flag1==1)
            {
                name();
                pass();
            }

            if(flag3 == 0)
            {
                if(num == 12)
                {
                    BEEP = 0;
                    delay(100);
                    BEEP = 1;
                    flag3 = 1;//judge whether the first
                }
            }
        }
        while(P3 != 0xf0);
    }
    
    if(flag4 == 1)
    {
        display();
    }

}

loop:while(flag1 == 0)
{
    if(P3 != 0x0f)
    {
        delay(5);
        if(P3 != 0x0f)
        {
            where();
            go();
            setting();
            working();
        }
        while(P3 != 0xf0);
    }
    
}

}