数码管显示不全,求帮助!

数码管显示不全
#include "reg51.h"
#define uint unsigned int
#define uchar unsigned char
uchar code SEG7[10]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f
};
uchar code ACT[2]={0xfa,0xf5};
uchar sec=30,cnt,flag=0,m,n,status=0,i,j,sign1,sign2,sign3;
sbit EWGREEN=P2^0;
sbit EWYELLOW=P2^1;
sbit EWRED=P2^2;
sbit SNGREEN=P2^4;
sbit SNYELLOW=P2^5;
sbit SNRED=P2^6;
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
void LED_ORD(uchar);
void LED_5S(uchar);
void key_s1();
void key_s2();
void key_s3();
void inrupt(void)
{
TMOD=0x01;
TH0=0x1e;
TL0=0x58;
ET0=1;
TR0=1;
EA=1;
}
void timeout(void) interrupt 1
{
TH0=0x1e;
TL0=0x58;
cnt++;
key_s1();
key_s2();
key_s3();
switch(status)
{
case 0:m=1;n=1;i=0;j=1;break;
case 1:m=2;n=2;i=0;j=1;break;
case 3:m=3;n=3;i=0;j=1;break;
}
if(flag==0){LED_ORD(m);}
else
{
if(cnt<=10){LED_5S(n);}
else {EWYELLOW=1;SNYELLOW=1;}
}
if(cnt>=20)
{
sec--;cnt=0;
if(sec<=5)
{
flag=1;
if(sec==0)
{
if(status==3)
{
status=0;flag=0;i=0;j=1;
if(sign1==0) sec=20;
else sec=30;
}
if(status==0)
{
status=1;flag=0;i=2;j=3;
if(sign2==0) sec=20;
else sec=30;
}
else
{
status=0;flag=0;i=0;j=1;
if(sign1==0) sec=20;
else sec=30;
}
}
}
}
}
void LED_ORD(uchar f)
{
switch(f)
{
case 1:P2=0xBE;break;
case 2:P2=0xEB;break;
case 3:P2=0xBB;break;
}
}
void LED_5S(uchar f)
{
switch(f)
{
case 1:EWGREEN=1;EWYELLOW=0;break;
case 2:SNGREEN=1;SNYELLOW=0;break;
case 3:EWRED=1;SNRED=1;EWYELLOW=0;SNYELLOW=0;break;
}
}
void delay(uint t)
{
uint data i,j;
for(i=0;i<t;i++)
{for(j=0;j<50;j++){;}}
}
void key_s1()
{
if(P3_0==0) {sign1=0;}
else {sign1=1;}
}
void key_s2()
{
if(P3_1==0) {sign2=0;}
else {sign2=1;}
}
void key_s3()
{
if(P3_2==0) {sign3=0;status=3;sec=15;}
else {sign3=1;}
}
void main(void)
{
inrupt();
for(;;)
{
P1=0xff;
P0=SEG7[sec%10];
P1=ACT[i];
delay(1);
while(sec/10)
{
P1=0xff;
P0=SEG7[sec/10];
P1=ACT[j];
break;
}
delay(1);
}
}