红绿灯C语言程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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清零
}
}