background image

闪烁

东西向禁止,南北向警告

#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: //东西向红灯与南北向绿灯亮