为什么这段定时器和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; //1亮
WE=0;
P0=0X00;
DU=1;
P0=leddata[x];
DU=0;
P0=0XFF;
delay(2);
WE=1;
P0=0XFD; //2亮
WE=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循环,自动清零