閱讀719 返回首頁    go 阿裏雲 go 技術社區[雲棲]


求助啊,單片機交通燈問題

//以下程序隻能完成一個周期,不能連續執行


#include<reg52.h>     //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義

#include<math.h>  
#define uchar unsigned char
#define uint  unsigned int
#define ulang unsigned lang
static unsigned char count;
code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
        //共陰數碼管 0-9
uchar smg[8];                 //定義緩衝區


uint  we,ns,h,j; 
 
   
int aaa(); 
int bbb(); 
void delay(unsigned int cnt)
{
 while(--cnt);
}
 
void display( )
{


           smg[0]=tab[we/10];     
      smg[1]=tab[we%10];
 smg[2]=0x00;             
           smg[3]=0x00;   
            smg[4]=0x00;
      smg[5]=0x00;            
                 smg[6]=tab[ns/10];  
 smg[7]=tab[ns%10];

}


void main()
{
     uchar i;
     TMOD |=0x01;  //定時器0 10ms in 12M crystal 用於計時
TH0=0xd8;     //初值
TL0=0xf0;
ET0=1;
TR0=1;
     EA =1;     


 display();


 while(1)
 {
   
for(i=0;i<8;i++)   //顯示函數
  {
     P0=smg[i];
P2=i;
delay(100);
  }
          ccc();
display( );
      }  
 
}
void timer() interrupt 1  
{
   
   TH0=0xd8;                  //重新賦值
   TL0=0xf0;
   count++;


}


int aaa()
{


          if(j<25)
     {
     if(j==1) { we=30,ns=25; }
ns--;
     we--;
     P1=0xde;
return 0; } 
 
   if(25<=j<30)
 {       
     if(j==26)  {  ns=5; } 
    P1=0xee;    
ns--; 
we--;  
return 0;   }
}
int bbb()
{
            if(h<25)
     {
     if(h==1) { we=25,ns=30; }
ns--;
     we--;
      P1=0xf3;
return 0; } 
 
   if(25<=h<30)
 {       
     if(h==26)  {  we=5; } 
    P1=0xf5;    
ns--; 
we--;  
return 0;   }
 
    
 }
 int ccc()
 {
     
 if (count==25)
   {
           count=0;
   j++;
if (j>30)  { h++;      bbb(); return 0;   }
 if(j>60)  {  j=1;   h=0;     return 0; }   //問題就在這裏,不能重新賦值
              aaa();       return 0;   
  } 
 }
 

最後更新:2017-04-03 20:51:31

  上一篇:go ubuntu安裝goldendict翻譯工具,很好用!
  下一篇:go 暴雪遊戲(Blizzard)的高效哈希算法