交通灯定时器使用的求助

2019-07-15 15:28发布

这是一个利用定时器来精准控制交通灯的程序,我想问下定时器在这里设置好了,后面只有一个溢出中断服务程序 他所谓的定时器在交通灯亮的程序块里好像没有出现啊?怎么实现精准控制延时的? 大神求助
main()
{  
   TMOD= 0X10;                                       
    EA= 1;                                               
        ET1= 1;                                               
    TH1= 0x3c;                                       
        TL1= 0xb0;                                       
        TR1= 1;                                                       
        num= 0;
  while(1)
  {         
           if(num<31)                                       
         {
           P2= 0xcd;                 //11001101
           P3= 0xfe;         //11111110
           time= (30-num);
           display();  
                 }

         if(num>30&&num<34)                       
         {
                 P2= 0xd6;                         //11010110
                P3= 0xfe;                                //11111110
                time= (34-num);
                display();
         }

           if(num>33&&num<65)                       
         {
                 P2= 0x7a;                                        //01111010
                P3= 0xfd;                                        //11111101
                time= (64-num);
                display();
         }

         if(num>64&&num<68)                       
         {
                 P2= 0xba;                         //10111010
                P3= 0xfe;                                //11111101
                time= (67-num);
                display();
         }
  }
}       
void int_1()interrupt 3
{


        unsigned char n;


                TH1= 0x3c;
                TL1= 0xb0;                               
                TR1= 1;
                n++;
                if(n==20)                               
                {
               
                        num++ ;
                        n= 0;
                        if(num== 68)                         
                                num= 0;                               
                }
          
        }       

void display()
{
    unsigned int i;         
    unsigned int LedOut[10];                 
         LedOut[0]=Disp_Tab[time%10000/1000];
     LedOut[1]=Disp_Tab[time%1000/100];
     LedOut[2]=Disp_Tab[time%100/10];
     LedOut[3]=Disp_Tab[time%10];
         
         LedOut[4]=Disp_Tab[time%10000/1000];         
     LedOut[5]=Disp_Tab[time%1000/100];
     LedOut[6]=Disp_Tab[time%100/10];                 
     LedOut[7]=Disp_Tab[time%10];            
         for( i=0; i<9; i++)
         {         
          P0 = LedOut;
          P1 = dispbit;                                           
                delay(150);               
          }
}

void delay(unsigned int i)               
{
    char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。