h15.c
来自「51单片机程序C和汇编」· C语言 代码 · 共 118 行
C
118 行
#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 + =
减小字号Ctrl + -
显示快捷键?