为什么这段定时器和y不用清零就能起到数码管倒计时的作用呢

为什么这段定时器和y不用清零就能起到数码管倒计时的作用呢


#include 
 
#define uint unsigned int
#define uchar unsigned char
sbit WE=P2^7;
sbit DU=P2^6;
sbit beep=P2^3;
char x=10;
uchar y=0;
uchar temp=0xF0;
void time();
void delay(uint z);
void display(uchar z);
 
uchar code leddata[]={ 
                                                                                         
                0x3F,  //"0"
                0x06,  //"1"
                0x5B,  //"2"
                0x4F,  //"3"
                0x66,  //"4"
                0x6D,  //"5"
                0x7D,  //"6"
                0x07,  //"7"
                0x7F,  //"8"
                0x6F,  //"9"         
                        };
void main()
{  time();
    while(1)
    {    display(x);
                if(TF0==1)
                {y++;
                     if(y==20)
                    {x--;
                    }
                }
            
    }
 
 
}
void display(uchar z)            //编写显示位置的函数                
{uchar x,y;
x=z/10;                                                                        
y=z%10;
WE=1;
P0=0XFE;         //1WE=0;
P0=0X00;
 
DU=1;
P0=leddata[x];
DU=0;
P0=0XFF;
delay(2);
 
WE=1;
P0=0XFD;         //2WE=0;
P0=0X00;
 
DU=1;
P0=leddata[y];
DU=0;
P0=0XFF;
delay(2);
}
void delay(uint z)
{
  uint x,y;
  for(x = z; x > 0; x--)
      for(y = 114; y > 0 ; y--);      
} 
 
void time()
{    TR0=1;                   //50ms
    TMOD=0X01;
    TH0=0x4b;
    TL0=0xfc;    
}

uchar y=0;
这个 y 是定义的全局的,8位的变量
在循环加1的过程中,如果不人为的清零,自己加到 255 也会自己清零
就是说 y 不用清零的话,自己能从0-255循环,自动清零