求检查一下是否正确,交通灯

求检查一下是否正确,我按按键感觉没用不知道为啥,能不能再加一个倒计时显示,感谢各位

img

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/487677905786156.jpg "****


- 
1. 


```****#left")
//功能:交通灯信号led灯
#include <reg52.h>           
unsigned char t0,t1;
sbit K1=P3^1;
sbit K2=P3^0;
sbit K4=P3^3;

// 在工作方式1下定时50ms,再循环10次即可定时到0.5s 

void delay0_5s1()
{  
   for(t0=0;t0<10;t0++)        //采用全局变量to作为循环控制变量 
   {         
   TH1=(65536-50000)/256;    //设置定时器初值
   TL1=(65536-50000)%256;  
TR1=1;                           //启动T1 
   while(!TF1);       //查询计数是否溢出,即 50ms 定时时间到,TF1=1
   TF1=0;          //50 ms定时时间到,将定时器溢出标志位TF1清零
   }
}
void delay_t1(unsigned char t)
{
    for(t1=0;t1<t;t1++)        //采用全局变量t1作为循环控制变量
    delay0_5s1();
}
//函数功能:外部中断0中断函数,紧急情况处理,当CPU应外部中中请求时,自动执行该函数,实现两个方向红灯同时亮10s
void int_0()  interrupt 0         //紧急情况中断
{
    
 unsigned char i,j,k,l,m;
 i=P2;                //保护现场,暂存 P2口、t0、t1、TH1、TL1 
 j=t0;
 k=t1;
 l=TH1;
 m=TL1;
P2=0xdb;            //两个方向都是红灯
 delay_t1(10);            //延时10s 
 P2=i;            //恢复现场,恢复进入中断前 P1口、t0、t1、TH1、TL1 
t0=j;
 t1=k;
 TH1=l;
 TL1=m;
   }

void main()            //主函数            
{ 
    unsigned int n,k;
    n=4;
    
 TMOD=0x10;            //T1设置为工作方式1 
 EA=1;               //开总中断允许位
EX0=1;              //开外部中断0中断允许位 
 IT0=1;               //设置外部中断0为下降沿触发 
EX1=1;              //开外部中断1中断允许位 
 IT1=1;               //设置外部中断1为下降沿触发 
while(1){

       
   P2=0xf3;            //A绿灯,B红灯,延时2s
   delay_t1(n);                  
    for(k=0;k<3;k++)            //A绿灯闪烁3次 
    {P2=0xf3;
     delay0_5s1();            //延时0.5 s
     P2=0xfb;
     delay0_5s1();            //延时0.5 s
     }
        
         
   P2=0xeb;                //A黄灯,B红灯,延时2s 
   delay_t1(4);
   P2=0xde;                //A红灯,B绿灯,延时2s 
   delay_t1(n);
   for(k=0;k<3;k++)            //B绿灯闪烁3次 
    {P2=0xde;
     delay0_5s1();            //延时0.5s 
     P2=0xdf;
     delay0_5s1();            //延时0.5 s
     }
   P2=0xdd;                   //A红灯,B黄灯,延时2s 
   delay_t1(4);
         
    //ledledledled灯完成一次循环,可以修改时间了!!!!!!!
         
         if(K1==0)
         {   P2=0xf3;            //A绿灯,B红灯,延时time+5s
   delay_t1(n=n+10);                  
    for(k=0;k<3;k++)            //A绿灯闪烁3次 
    {P2=0xf3;
     delay0_5s1();            //延时0.5 s
     P2=0xfb;
     delay0_5s1();            //延时0.5 s
     }
        
         
   P2=0xeb;                //A黄灯,B红灯,延时time+5s 
   delay_t1(4);
   P2=0xde;                //A红灯,B绿灯,延时s 
   delay_t1(n);
   for(k=0;k<3;k++)            //B绿灯闪烁3次 
    {P2=0xde;
     delay0_5s1();            //延时0.5s 
     P2=0xdf;
     delay0_5s1();            //延时0.5 s
     }
   P2=0xdd;                   //A红灯,B黄灯,延时2s 
   delay_t1(4);
         
         }
        if(K2==0)
        { P2=0xf3;            //A绿灯,B红灯,延时time-5s
   delay_t1(n=n-10);                  
    for(k=0;k<3;k++)            //A绿灯闪烁3次 
    {P2=0xf3;
     delay0_5s1();            //延时0.5 s
     P2=0xfb;
     delay0_5s1();            //延时0.5 s
     }
        
         
   P2=0xeb;                //A黄灯,B红灯,延时2s 
   delay_t1(4);
   P2=0xde;                //A红灯,B绿灯,延时time-5s 
   delay_t1(n);
   for(k=0;k<3;k++)            //B绿灯闪烁3次 
    {P2=0xde;
     delay0_5s1();            //延时0.5s 
     P2=0xdf;
     delay0_5s1();            //延时0.5 s
     }
   P2=0xdd;                   //A红灯,B黄灯,延时2s 
   delay_t1(4);
         
        
        }
                                 
    }
  }