for(n=50;n>0;n--);
}
ucharchangeleft(ucharled)
{
uchartemp;
temp=0;
temp|=(led<<7)&0x80;
temp|=(led<<5)&0x40;
temp|=(led<<3)&0x20;
temp|=(led<<1)&0x10;
temp|=(led>>1)&0x08;
temp|=(led>>3)&0x04;
temp|=(led>>5)&0x02;
temp|=(led>>7)&0x01;
return(temp);
}
voidled16_16display(uchar*table,ucharlength)
{
uchari=length2,scan1=0x1,scan2=0x1;
for(i=0;i<16;i++)
{
if(i<8)
{
ROW1=0;
ROW2=0;
COL1=scan1;
COL2=0;
ROW1=changeleft(table[2*i]);
ROW2=table[2*i+1];
COL1=scan1;
COL2=0;
delayshort();
scan1<<=1;
}
else
{
ROW1=0;
ROW2=0;
COL1=0;
COL2=scan2;
ROW1=changeleft(table[2*i]);
ROW2=table[2*i+1];
COL1=0;
COL2=scan2;
delayshort();
scan2<<=1;
}
}
}
voidchangeseg()
{
if(key1==0)
{
buffer[3]=10;
buffer[0]=10;
buffer[5]=tempseg%10;
buffer[4]=tempseg10;
buffer[2]=tempseg%10;
buffer[1]=tempseg10;
}
elseif(key1==1)
{
buffer[3]=10;
buffer[0]=10;
buffer[5]=ewstarter%10;
buffer[4]=ewstarter10;
buffer[2]=ewstarter%10;
buffer[1]=ewstarter10;
}
else
{
buffer[3]=10;
buffer[0]=10;
buffer[5]=snstarter%10;
buffer[4]=snstarter10;
buffer[2]=snstarter%10;
buffer[1]=snstarter10;
}
}
voidtimer1()interrupt3
{
staticuchartemp=0x20,cnt1;
TH1=()256;
TL1=()%256;
changeseg();
SEG=0xff;
SEG=table[buffer[cnt1]];
cnt1++;
if(cnt1==6)
cnt1=0;
BIT=temp;
temp>>=1;
if(temp==0)
temp=0x20;
}
voidint_0()interrupt0
{
delayshort();
if(P32==0)
{
PA=0xB6;
PB=0xd;
PT0=1;
PT1=1;
intflag=1;
while(inttime<=20)
led16_16display(led2,32);
inttime=1;
intflag=0;
PT0=0;
PT1=0;
PA=ewTable[tongBu];
PB=nsTable[tongBu];
}
}
voidtimer0()interrupt1
{
TH0=()256;
TL0=()%256;
cnt++;
if(cnt==5)
{
cnt=0;
if(intflag==1)
{
inttime++;
tempseg=10-inttime2;
}
else
{
time++;
if(time<=allredend)
{
tongBu=0;
PA=ewTable[tongBu];
PB=nsTable[tongBu];
tempseg=allredend2-(time+1)2;
}
elseif((time>allredend)&&(time<=ewredend))
{
tongBu=1;
PA=ewTable[tongBu];
PB=nsTable[tongBu];
tempseg=ewstarter+allredend2-(time+1)2;
}
elseif((time>ewredend)&&(time<=snyellowend))
{
if(change==0)
{
tongBu=2;
PA=ewTable[tongBu];
PB=nsTable[tongBu];
change=1;
}
else
{
tongBu=3;
PA=ewTable[tongBu];
PB=nsTable[tongBu];
change=0;
}
tempseg=ewstarter+allredend2+5-(time+1)2;
}
elseif((time>snyellowend)&&(time<=snredend))
{
tongBu=4;
PA=ewTable[tongBu];
PB=nsTable[tongBu];
tempseg=ewstarter+allredend2+5+snstarter-(time+1)2;
}
elseif((time>snredend)&&(time<=ewyellowend))
{
if(change==0)
{
tongBu=5;
PA=ewTable[tongBu];
PB=nsTable[tongBu];
change=1;
}
else
{
tongBu=6;
PA=ewTable[tongBu];
PB=nsTable[tongBu];
change=0;
}
tempseg=ewstarter+10+allredend2+snstarter-(time+1)2;
}
else
{
tongBu=1;
time=allredend+1;
PA=ewTable[tongBu];
PB=nsTable[tongBu];
tempseg=ewstarter+allredend2-(time+1)2;
}
}
}
}
voidkey()
{
ucharkeynum;
keynum=~(P1|0XF8);
switch(keynum)
{
case0x1:
while(KEY1==0)led16_16display(led2,32);
key1++;
TR0=0;
if(key1==3)
{
key1=0;
TR0=1;
}
break;
case0x2:
while(KEY2==0)led16_16display(led2,32);
if(key1==1)
{
ewstarter++;
if(ewstarter==100)
ewstarter=0;
}
if(key1==2)
{
snstarter++;
if(snstarter==100)
snstarter=0;
}
break;
case0x4:
while(KEY3==0)led16_16display(led2,32);
if(key1==1)
{
ewstarter--;
if(ewstarter==-1)
ewstarter=99;
}
if(key1==2)
{
snstarter--;
if(snstarter==-1)
snstarter=99;
}
break;
default:
break;
}
}
voidmain()
{
IE=0x8b;
IT0=1;
TMOD=0x11;
TH0=()256;
TL0=()%256;
TH1=()256;
TL1=()%256;
CTL=0x80;
tongBu=0;
TR1=1;
PA=ewTable[tongBu];
PB=nsTable[tongBu];
tempseg=allredend2-(time+1)2;
TR0=1;
while
(1)
{
key();
if(intflag==0)
{
if(key1==0)
{
if(time<=allredend)
led16_16display(led2,32);
elseif(time>allredend&&time<=snyellowend)
led16_16display(led1,32);
elseif(time>snyellowend&&time<=ewyellowend)
led16_16display(led2,32);
}
else
led16_16display(led2,32);
}
}
}