這是我當(dāng)初的設(shè)計(jì)此設(shè)計(jì)有三種狀態(tài):
狀態(tài)一:東西綠燈亮(持續(xù)25s后,閃爍黃燈5s),南北紅燈亮(持續(xù)30s);
狀態(tài)二:南北綠燈亮(持續(xù)25s后,閃爍黃燈5s),東西紅燈亮(持續(xù)30s);
狀態(tài)三:緊急狀態(tài),按下緊急禁止通行按鍵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,};//數(shù)碼管譯碼表
voiddelay(uint c) //定義延遲子程序
{
uint i,j;
for(i=0;i<c;i++)
for(j=0;j<100;j++);
}
//中斷服務(wù)程序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;
}
};
}
}
|