📄 main.c
字号:
#include "iom16v.h"
#include "DataType.h"
#include "app.h"
#define cSelfTestMode 0
#define cNormalMode 1
#define cTraffic_V 0
#define cTraffic_H 1
#define cReserved 0
#define cForbidden 1
#define cBuffer1 2
#define cAllow 3
#define cBuffer2 4
INT8U ControllerMode;
INT8U TrafficStatus_V;
INT8U TrafficStatus_H;
INT8U Time_V;
INT8U Time_H;
INT8U TimeBCD_V[2] = {0,0};
INT8U TimeBCD_H[2] = {0,0};
const INT8U SegTable[] = {0x7E,0x60,0x3D,0x79,0x63,0x5B,0x5F,0x70,0x7F,0x7B};
void System_Init(void)
{
ControllerMode = cSelfTestMode;
TrafficStatus_V = cReserved;
TrafficStatus_H = cReserved;
Time_V = 0;
Time_H = 0;
}
void SetTrafficStatus(INT8U Index,INT8U Status)
{
if(Index == cTraffic_V)
{
TrafficStatus_V = Status;
if(Status == cAllow)
{
LED_ON_OFF(cR_LED_V,cLED_OFF);
LED_ON_OFF(cG_LED_V,cLED_ON);
LED_ON_OFF(cY_LED_V,cLED_OFF);
Time_V = 30;
}
else if((Status == cBuffer1) || (Status == cBuffer2))
{
LED_ON_OFF(cR_LED_V,cLED_OFF);
LED_ON_OFF(cG_LED_V,cLED_OFF);
LED_ON_OFF(cY_LED_V,cLED_ON);
Time_V = 5;
}
else if(Status == cForbidden)
{
LED_ON_OFF(cR_LED_V,cLED_ON);
LED_ON_OFF(cG_LED_V,cLED_OFF);
LED_ON_OFF(cY_LED_V,cLED_OFF);
Time_V = 30;
}
}
else if(Index == cTraffic_H)
{
TrafficStatus_H = Status;
if(Status == cAllow)
{
LED_ON_OFF(cR_LED_H,cLED_OFF);
LED_ON_OFF(cG_LED_H,cLED_ON);
LED_ON_OFF(cY_LED_H,cLED_OFF);
Time_H = 30;
}
else if((Status == cBuffer1) || (Status == cBuffer2))
{
LED_ON_OFF(cR_LED_H,cLED_OFF);
LED_ON_OFF(cG_LED_H,cLED_OFF);
LED_ON_OFF(cY_LED_H,cLED_ON);
Time_H = 5;
}
else if(Status == cForbidden)
{
LED_ON_OFF(cR_LED_H,cLED_ON);
LED_ON_OFF(cG_LED_H,cLED_OFF);
LED_ON_OFF(cY_LED_H,cLED_OFF);
Time_H = 30;
}
}
}
void main(void)
{
Hardware_Init();
System_Init();
while(1)
{
;
}
}
#pragma interrupt_handler Timer0_Interrupt:20
void Timer0_Interrupt(void)
{
static INT8U TimeCount = 0;
//Clear Timer0 OCIF Flag
TIFR |= 0x02;
TCNT0 = 0x00;
if(ControllerMode == cNormalMode)
{
INT2BCD(Time_V,TimeBCD_V);
INT2BCD(Time_H,TimeBCD_H);
if(TimeCount == 0)
{
mSet_Data_V(DataConvert(TimeBCD_V[0]));
mSet_Data_H(DataConvert(TimeBCD_H[0]));
mSelect_V0();
mSelect_H0();
TimeCount = 1;
}
else if(TimeCount == 1)
{
mSet_Data_V(DataConvert(TimeBCD_V[1]));
mSet_Data_H(DataConvert(TimeBCD_H[1]));
mSelect_V1();
mSelect_H1();
TimeCount = 0;
}
}
}
#pragma interrupt_handler Timer1_Interrupt:7
void Timer1_Interrupt(void)
{
static INT8U TimeCount = 0;
//Clear Timer1 OCIF Flag
TIFR |= 0x10;
TCNT1 = 0x00;
if(ControllerMode == cSelfTestMode)
{
TimeCount++;
if(TimeCount == 1)
{
LED_ON_OFF(cR_LED_V,cLED_ON);
LED_ON_OFF(cG_LED_V,cLED_ON);
LED_ON_OFF(cY_LED_V,cLED_ON);
}
else if(TimeCount == 2)
{
mSet_Data_V(0xFF);
mSelect_VA();
}
else if(TimeCount == 3)
{
LED_ON_OFF(cR_LED_H,cLED_ON);
LED_ON_OFF(cG_LED_H,cLED_ON);
LED_ON_OFF(cY_LED_H,cLED_ON);
}
else if(TimeCount == 4)
{
mSet_Data_H(0xFF);
mSelect_HA();
}
else if(TimeCount == 5)
{
LED_ON_OFF(cR_LED_V,cLED_OFF);
LED_ON_OFF(cG_LED_V,cLED_OFF);
LED_ON_OFF(cY_LED_V,cLED_OFF);
}
else if(TimeCount == 6)
{
mSelect_VN();
}
else if(TimeCount == 7)
{
LED_ON_OFF(cR_LED_H,cLED_OFF);
LED_ON_OFF(cG_LED_H,cLED_OFF);
LED_ON_OFF(cY_LED_H,cLED_OFF);
}
else if(TimeCount == 8)
{
mSelect_HN();
}
else if(TimeCount == 9)
{
TimeCount = 0;
ControllerMode = cNormalMode;
SetTrafficStatus(cTraffic_V,cAllow);
SetTrafficStatus(cTraffic_H,cForbidden);
}
}
else if(ControllerMode == cNormalMode)
{
if(TrafficStatus_V == cAllow)
{
if(Time_V-- == 0)
{
SetTrafficStatus(cTraffic_V,cBuffer1);
}
}
else if(TrafficStatus_V == cBuffer1)
{
if(Time_V-- == 0)
{
SetTrafficStatus(cTraffic_V,cForbidden);
}
}
else if(TrafficStatus_V == cForbidden)
{
if(Time_V-- == 0)
{
SetTrafficStatus(cTraffic_V,cBuffer2);
}
}
else if(TrafficStatus_V == cBuffer2)
{
if(Time_V-- == 0)
{
SetTrafficStatus(cTraffic_V,cAllow);
}
}
if(TrafficStatus_H == cAllow)
{
if(Time_H-- == 0)
{
SetTrafficStatus(cTraffic_H,cBuffer1);
}
}
else if(TrafficStatus_H == cBuffer1)
{
if(Time_H-- == 0)
{
SetTrafficStatus(cTraffic_H,cForbidden);
}
}
else if(TrafficStatus_H == cForbidden)
{
if(Time_H-- == 0)
{
SetTrafficStatus(cTraffic_H,cBuffer2);
}
}
else if(TrafficStatus_H == cBuffer2)
{
if(Time_H-- == 0)
{
SetTrafficStatus(cTraffic_H,cAllow);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -