?? diguser.c
字號:
if(cn == 1) //0.5s
{
DIGOff(SOUTH_D); //南邊路口數碼管熄滅
DIGOff(WEST_D); //西邊路口數碼管熄滅
LEDOff(SOUTH_L,LeftYlw); //所有點亮的黃燈熄滅
LEDOff(SOUTH_L,StrtYlw);
LEDOff(SOUTH_L+1,RigtYlw);
LEDOff(SOUTH_L+1,MansYlw);
LEDOff(WEST_L,LeftYlw);
LEDOff(WEST_L,StrtYlw);
LEDOff(WEST_L+1,MansYlw);
LEDOff(NORTH_L+1,RigtYlw);
}
if(cn == 2) //1s,四個路口數碼管倒計時并顯示,被熄滅的黃燈點亮
{
cn = 0;
Enum--;
Snum--;
Wnum--;
Nnum--;
DIGShow(EAST_D,Enum);
DIGShow(SOUTH_D,Snum);
DIGShow(WEST_D,Wnum);
DIGShow(NORTH_D,Nnum);
LEDShow(EAST_L,LeftRed,StrtRed,RigtGrn,MansRed);
LEDShow(SOUTH_L,LeftYlw,StrtYlw,RigtYlw,MansYlw);
LEDShow(WEST_L,LeftYlw,StrtYlw,RigtRed,MansYlw);
LEDShow(NORTH_L,LeftRed,StrtRed,RigtYlw,MansRed);
if(Snum == 0xffff) //如果南邊路口倒計時到-1(由于要顯示00)
{
Snum = max; //南邊路口的倒計時時間設置為max
DirFlag = 0; //清狀態標志
}
}
*P_Watchdog_Clear = 0x0001;
}
}
//===========================================================================================================
//函數名: void WestSTrough(void)
//功能描述: 西邊路口車輛直行通行函數,該函數運行min秒,WestSTrough是(West Straight Trough的縮寫)
// 該函數實現允許西邊路口車輛直行、左拐和人行,東邊路口車輛右拐,南邊路口車輛右拐;禁止其他通行的功能
//入口參數: 無
//出口參數: 無
//===========================================================================================================
void WestSTrough(void)
{
//---------------------------------------------------------------------------------------------
//下面為西邊路口直行、左拐、人行道綠燈亮,東邊和南邊路口右拐路燈亮,其他紅燈亮狀態
//---------------------------------------------------------------------------------------------
DIGShow(EAST_D,Enum); //東邊路口數碼管顯示
DIGShow(SOUTH_D,Snum); //南邊路口數碼管顯示
DIGShow(WEST_D,Wnum); //西邊路口數碼管顯示
DIGShow(NORTH_D,Nnum); //北邊路口數碼管顯示
LEDShow(EAST_L,LeftRed,StrtRed,RigtGrn,MansRed); //東邊路口左拐、直行、人行道紅燈亮,右拐綠燈亮
LEDShow(SOUTH_L,LeftRed,StrtRed,RigtGrn,MansRed); //南邊路口左拐、直行、人行道紅燈亮,右拐綠燈亮
LEDShow(WEST_L,LeftGrn,StrtGrn,RigtRed,MansGrn); //西邊路口左拐、直行、人行道綠燈亮,右拐紅燈亮
LEDShow(NORTH_L,LeftRed,StrtRed,RigtRed,MansRed); //北邊路口全部紅燈亮
while(DirFlag==WEST_G) //如果是WEST_G狀態,循環,該狀態持續21s
{
if(cn == 2) //四個路口數碼管倒計時并顯示
{
cn = 0;
Enum--;
Snum--;
Wnum--;
Nnum--;
DIGShow(EAST_D,Enum);
DIGShow(SOUTH_D,Snum);
DIGShow(WEST_D,Wnum);
DIGShow(NORTH_D,Nnum);
if(Wnum==Ylwtime) //如果西邊倒計時到設定黃燈時間
{
DirFlag = WEST_Y; //改變為下一個狀態,WEST_Y狀態
}
}
*P_Watchdog_Clear = 0x0001;
}
//---------------------------------------------------------------------------------------------
//下面為西邊路口所有黃燈閃爍,北邊路口左拐、直行、人行道黃燈閃爍,東邊路口右拐黃燈閃爍狀態
//---------------------------------------------------------------------------------------------
LEDShow(EAST_L,LeftRed,StrtRed,RigtYlw,MansRed); //東邊路口左拐、直行、人行道紅燈亮,右拐黃燈亮
LEDShow(SOUTH_L,LeftRed,StrtRed,RigtGrn,MansRed); //南邊路口左拐、直行、人行道紅燈亮,右拐綠燈亮
LEDShow(WEST_L,LeftYlw,StrtYlw,RigtYlw,MansYlw); //西邊路口全部黃燈亮
LEDShow(NORTH_L,LeftYlw,StrtYlw,RigtRed,MansYlw); //北邊路口左拐、直行、人行道黃燈亮,右拐紅燈亮
while(DirFlag==WEST_Y) //WEST_Y狀態持續4s
{
if(cn == 1) //0.5s
{
DIGOff(WEST_D); //西邊路口數碼管熄滅
DIGOff(NORTH_D); //北邊路口數碼管熄滅
LEDOff(WEST_L,LeftYlw); //所有點亮的黃燈熄滅
LEDOff(WEST_L,StrtYlw);
LEDOff(WEST_L+1,RigtYlw);
LEDOff(WEST_L+1,MansYlw);
LEDOff(NORTH_L,LeftYlw);
LEDOff(NORTH_L,StrtYlw);
LEDOff(NORTH_L+1,MansYlw);
LEDOff(EAST_L+1,RigtYlw);
}
if(cn == 2) //1s,四個路口數碼管倒計時并顯示,被熄滅的黃燈點亮
{
cn = 0;
Enum--;
Snum--;
Wnum--;
Nnum--;
DIGShow(EAST_D,Enum);
DIGShow(SOUTH_D,Snum);
DIGShow(WEST_D,Wnum);
DIGShow(NORTH_D,Nnum);
LEDShow(EAST_L,LeftRed,StrtRed,RigtYlw,MansRed);
LEDShow(SOUTH_L,LeftRed,StrtRed,RigtGrn,MansRed);
LEDShow(WEST_L,LeftYlw,StrtYlw,RigtYlw,MansYlw);
LEDShow(NORTH_L,LeftYlw,StrtYlw,RigtRed,MansYlw);
if(Wnum == 0xffff) //如果西邊路口倒計時到-1(由于要顯示00)
{
Wnum = max; //西邊路口的倒計時時間設置為max
DirFlag = 0; //清狀態標志
}
}
*P_Watchdog_Clear = 0x0001;
}
}
//===========================================================================================================
//函數名: void NorthSTrough(void)
//功能描述: 北向直行通行函數
// 該函數實現允許北邊路口車輛直行、左拐和人行,南邊路口車輛右拐,西邊路口車輛右拐;禁止其他通行的功能
//入口參數: 無
//出口參數: 無
//===========================================================================================================
void NorthSTrough(void)
{
//---------------------------------------------------------------------------------------------
//下面為北邊路口直行、左拐、人行道綠燈亮,南邊和西邊路口右拐路燈亮,其他紅燈亮狀態
//---------------------------------------------------------------------------------------------
DIGShow(EAST_D,Enum); //東邊路口數碼管顯示
DIGShow(SOUTH_D,Snum); //南邊路口數碼管顯示
DIGShow(WEST_D,Wnum); //西邊路口數碼管顯示
DIGShow(NORTH_D,Nnum); //北邊路口數碼管顯示
LEDShow(EAST_L,LeftRed,StrtRed,RigtRed,MansRed); //東邊路口全部紅燈亮
LEDShow(SOUTH_L,LeftRed,StrtRed,RigtGrn,MansRed); //南邊路口左拐、直行、人行道紅燈亮,右拐綠燈亮
LEDShow(WEST_L,LeftRed,StrtRed,RigtGrn,MansRed); //西邊路口左拐、直行、人行道紅燈亮,右拐綠燈亮
LEDShow(NORTH_L,LeftGrn,StrtGrn,RigtRed,MansGrn); //北邊路口左拐、直行、人行道綠燈亮,右拐紅燈亮
while(DirFlag==NORTH_G) //如果是NORTH_G狀態,循環,該狀態持續21s
{
if(cn == 2) //四個路口數碼管倒計時并顯示
{
cn = 0;
Enum--;
Snum--;
Wnum--;
Nnum--;
DIGShow(EAST_D,Enum);
DIGShow(SOUTH_D,Snum);
DIGShow(WEST_D,Wnum);
DIGShow(NORTH_D,Nnum);
if(Nnum==Ylwtime) //如果北邊倒計時到設定黃燈時間
{
DirFlag = NORTH_Y; //改變為下一個狀態,NORTH_Y狀態
}
}
*P_Watchdog_Clear = 0x0001;
}
//---------------------------------------------------------------------------------------------
//下面為西邊路口所有黃燈閃爍,北邊路口左拐、直行、人行道黃燈閃爍,東邊路口右拐黃燈閃爍狀態
//---------------------------------------------------------------------------------------------
LEDShow(EAST_L,LeftYlw,StrtYlw,RigtRed,MansYlw); //東邊路口左拐、直行、人行道黃燈亮,右拐紅燈亮
LEDShow(SOUTH_L,LeftRed,StrtRed,RigtYlw,MansRed); //南邊路口左拐、直行、人行道紅燈亮,右拐黃燈亮
LEDShow(WEST_L,LeftRed,StrtRed,RigtGrn,MansRed); //西邊路口左拐、直行、人行道紅燈亮,右拐綠燈亮
LEDShow(NORTH_L,LeftYlw,StrtYlw,RigtYlw,MansYlw); //北邊路口全部黃燈亮
while(DirFlag==NORTH_Y) //NORTH_Y狀態持續4s
{
if(cn == 1) //0.5s
{
DIGOff(NORTH_D); //北邊路口數碼管熄滅
DIGOff(EAST_D); //東邊路口數碼管熄滅
LEDOff(NORTH_L,LeftYlw); //所有點亮的黃燈熄滅
LEDOff(NORTH_L,StrtYlw);
LEDOff(NORTH_L+1,RigtYlw);
LEDOff(NORTH_L+1,MansYlw);
LEDOff(EAST_L,LeftYlw);
LEDOff(EAST_L,StrtYlw);
LEDOff(EAST_L+1,MansYlw);
LEDOff(SOUTH_L+1,RigtYlw);
}
if(cn == 2) //1s,四個路口數碼管倒計時并顯示,被熄滅的黃燈點亮
{
cn = 0;
Enum--;
Snum--;
Wnum--;
Nnum--;
DIGShow(EAST_D,Enum);
DIGShow(SOUTH_D,Snum);
DIGShow(WEST_D,Wnum);
DIGShow(NORTH_D,Nnum);
LEDShow(EAST_L,LeftYlw,StrtYlw,RigtRed,MansYlw);
LEDShow(SOUTH_L,LeftRed,StrtRed,RigtYlw,MansRed);
LEDShow(WEST_L,LeftRed,StrtRed,RigtGrn,MansRed);
LEDShow(NORTH_L,LeftYlw,StrtYlw,RigtYlw,MansYlw);
if(Nnum == 0xffff) //如果北邊路口倒計時到-1(由于要顯示00)
{
Nnum = max; //北邊路口的倒計時時間設置為max
DirFlag = 0; //清狀態標志
}
}
*P_Watchdog_Clear = 0x0001;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -