找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1782|回復: 0
收起左側(cè)

交通燈顯示問題,求幫改一下代碼

[復制鏈接]
ID:789174 發(fā)表于 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;
         //數(shù)碼管段碼位碼顯示
         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, 下載次數(shù): 2, 下載積分: 黑幣 -5

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表