天津**大学2014届本科生毕业设计论文
}
}break; case 3:{
EnCarCounter = 2; //A_green and B_red if(!(T0Counter-GHAtime)) { }
T0Counter = 0; StatusCUT++; DISNumA = YHtime;
}break; case 4:{
EnCarCounter = 2; //A_yellow and B_red if(!(T0Counter-YHtime)) {
EX0=0;
EX1=0; //关闭外部中断,防止伪计数
T0Counter = 0; StatusCUT=1;
//-------------------------------------------------
if(Int1Counter <= 5)
GHBtime = 80;
else if(Int1Counter <= 10)
GHBtime = 120;
else
GHBtime = 160;
Int1Counter = 0;
36
天津**大学2014届本科生毕业设计论文
Int1Counter = 0;
//-------------------------------------------------
DISNumA = GHBtime+YHtime; DISNumB = GHBtime; EX0=1;
EX1=1; //
}
}break; default: ;
}
return 0;
}
u8 ExternItrptInit(void) { IT0=1; IT1=1;
return 0;
} /** * 扫描一次(4个)数码管
*/
u8 ScanDigitalLed(void) {
switch(ScanNum)
关闭外部中断,防止伪计数
37
天津**大学2014届本科生毕业设计论文
{
case 1:{
dsSL1; dsSL2; enSL4; dsSL3;
DATA = DataTable[TableNum[ScanNum - 1]]; ScanNum++;
}break;
case 2:{
dsSL1; dsSL2; dsSL4; enSL3;
DATA = DataTable[TableNum[ScanNum - 1]]; ScanNum++;
}break;
case 3:{
enSL1; dsSL2; dsSL3; dsSL4;
DATA = DataTable[TableNum[ScanNum - 1]]; ScanNum++;
}break; case 4:{
dsSL1; enSL2; dsSL3; dsSL4;
38
天津**大学2014届本科生毕业设计论文
}
}
DATA = DataTable[TableNum[ScanNum - 1]]; ScanNum=1;
}break; default : ;
return 0;
void main(void) {
DISNumA = GHBtime+YHtime; //A'red time DISNumB = GHBtime; //b'green time Init_Timer0();
//初始化外部定时器0中断
ExternItrptInit(); //初始化外部中断 allInterruptEna; //总中断使能 while(true) {
if(FLAG_GetDisNum) { } EX0 = 1; EX1 = 1;
switch(StatusCUT) //红绿灯执行
39
FLAG_GetDisNum = 0; RGY_CutControl();
TableNum[3] = (DISNumA >> 1)0/10; TableNum[2] = (DISNumA >> 1); TableNum[1] = (DISNumB >> 1)0/10; TableNum[0] = (DISNumB >> 1);
天津**大学2014届本科生毕业设计论文
}
{
case 1:{
Status1();
}break;
case 2:{
Status2();
}break;
case 3:{
Status3();
}break;
case 4:{
Status4();
}break; }
delay(); //避免数码管显示重影 ScanDigitalLed();
default : ;
}
//定时器0负责切换红绿灯
void Timer0_isr(void) interrupt 1 using 1 { }
40
TH0=0x13; TL0=0x88; T0Counter++; DISNumA--; DISNumB--;
//重新赋值
FLAG_GetDisNum = 1;