📄 h15.c
字号:
#include "reg51.h"
#define ON 1
#define OFF 0
sbit SR = 0x90; // 南北红灯
sbit SY = 0x91; // 南北黄灯
sbit SG = 0x92; // 南北绿灯
sbit ER = 0x93; // 东西红灯
sbit EY = 0x94; // 东西黄灯
sbit EG = 0x95; // 东西绿灯
bit Flash; // LED状态
bit STOP;
void StopInt() interrupt 0
{
STOP = 1;
}
void Delay(unsigned char CNT)
{
unsigned int I;
while ((CNT > 0) && !STOP) {
for (I=0; (I < 10000) && !STOP; I++) ;
CNT--;
}
}
void main()
{
unsigned char I;
TCON = 0x01; // INT0 下沿中断
IE = 0x81; // EA =1, EX0=1
STOP = 0;
SR = ON; // 南北, 东西均红灯
SY = OFF;
SG = OFF;
ER = ON;
EY = OFF;
EG = OFF;
while (1) {
if (STOP) goto AllRed;
SR = ON; // 南北红灯, 东西绿灯
SY = OFF;
SG = OFF;
ER = OFF;
EY = OFF;
EG = ON;
Delay(20);
if (STOP) goto AllRed;
SR = ON; // 南北红灯, 东西黄灯闪
SY = OFF;
SG = OFF;
ER = OFF;
EY = OFF;
EG = OFF;
Flash = OFF;
for (I=0; I < 9; I++) {
EY = Flash;
Delay(1);
Flash = !Flash;
}
if (STOP) goto AllRed;
SR = OFF; // 南北绿灯, 东西红灯
SY = OFF;
SG = ON;
ER = ON;
EY = OFF;
EG = OFF;
Delay(20);
if (STOP) goto AllRed;
SR = OFF; // 东西红灯, 南北黄灯闪
SY = OFF;
SG = OFF;
ER = ON;
EY = OFF;
EG = OFF;
Flash = OFF;
for (I=0; I < 9; I++) {
SY = Flash;
Delay(1);
Flash = !Flash;
}
AllRed:
if (STOP) {
SR = ON; // 南北, 东西均红灯
SY = OFF;
SG = OFF;
ER = ON;
EY = OFF;
EG = OFF;
STOP = 0;
Delay(10);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -