|
#include <reg51.h>
#define uchar unsigned char
sbit NSgreen = P3^1; //南北人行道綠燈
sbit WEgreen = P3^0; //東西人行道綠燈
sbit Add_Button = P3^5;//加時間按鍵
sbit Sub_Button = P3^4;//減時間按鍵
sbit Reduces_Button = P3^3;//模式選擇按鍵
sbit Y1 = P3^2;
sbit WEbuy_Button = P3^6 ;
sbit NSbuy_Button = P3^7 ;
uchar qiehuan=0;
uchar red = 33,yellow = 3,green_strant = 30,green_left = 30;
uchar Mode = 0;
uchar KeyDown=0;
uchar DisplayTab[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79}; // 0 1 2 3 4 5 6 7 8 9 E
uchar led[8];
uchar Display_Number[] = {0x82,0x84,0x28,0x48,0x81,0x84,0x18,0x48}; //路口紅綠燈狀態
//延時
void Delay_ms(unsigned int Cnt )
{
unsigned int t;
while (Cnt--)
{
t=100;
while(t--);
}
}
//動態顯示
void Dynamic_display()
{
uchar i = 0;
for(i = 0; i < 8; i++)
{
P0 = DisplayTab[ led[i] ];
P2 = ~(0x01<<i);
Delay_ms(1);
P0 = 0x00;
}
}
/***************中斷程序***********************************/
/*******外部中斷0**********/
void function_isr(void) interrupt 0
{
EX0=0; //關中斷
qiehuan++;
if(qiehuan == 5) Mode=0;
EX0=1; //開中斷
}
//狀態1
void luzhi1()
{
led[4] = green_strant % 10;
led[5] = green_strant / 10;
led[6] = 1;
led[7] = 10;
if(WEbuy_Button == 0) //時間加
{
green_strant += 10;
}
}
//狀態2
void luzhi2()
{
led[4] = green_strant % 10;
led[5] = green_strant / 10;
led[6] = 3;
led[7] = 5;
if(NSbuy_Button == 0) //時間加
{
green_strant += 10;
}
}
/******外部中斷2********/
void function_lib(void) interrupt 2
{
Mode++;
if(Mode == 5) Mode=0;
KeyDown=1;
}
//模式1
void function1()
{
led[4] = green_strant % 10;
led[5] = green_strant / 10;
led[6] = 1;
led[7] = 10;
if(Add_Button == 0) //時間加
{
green_strant += 5;
green_left += 5;
red += 5;
}
if(Sub_Button == 0) //時間減
{
green_strant -= 5;
green_left -= 5;
red -= 5;
}
}
//模式2
void function2()
{
led[4] = green_left % 10;
led[5] = green_left ;
//............................................剩余代碼在壓縮包............................
|
評分
-
查看全部評分
|