C语言goto跳转后变量PassKey归零

51单片机矩阵键盘
goto用于编辑完PassKey后跳出if返回到开头
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"                                            //按键检测
//#define Passkey 1234

unsigned char KeyNum;
unsigned int Count=0,PassWord,PassKey;

void main()
{
    LCD_Init();     //1602初始化
    PassKey=1234;
    LCD_ShowString(1,1,"PassWord:       ");
    LCD_ShowNum(2,1,PassWord,4);
        while(1)
        {
            loop:    
            KeyNum=MatrixKey();
            if(KeyNum)                                                   //检测按键按下
            {
                if(KeyNum<=10)                                            //输入范围S1——S10
                {
                    if(Count<4)                                              //限定输入4位数  9999<65536<99999
                    {
                    PassWord*=10;                                                //左移一位
                    PassWord+=KeyNum%10;                                //累加,其中S10=0
                    Count++;
                    }
                    LCD_ShowNum(2,1,PassWord,4);                //更新显示
                }
                if(KeyNum==11)                                                 //如果S11按下,确认位
                {
                    if(PassWord==PassKey)                                    //如果正确
                    {
                        LCD_ShowString(1,13,"GOOD");
                        PassWord=0;
                        Count=0;                                           //密码和计次清零
                        LCD_ShowNum(2,1,PassWord,4);            //更新显示
                    }
                    else                                                 //如果密码错误
                    {
                        LCD_ShowString(1,13,"ERR ");
                        PassWord=0;
                        Count=0; 
                        LCD_ShowNum(2,1,PassWord,4);          //更新显示
                    }
                }
                if(KeyNum==12)                                                //删除刚输入的一位,取消位
                {
                    PassWord/=10; 
                    Count--;
                    LCD_ShowNum(2,1,PassWord,4);            //更新显示
                }    
                
                /*更改密码*/
                if(KeyNum==13)
                {
                    //while(1)
                    //{
                        PassKey=0;
                        Count=0;
                        LCD_ShowString(1,1,"PassKey:           ");
                        if(KeyNum<=10)
                        {
                            if(Count<4)
                            {
                                PassKey*=10;
                                PassKey+=KeyNum%10;
                                Count++;
                                LCD_ShowNum(2,1,PassKey,4);
                            }                    
                        }
                        if(KeyNum==12)
                        {
                            PassKey/=10;
                            Count--;
                            LCD_ShowNum(2,1,PassKey,4);
                        }
                    //}
                }
                if(KeyNum==14)
                {
                    Count=0;
                    PassWord=0;
                    LCD_ShowString(1,1,"PassWord:       ");
                    LCD_ShowNum(2,1,PassWord,4);
                    goto loop;
                }
            }
        }        
}