控制工程师论坛

教程与手册

用c做的交通灯程序

cqs0088
cqs0088

2008-09-24

用c做的交通灯程序

#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uint time=0;
uint i,j,c=1,d,a=30;
uint b=5,f=5,k=20;
  sbit P20=P2^0; //定义p2.0,p2.1
  sbit P21=P2^1;
void delay(uint Delay)   //延时显示
{ uint q;
   for(;Delay>0;Delay--)
     {for(q=0;q<31;q++);
     }
}
void xianshi(uint d)
{
     i=d%10;
     j=d/10;
     if(d==-1)
      {
         if(a==-1)
            a=30;
         if(b==-1)
            b=5;
         if(f==-1)
            f=5;
         if(k==-1)
            k=20;
         c++;
        if(c==5)
         {c=1;}
      }
     P0=i;
     P20=0;
     delay(1);
     P20=1;
     P0=j;
     P21=0;
     delay(1);
     P21=1;
}
timer0()interrupt 1 using 1   //中断后进入这里,定时器0方式一
{
  time++;  // 20次后是一秒
  TH0=0x3c;
  TL0=0xb0;
}
main()
{
  P2=0xff;
  TMOD=0x01; //方式一
  TH0=0x3c;
  TL0=0xb0;
  EA=1;  //总中断容许
  ET0=1; //t0中断容许
  TR0=1; // 开始定时
for(;;)
{
  if(time==20)  //到20次后加一秒
   {time=0;
    if(c==1){a--;}
    if(c==2){b--;}
    if(c==3){k--;}
    if(c==4){f--;}
   }
  else
   { if(c==1)
     {P1=0xD7;
      xianshi(a);
     }
     if(c==2)
     {P1=0xED;
      xianshi(b);
     }
     if(c==3)
     {P1=0xFA;
      xianshi(k);
     }
     if(c==4)
     {P1=0xED;
      xianshi(f);
     }

   }
  }

回帖

评论1

总共 , 当前 /
首页 | 登录 | 注册 | 返回顶部↑
手机版 | 电脑版
版权所有 Copyright(C) 2016 CE China