标题: 51交通灯和 仿真 [打印本页]

作者: 青色    时间: 2020-6-16 22:22
标题: 51交通灯和 仿真
void main()
{
   P1=0x21;  //刚开始南北的红灯亮,东西的绿灯亮
   TMOD=0x01;
   TH0=(65535-50000)/256;
   TL0=(65535-50000)%256;   //初值
   EA=1;     //打开总中断
   ET0=1;    //定时器0允许中断
   TR0=1;    //定时器0开始计时
   EX0=1;    //外部中断0允许位
   IT0=1;    //外部中断0触发方式(下降沿)
   while(1)
   {
      if(flag)
      {
               if(!p)
      {
          shi1=time1/10;   //南北十位
          ge1=time1%10; //南北个位
          shi2=time2/10;   //东西十位
          ge2=time2%10; //东西个位
          display(ge1,shi1,ge2,shi2); //显示函数
      }
       if(p)
          dis();  //不显示函数
      if(key==3)   //夜间模式
      {
          P0=0xff;
          q=!q;
          if(q!=0)
             P1=0x12;
          else
             P1=0;
          delay(200);
      }
   }  
}   
void ext0() interrupt 0
{
   flag=1;
   status=P2;
}
void timer() interrupt1   //定时中断程序
{
   TH0=(65535-50000)/256;
   TL0=(65535-50000)%256;     //重新赋初值
   temp++;
   if(temp==20)   //说明过去了1秒
   {
      temp=0;   //清零,重新加到20
      //东西方向南北方向时间自减
      time1--;
      time2--;
      if(time1>time2)  //南北大于东西
      {
          time1=time2+3;
          P1=0x21;  //南北红灯亮起,东西绿灯亮起
         if(time2==0&&time1==3)  
          {
             time2=3;  //重新赋南北和东西的差值,与南北方向一起倒计时
             P1=0x11;  //东西黄灯亮起,东西绿灯关闭
             tab=0;  //标志位
          }  
      }
      if(time1<time2)  //南北小于东西
      {  
          time2=time1+3;      
          P1=0x0c;  //南北绿灯亮起,东西红灯亮起
          if(time1==0&&time2==3)  
          {
             time1=3;  //重新赋南北和东西的差值,与东西方向一起倒计时
             P1=0x0a;  //南北黄灯亮起,南北绿灯关闭
             tab=1; //标志位
          }  
      }
      if(!tab)        //黄灯闪烁三秒
      {
          if(time1==2&&time2==2)
             P1=0x01;
          if(time1==1&&time2==1)
             P1=0x11;
      }
      if(tab)
      {
          if(time1==2&&time2==2)
             P1=0x08;
          if(time1==1&&time2==1)
             P1=0x0a;
      }  
      if(time1==0&&time2==0&&tab==0)  //东西倒计时结束
      {
          time1=t1;
          time2=t1+3;
          P1=0x0c;   //东西红灯,南北绿灯
      }
      if(time1==0&&time2==0&&tab==1)  //南北倒计时结束
      {
         time1=t2+3;
          time2=t2;
          P1=0x21;   //南北红灯,东西绿灯
      }  
   }  

}

交通灯-1.zip

11.04 MB, 下载次数: 40, 下载积分: 黑币 -5






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1