这是我当初的设计此设计有三种状态:
状态一:东西绿灯亮(持续25s后,闪烁黄灯5s),南北红灯亮(持续30s);
状态二:南北绿灯亮(持续25s后,闪烁黄灯5s),东西红灯亮(持续30s);
状态三:紧急状态,按下紧急禁止通行按键S3,全部红灯亮。
部分程序:(完整程序请下载压缩包文件)
#include<REGX51.H>//51头文件
#include<stdio.h>
#define ucharunsigned char //宏定义
#define uintunsigned int
uchar h;
uint r=0;
uint s;
ucharcode dis[]={0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90,0Xff,};//数码管译码表
voiddelay(uint c) //定义延迟子程序
{
uint i,j;
for(i=0;i<c;i++)
for(j=0;j<100;j++);
}
//中断服务程序1
void t0(void)interrupt 0 using 1 //东西通行
{
delay(2);
if(INT0==0)
{
r++;
if(r==2)
{
r=0;
}
r%=2;
if(r==0)
{
P0=0xeb;
P1=0x00;
P2=0xff;
}
while(1)
{
if(INT0==0|INT1==0|T0==0)
{
delay(2);
if(INT0==0|INT1==0|T0==0)
break;
}
};
}
}
|