void timer_0() interrupt 1
{
static uchar i,second=60;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
i++;
if(i==20)//一秒计时
{
i=0;
second--;
if(second==0)
{
if(red)
{
red=0;
yello=1;
P1=0xf3;
second=5;
}
else
if(yello)
{
yello=0;
green=1;
second=50;
P1=0xcf;//绿·灯亮
}
else
if(green)
{
green=0;
red=1;
second=60;//红灯亮50秒
P1=0xfc;
}
}
shi=tab[second/10];//十位显示值处理
ge=tab[second%10]; //个位显示处理
}
}
为什么那个static 我没用的时候 数码管只显示59而不会递减下去,而用了static声明后程序就可以了呢? |