亮
灭
灭
灭
闪烁
灭
东西向禁止,南北向警告
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit Red_A = P0^0;//东西向指示灯
sbit Yellow_A = P0^1;
sbit Green_A = P0^2;
sbit Red_B = P0^3;//南北向指示灯
sbit Yellow_B = P0^4;
sbit Green_B = P0^5;
uchar Flash_Count = 0; //闪烁次数
uchar Operation_Type = 1;//操作类型
/********************************************************************
函数名称:
DelayMS;函数功能:延时函数;入口参数:从而控制延时时间长短
********************************************************************/
void DelayMS(uint x)
{
uchar i;
while(x--)
for(i=0; i<120; i++);
}
/********************************************************************
函数名称:
Traffic_Light,函数功能:交通灯切换子程序
********************************************************************/
void Traffic_Light()
{
switch (Operation_Type)
{
case 1: //东西向绿灯与南北向红灯亮
Red_A = 1; Yellow_A = 1; Green_A = 0;
Red_B = 0; Yellow_B = 1; Green_B = 1;
DelayMS(4000); //延时
Operation_Type = 2; //下一操作
break;
case 2: //东西向黄灯开始闪烁,绿灯关闭
Green_A = 1;
//闪烁 5 次
for(Flash_Count=0;Flash_Count<10;Flash_Count++)
{
DelayMS(600); //延时
Yellow_A = !Yellow_A;
}
Operation_Type = 3; //下一操作
break;
case 3: //东西向红灯与南北向绿灯亮