|
#include<include.h>
sbit NS_GRE = P2^5;
sbit NS_YEL = P2^4;
sbit NS_RED = P2^3;
sbit EW_GRE = P2^2;
sbit EW_YEL = P2^1;
sbit EW_RED = P2^0;
uint8 EW_Timer = unused8; //東西方向紅燈定時器
uint8 NS_Timer = unused8; //南北方向紅燈定時器
uint8 YEL_Timer = unused8; //黃燈 5s定時器
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)){//東西方向紅燈計時到 東西方向保持紅燈 南北方向變黃燈 開始黃燈5s計時
EW_RED_ON(); //東西方向紅燈
NS_YEL_ON(); //南北方向黃燈
YEL_Timer = YELTime_Count; //5s計時
}
if((EW_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){
display1(YEL_Timer/10, YEL_Timer%10); //東西方向顯示時間 南北方向不顯示
}
if((EW_Timer != unused8) && (YEL_Timer == 0)){ //東西方向紅-南北方向黃燈5s計時到 東西紅燈定時器關 黃燈定時器關 南北紅燈 東西綠燈 南北計時器開
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)){ //南北方向紅燈計時到 南北方向保持紅燈 東西方向變黃燈 開始黃燈5s計時
NS_RED_ON(); //南北方向保持紅燈
EW_YEL_ON(); //東西方向變黃燈
YEL_Timer = YELTime_Count; //5s計時
}
if((NS_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){
display2(YEL_Timer/10, YEL_Timer%10); //南北方向顯示時間 東西方向不顯示
}
if((NS_Timer != unused8) && (YEL_Timer == 0)){ //南北方向紅-東西方向黃燈5s計時到 南北方向定時器關 黃燈定時器關 東西方向變紅燈 南北方向變綠燈 東西方向紅燈計時器開始計時
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;
}
}
}
|
|