⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h15.c

📁 51单片机程序C和汇编
💻 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 + -