找回密码
 立即注册

QQ登录

只需一步,快速开始

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

交通灯显示问题,求帮改一下代码

[复制链接]
跳转到指定楼层
楼主
ID:789174 发表于 2020-6-29 12:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10黑币
#include<reg51.h>
     unsigned char sum;
         bit a,b;
         unsigned char gw;        //定义个位
         unsigned char sw;  //定义十位
         //定义LED端口
         sbit L1=P1^0;
         sbit L2=P1^1;
         sbit L3=P1^2;
         sbit L4=P1^3;
         sbit L5=P1^4;
         sbit L6=P1^5;
         //数码管段码位码显示
         unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x7d,0x07,0x7f,0x6f};
        void display();
         //延时子程序 5ms
         void delay(int x)
         {
           int i,j;
           for(i=0;i<x;i++)
           for(j=0;j<600;j++);
         }
         //主程序
         void main()
         {  unsigned char k;
          
           TMOD=0X01;
           EA=1;
           EX0=1;
           EX1=1;
           ET0=1;
           IT0=1;
           IT1=1;
           TH0=0xd8;
           TL0=0xf0;
           TR0=1;
           PX0=1;
           P0=0X3F;
           P2=0XF0;
           while(1)
           {
             display();
             P1=0xf3;
                 delay(11000);
                 for(k=0;k<3;k++)
                  {
                     a=1;
                     delay(1);
                     P1=0xf3;
                         delay(100);
                         P1=0xfb;
                         delay(100);

                  }
                     P1=0xed;
                     delay(400);
                     P1=0xde;
                     delay(11000);
                     for(k=0;k<3;k++)
                  {
                     b=1;
                     P1=0Xde;
                         delay(100);
                         P1=0xdf;
                         delay(100);
                   }
                     P1=0xf6;
                   delay(400);
                 }
                 }


                 void display()
                 {
                   TR0=1;
               while(P1==0xf3)
                  {
                        sum=55;
                     P0=sw;
                     P2=0XFA;
                     delay(100);
                     P0=gw;
                     P2=0XF5;
                     delay(100);
                 }
                          while(a==1)
                  {          
                        sum=3;
                     P0=sw;
                    P2=0XFA;

                     delay(100);
                     P0=gw;
                           P2=0XF5;
                     delay(100);
                 }
                    while(P1==0xed)
                  {       
                        sum=2;
                     P0=sw;
                     P2=0XFA;
                     delay(100);
                     P0=gw;
                   P2=0XF5;
                     delay(100);
                 }         
                      while(P1==0xde)
                  {       
                        sum=55;
                     P0=sw;
                     P2=0XFA;
                     delay(100);
                     P0=gw;
                     P2=0XF5;
                     delay(100);
                 }
                      while(b==1)
                  {         
                        sum=3;
                     P0=sw;
                    P2=0XFA;
                     delay(100);
                     P0=gw;
                   P2=0XF5;
                     delay(100);
                 }
                      while(P1==0xf6)
                  {         
                        sum=2;
                     P0=sw;
                       P2=0XFA;
                     delay(100);
                     P0=gw;
                       P2=0XF5;
                     delay(100);
                 }
        }            
        //外部中断0  紧急情况
        void int_0(void) interrupt 0  using 1
        {
            unsigned char i,j,k,l,m,c,d,e;
                i=P0;
                j=P1;
                k=P2;
                l=TH0;
                m=TL0;
                c=sum;
                d=a;
                e=b;
                P1=0XF6;
                delay(2000);
                P0=i;
                P1=j;
                P2=k;
                TH0=l;
                TL0=m;
                sum=c;
                a=d;
                b=e;
        }
        //外部中断1 特殊情况
                 void int_1(void) interrupt 2  using 2
        {
            unsigned char i,j,k,l,m,c,d,e;
                i=P0;
                j=P1;
                k=P2;
                l=TH0;
                m=TL0;
                c=sum;
                d=a;
                e=b;
                P1=0XF3;
                delay(2000);
                P0=i;
                P1=j;
                P2=k;
                TH0=l;
                TL0=m;
                sum=c;
                a=d;
                b=e;
        }
        //定时器中断
        void time(void) interrupt 1 using 3
        {   
          int se,count;
          TH0=0Xd8;
          TL0=0xf0;
          se++;
          if(se==100)
          {
            se=0;
                count++;
                if(count==sum)
                count=0;
            sw=table[count/10];
             gw=table[count%10];
                 }
                }
                 










原理图.zip

22.21 KB, 下载次数: 2, 下载积分: 黑币 -5

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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