找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1252|回复: 0
打印 上一主题 下一主题
收起左侧

51交通灯和 仿真

[复制链接]
跳转到指定楼层
楼主
ID:588319 发表于 2020-6-16 22:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表