/*=========交通灯实验==========*/
#include "reg51.h"
sbit sr= P1^0; /*南北红灯*/
sbit sy= P1^1; /*南北黄灯*/
sbit sg= P1^2; /*南北绿灯*/
sbit er= P1^3; /*东西红灯*/
sbit ey= P1^4; /*东西黄灯*/
sbit eg= P1^5; /*东西绿灯*/
void delay(unsigned char i)/*延时函数*/
{
unsigned char d1,d2,d3;
for(d1=0; d1<i; d1++)
for(d2=0; d2<200; d2++)
for(d3=0; d3<200; d3++);
return;
}
void st1() /*状态1,南北绿灯,东西红灯*/
{
sg=1;
sr=0;
sy=0;
er=1;
eg=0;
ey=0;
delay(0x30); /*长延时*/
return;
}
void st2() /*状态2,南北绿灯闪转黄灯,东西红灯*/
{
unsigned char i;
for(i=0; i<8; i++)
{
sg=~sg;
delay(0x2); /*短延时*/
}
sy=1;
sr=0;
sg=0;
er=1;
ey=0;
eg=0;
delay(0x8); /*延时*/
return;
}
void st3() /*状态3,南北红灯,东西绿灯*/
{
sr=1;
sy=0;
sg=0;
eg=1;
ey=0;
er=0;
delay(0x30);
}
void st4() /*状态4,南北红灯,东西绿灯闪转黄灯*/
{
unsigned char i;
sr=1;
sy=0;
sg=0;
for(i=0; i<8; i++)
{
eg=~eg;
delay(0x2);
}
ey=1;
eg=0;
er=0;
delay(0x8);
}
main() /*主程序*/
{
P1=0;
for(;;) /*循环依次调用各状态函数*/
{
st1();
st2();
st3();
st4();
}
}
评论0