红绿灯C语言程序
(P0口接数码管,平口接发光二极管)
#include<reg52.h>
#define uchar unsigned  char
#define uint unsigned int
uchar i=0,c=0,s=1;//
m_flag=1;//
//////////////////////////////////////
void dxlv1_nbh1(void) //
{
P1=0x5a;
}
void dx0_nbh1(void)    //
{
P1=0x0a;
}
void dxh1_nbl1(void) //
{
P1=0xa5;
}
void dxh1_nb0(void) //
{
P1=0xa0;
}
void nbs(void) //   南北灯闪
{
if(m_flag==1){dxh1_nb0();}
else {dxh1_nbl1();}
}
void dxs(void){   //  东西灯闪
  if(m_flag==1){dx0_nbh1();}
else {dxlv1_nbh1();}
}
//////主程序//////////////////
void main()
{
 
 TMOD=0x01;//定时器0工作在方式1
 TH0=-5000/256;//50ms
 TL0=-5000%256;//20ms
 IE=0x82;///允许定时器0中断
 TR0=1;///启动定时器0
 while(1){
 //0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
 
 
 if(s==10){P0=0x3f;} //   东西绿灯亮,南北红灯亮 倒计时开始
 if(s==9)P0=0x06;
 if(s==8)P0=0x5b;
 if(s==7)P0=0x4f;
 if(s==6)P0=0x66;
 if(s==5)P0=0x6d;
 if(s==4)P0=0x7d;
 if(s==3)P0=0x07;
 if(s==2)P0=0x7f;
 if(s==1){P0=0x6f;P1=0x5a;}
 if(s>9&&s<13){dxs();} //10秒结束 南北红灯继续,东西绿灯一秒一闪  闪三次
  if(s==13){dxh1_nbl1(); P0=0x6f; }//东西红灯亮,南北绿灯亮 倒计时开始
  if(s==22){P0=0x3f;}
 if(s==21)P0=0x06;c语言下载什么
 if(s==20)P0=0x5b;
 if(s==19)P0=0x4f;
 if(s==18)P0=0x66;
 if(s==17)P0=0x6d;
 if(s==16)P0=0x7d;
 if(s==15)P0=0x07;
 if(s==14)P0=0x7f;
 if(s>21&&s<25){nbs();} //10秒结束  东西向红灯亮继续,南北绿灯一秒一闪三次
 if(s==25){s=1; }// s归位
 
 
 
}
}
/////T0中断子程序////////////
void T0_INT()interrupt 1
{
 TH0=-50000/256;//50ms
 TL0=-50000%256;
 if(c==10)m_flag=0;
 c++;if(c==20)//50ms*20=1s
 {m_flag=1;
   
 c=0;
s++;//s清零
 }
     
}