⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 djs_41.c

📁 这是一个红绿灯学习型倒计时源程序,这个程序已在路口正常使用三年多.
💻 C
字号:
#include<AT89X52.H>
#include<stdio.h>
#include<absacc.h>
#define  uchar unsigned char
#define  uint  unsigned int
#define  G1   XBYTE[0XFDFF]
#define  G2   XBYTE[0XF7FF]
#define  R1   XBYTE[0XFEFF]
#define  R2   XBYTE[0XFBFF]

sbit  blue=0X92;
sbit  red=0x93;
sbit  yellow=0x94;
sbit  red2=0X95;
uchar    cnt=20;
uchar    k,m,n,js_bz,hc,wac,bzw=0;
uchar    js_red,js_blue1,js_blue2,js_yellow;
void     delay(uchar time);
uchar    code DB[]={0XBF,0X86,0XDB,0XCF,0XE6,0XED,0XFD,0X87,
                    0XFF,0XEF,0XF7,0XFC,0XB9,0XDE,0XF9,0XF1};
//==============================================================
void  main(void)
{ 
  uchar  xdata  *addr_G1;
  uchar  xdata  *addr_G2;
  uchar  xdata  *addr_R1;
  uchar  xdata  *addr_R2; 

  addr_G1=&G1;
  addr_G2=&G2;
  addr_R1=&R1;
  addr_R2=&R2;


  TMOD=0X01;
  TH0=0X3C;
  TL0=0XB0;
  IE=0X82;
  TR0=1;


//-----------------
zys:  bzw=0;
      *addr_R1=0;
      *addr_R2=0;
      *addr_G1=0;
      *addr_G2=0;

  while(red==1&&blue==1&&red2==1)
    { 
	  *addr_R1=0;
      *addr_R2=0;
      *addr_G1=0;
      *addr_G2=0;
      bzw=8;
    }
bzw=0;


      delay(200);
      delay(200);
      delay(200);

if(blue==0)
while(yellow!=0);
else
{
  n=P1&0X3C;
  while(n==(P1&0X3C));
}
      *addr_R1=0;
      *addr_R2=0;
      *addr_G1=0;
      *addr_G2=0;
delay(100);
n=P1&0X3C;


  js_red=0;
  js_blue1=0;
  js_blue2=0;
  js_yellow=0;
  js_bz=0;
//--------------------
while(1)
{
if(n==(P1&0X3C)&&js_bz!=0)goto star;
while(red==0&&red2==0)
  {hc=1;
 	delay(100);
	js_red++;
  }
if(hc==1)delay(50);
hc=0;
//-----------
if(n==(P1&0X3C)&&js_bz!=0)goto star;
while(yellow==0)
  { hc=1;
    delay(100);
    js_yellow++;
  }
if(hc==1)delay(50);
hc=0;
//-----------
if(n==(P1&0X3C)&&js_bz!=0)goto star;
while(red==1&yellow==1)
  {hc=1;
	delay(100);
   js_blue1++;
  }
if(hc==1)delay(50);
hc=0;
//-----------
if(n==(P1&0X3C)&&js_bz!=0)goto star;
 while(red2==1)
  {hc=1;  
   delay(100);
   js_blue2++;
  }
if(hc==1)delay(50);
hc=0;
  js_bz++;
}
//================================================
star:js_blue2-=js_yellow;
     bzw=8;
  while(1)
 {
  
//----------------------
   k=js_red;
   while(red==0&&red2==0)
  {hc=1;
   *addr_R1=DB[k/10];
   *addr_R2=DB[k%10];
   *addr_G1=0;
   *addr_G2=0;

	delay(100);
	k--;
   if(k==0xfd)goto zys;
	
  }
if(k>=2&&hc==1)js_red-=k;
if(hc==1)delay(50);
hc=0;
//-----------------------
   k=js_yellow;
	wac=0;
   while(yellow==0)
  {hc=1;
   *addr_R1=DB[k/10];
   *addr_R2=DB[k%10];
   *addr_G1=DB[k/10];
   *addr_G2=DB[k%10];

	delay(100);
	k--;
   if(k==0xfd)goto zys;
	
   }
if(k>=2&&hc==1)js_yellow-=k;
if(hc==1)delay(50);
hc=0;
//------------------------
   k=js_blue1;
   while(yellow==1&&red==1)
  {hc=1;
   
   *addr_R1=0;
   *addr_R2=0;
   *addr_G1=DB[k/10];
   *addr_G2=DB[k%10];

	delay(100);
	k--;
   if(k==0xfd)goto zys;
		
  }
if(k>=2&&hc==1)js_blue1-=k;
if(hc==1)delay(50);
hc=0;
//------------------------
   k=js_blue2;
	wac=0;
   while(red2==1&&red!=1)
  {  hc=1;  
     if(k<=0)
     { m=js_yellow;
	    wac++;
		 if(wac==2)goto zys;
	   while(m>0)
      { 
		  *addr_R1=DB[m/10];
        *addr_R2=DB[m%10];
        *addr_G1=DB[m/10];
        *addr_G2=DB[m%10];
        delay(100);
		  m--;
		}
     }

     else
	  { *addr_R1=0;
       *addr_R2=0;
       *addr_G1=DB[k/10];
       *addr_G2=DB[k%10];
       delay(100);
	    k--;
	  }
  }   
if(k>=2&&hc==1)js_blue2-=k;
if(hc==1)delay(50);
hc=0;
//------------------------

 } 

}
//----------------------------------
void  toserve() interrupt 1 using 0
{   TH0=0x3c;
    TL0=0xb0;
	 cnt--;
	 if(cnt==0)
	 { 
	   P3_2=~P3_2;
	   cnt=20;
       if(bzw==0)
       {
        R1=0;
        R2=0;
        G1=0;
        G2=0;
        bzw=1;
       }
      else if(bzw==1)
       {
        R1=0x40;
        R2=0x40;
        G1=0x40;
        G2=0x40;
        bzw=0;
       }

	 }
      TF0=0;
}
//----------------------------------
void delay(uchar time)
 {
  unsigned  char a,b,c;
     for(a=0;a<time;a++)
     for(b=0;b<25;b++)
     for(c=0;c<120;c++)
     {;}
 } 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -