#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit NS_GRE = P0^5 ;
sbit NS_YEL = P0^4 ;
sbit NS_RED = P0^3 ;
sbit EW_GRE = P0^2 ;
sbit EW_YEL = P0^1 ;
sbit EW_RED = P0^0 ;
uint8 EW_Timer = unused8;
uint8 NS_Timer = unused8;
uint8 YEL_Timer = unused8;
int main(void)
{
Timer_Init();
INT0_Init();
EA=1;
NS_GRE = OFF;
NS_YEL = OFF;
NS_RED = OFF;
EW_GRE = OFF;
EW_YEL = OFF;
EW_RED = OFF;
P3 = 0xFF;
EW_Timer = EWTime_Count;
while(1)
{
if((EW_Timer != unused8) && (EW_Timer != 0))
{
display1(EW_Timer/10, EW_Timer%10);
EW_RED_ON();
NS_GRE_ON();
}
else if((EW_Timer != unused8) && (EW_Timer == 0) && (YEL_Timer == unused8))
{
EW_RED_ON();
NS_YEL_ON();
YEL_Timer = YELTime_Count;
}
if((EW_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0))
{
display1(YEL_Timer/10, YEL_Timer%10);
}
if((EW_Timer != unused8) && (YEL_Timer == 0))
{
EW_Timer = unused8;
YEL_Timer = unused8;
NS_RED_ON();
EW_GRE_ON();
NS_Timer = NSTime_Count;
}
if((NS_Timer != unused8) && (NS_Timer != 0))
{ display2(NS_Timer/10, NS_Timer%10);
EW_GRE_ON();
NS_RED_ON();
}
else if((NS_Timer != unused8) && (NS_Timer == 0) && (YEL_Timer == unused8))
{
NS_RED_ON();
EW_YEL_ON();
YEL_Timer = YELTime_Count;
}
if((NS_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0))
{
display2(YEL_Timer/10, YEL_Timer%10);
}
if((NS_Timer != unused8) && (YEL_Timer == 0))
{
NS_Timer = unused8;
YEL_Timer = unused8;
EW_RED_ON();
NS_GRE_ON();
EW_Timer = EWTime_Count;
}
if(Flag_Key == 1)
{
P3 = 0xFF;
EW_RED_ON();
NS_RED_ON();
EW_Timer = unused8;
NS_Timer = unused8;
YEL_Timer = unused8;
}
}
}
sbit Key = P3^2;
uint8 Flag_Key = 0;
void INT0_Init(void)
{
EX0 = 1;
IT0 = 1;
}
void Key_Stop(void) interrupt 0
{
Delay10uS(200);
if(Key == 0)
{
Flag_Key = 1;
}
}
sbit NS_GRE = P0^5;
sbit NS_YEL = P0^4;
sbit NS_RED = P0^3;
sbit EW_GRE = P0^2;
sbit EW_YEL = P0^1;
sbit EW_RED = P0^0;
uint8 EW_Timer = unused8;
uint8 NS_Timer = unused8;
uint8 YEL_Timer = unused8;
int main(void)
{
Timer_Init();
INT0_Init();
EA=1;
NS_GRE = OFF;
NS_YEL = OFF;
NS_RED = OFF;
EW_GRE = OFF;
EW_YEL = OFF;
EW_RED = OFF;
P3 = 0xFF;
EW_Timer = EWTime_Count;
while(1)
{
if((EW_Timer != unused8) && (EW_Timer != 0))
{
display1(EW_Timer/10, EW_Timer%10);
EW_RED_ON();
NS_GRE_ON();
}
else if((EW_Timer != unused8) && (EW_Timer == 0) && (YEL_Timer == unused8))
{
EW_RED_ON();
NS_YEL_ON();
YEL_Timer =YELTime_Count;
}
if((EW_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0))
{
display1(YEL_Timer/10, YEL_Timer%10);
}
if((EW_Timer != unused8) && (YEL_Timer == 0))
{
EW_Timer = unused8;
YEL_Timer = unused8;
NS_RED_ON();
EW_GRE_ON();
NS_Timer = NSTime_Count;
}
if((NS_Timer != unused8) && (NS_Timer != 0))
{
display2(NS_Timer/10, NS_Timer%10);
EW_GRE_ON();
NS_RED_ON();
}
else if((NS_Timer != unused8) && (NS_Timer == 0) && (YEL_Timer == unused8))
{
NS_RED_ON();
EW_YEL_ON();
YEL_Timer = YELTime_Count;
}
if((NS_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0))
{
display2(YEL_Timer/10, YEL_Timer%10);
}
if((NS_Timer != unused8) && (YEL_Timer == 0))
{
NS_Timer = unused8;
YEL_Timer = unused8;
EW_RED_ON();
NS_GRE_ON();
EW_Timer = EWTime_Count;
}
if(Flag_Key == 1)
{
P3 = 0xFF;
EW_RED_ON();
NS_RED_ON();
EW_Timer = unused8;
NS_Timer = unused8;
YEL_Timer = unused8;
}
}
}
uint8 Timer = 20;
void Timer_Init(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
}
void timer1(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(Timer > 0)
{
Timer--;
if(Timer == 0)
{
Timer = 20;
if((EW_Timer != unused8) && (EW_Timer > 0))
{
EW_Timer--;
}
if((NS_Timer != unused8) && (NS_Timer >0))
{
NS_Timer--;
}
if((YEL_Timer != unused8) && (YEL_Timer >0))
{
YEL_Timer--;
}
}
}
}
|