#include<reg51.h>
sbit NBG=P2^0;
sbit NBY=P2^1;
sbit NBR=P2^2;
sbit DXG=P2^3;
sbit DXY=P2^4;
sbit DXR=P2^5;
int t,j;
void delay250ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=11;c>0;c--)
for(b=92;b>0;b--)
for(a=122;a>0;a--);
}
void main()
{
P2=0;
TMOD=0X02;
IE=0X82;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
while(1)
{if(t<1000)
{
DXG=1;
NBR=1;
DXY=0;
NBY=0;
DXR=0;
}
if((t>1000)&&(t<2000))
{
DXG=0;
NBR=1;
for(j=0;j<5;j++)
{
DXY=~DXY;
delay250ms();
}
}
if((t>2000)&&(t>3000))
{
NBG=1;
DXR=1;
NBR=0;
DXY=0;
}
if((t>3000)&&(t<4000))
{
NBG=0;
DXR=1;
for(j=0;j<5;j++)
{
NBY=~NBY;
delay250ms();
}
}
}
}
void trafficlight() interrupt 1
{
t++;
if(t<4000)
return;
t=0;
}
|