#include <reg51.h>
sbit R=P2^0;//HONG
sbit W=P2^1;//HUANG
sbit L=P2^2;//LV
unsigned int a,b=0;
//unsigned char code c[]={0xfe,0xfc,0xfb};//1110,1100,1011
unsigned char code c[]={0xfe,0xfD,0xfb,0xfd};//1110,1101,1011,1101//红 黄 绿 黄//修正黄灯的值,增加一个状态
void timer10s () interrupt 1
{
if (a<2000)
{
TH0=0xec;//5ms
TL0=0x78;
a++;
// b=0;//这里不能对b赋值
TR0=1;
TR1=0;//【增加】
}
if (a>=2000)
{
TH0=0xec;
TL0=0x78;
a=0;
b++;//b=1;
if(b==4) b=0;//【增加】
TR1=1;
TR0=0;//【增加】
}
}
void timer2s ()interrupt 3
{
if (a<400)
{
TH1=0xec;
TL1=0x78;
a++;
TR1=1;
TR0=0;
}
if (a>=400)
{
TH1=0xec;
TL1=0x78;
a=0;
b++;//b=2;
//
if(b==4) b=0;//【增加】
TR0=1;
TR1=0;//【增加】
}
}
void main ()
{
EA=1;
ET0=1;
ET1=1;
TMOD=0X11;
TH0=0xec;//5MS
TL0=0x78;
TH1=0xec;
TL1=0x78;
TR0=1;
TR1=0;
P2=c[0];
b=0;////【增加】
while (1)
{
switch (b)
{
case 0x00:P1=c[0];break;
case 0x01:P1=c[1];break;
case 0x02:P1=c[2];break;
case 0x03:P1=c[3];break;//增加一个状态
}
}
}
|