红绿灯C语言程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

红绿灯C语言程序(P0口接数码管,平口接发光二极管)

#include

#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;

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清零

}

}

相关文档
最新文档