您的位置:控制工程论坛网论坛 » 教程与手册 » 用c做的交通灯程序

cqs0088

cqs0088   |   当前状态:在线

总积分:-390  2024年可用积分:0

注册时间: 2008-07-12

最后登录时间: 2012-05-30

空间 发短消息加为好友

用c做的交通灯程序

cqs0088  发表于 2008/9/24 15:52:01      611 查看 1 回复  [上一主题]  [下一主题]

手机阅读

用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楼 0 0 回复
  • txax

    txax   |   当前状态:离线

    总积分:25  2024年可用积分:0

    注册时间: 2008-09-08

    最后登录时间: 2008-11-22

    空间 发短消息加为好友

    txax   发表于 2008/9/24 15:52:01

    2楼 回复本楼

    引用 txax 2008/9/24 15:52:01 发表于2楼的内容

总共 , 当前 /