⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hong lv deng 3.c

📁 模拟交通灯
💻 C
字号:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
/*#define COM8255	XBYTE[0X0003]
#define PA8255	XBYTE[0X0000]
#define PB8255	XBYTE[0X0001]
#define PC8255	XBYTE[0X0002]*/

uchar code tab[]={0x88,0xEB,0x4C,0x49,0x2B,0x19,0x18,0xCB,0x08,
					0x09,0x0A,0x38,0x9C,0x68,0x1C,0x1E,0xFF};
uchar code tabHello[]={0x88,0xBC,0xBC,0x1C,0x2A,0xFF};
uchar code tabStop[]={0xff,0x0e,0x88,0x3c,0x19,0xff};

sbit P3_2=P3^2;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;

#define OSC_FREQ	12000000
#define _1ms		(65536-OSC_FREQ/(12000000/980))

void Timer_1ms(uint_1ms);
void Led_RR();       //红红
void Led_RG();       //红绿
void Led_RY();       //红黄
void Led_GR();       //绿红
void Led_YR();       //黄红 
void Led_Off();
void SHUSHU();
//void SHUSHUYELLOW();
void Stop();
void Xint0(void);

/*****************************************************/

void main(void)
{
	P1=0x00;
	EA=1;
	EX0=1;
	IT0=0;	
	Led_RR();
	do{
		Led_RG();
		Led_RY();
		Led_GR();
		Led_YR();
	}while(1);
}

/********************************/

void Timer_1ms(uint_1ms)
{
	TMOD=TMOD&(0x0f)|0x10;
	TR1=1;
	while(uint_1ms--)
	{
		TH1=_1ms/256;
		TL1=_1ms%256;
		while(!TF1);
		TF1=0;
	}
	TR1=0;
}

/*********************************/

void Xint0(void) interrupt 0 using 3
{
	P1_0=0;
	P1_2=0;
	P1_4=0;
	P1_5=0;
	P1_6=0;
	P1_1=1;
	P1_3=1;
	Stop();
	for(;;)
	{
	;
	}
}

/*********************************/

void Led_RR()           //红红2s
{
	uchar a;
	P1_0=0;
	P1_2=0;
	P1_4=0;
	P1_5=0;
	P1_6=0;
	P1_1=1;
	P1_3=1;
	for(a=0;a<=5;a++)		//显示Hello字样
	{
		SBUF=tabHello[a];
		while(!TI)
		TI=0;
	}
	Timer_1ms(2000);
	Led_Off();
}

/*********************************/

void Led_RG()            //红绿5s
{
	P1_1=1;
	P1_2=1;
	SHUSHU();
	Led_Off();
}

/*********************************/
	
void Led_RY()         //红黄5s
{
	uint i,j;
	P1_1=1;
	for(i=5;i>=1;i--)
	{
		SBUF=tab[i];
		while(!TI);
		TI=0;
		for(j=1;j<=5;j++)
		{
			SBUF=tab[16];
			while(!TI);
			TI=0;
		}
		P1_5=1;
		Timer_1ms(500);
		P1_5=0;
		Timer_1ms(500);
	}
	Led_Off();
}

/**********************************/

void Led_GR()           //绿红5s
{
	P1_0=1;
	P1_3=1;
	SHUSHU();
	Led_Off();
}

/**********************************/

void Led_YR()          //黄红5s
{
	uint i,j;
	P1_3=1;
	for(i=5;i>=1;i--)
	{
		SBUF=tab[i];
		while(!TI);
		TI=0;
		for(j=1;j<=5;j++)
		{
			SBUF=tab[16];
			while(!TI);
			TI=0;
		}
		P1_4=1;
		Timer_1ms(500);
		P1_4=0;
		Timer_1ms(500);
	}
	Led_Off();
}

/*********************************/

void Led_Off()
{
	P1_0=0;
	P1_1=0;
	P1_2=0;
	P1_3=0;
	P1_4=0;
	P1_5=0;
	P1_6=0;
}

/********************************/

void SHUSHU()
{
	uchar a,i;
	for(a=5;a>=1;a--)
	{
		SBUF=tab[a];
		while(!TI);
		TI=0;
		for(i=1;i<=5;i++)
		{
			SBUF=tab[16];
			while(!TI);
			TI=0;
		}
		Timer_1ms(1000);
	}
}

/*************************************/
/*void SHUSHUYELLOW()
{
	uchar a,j;	

	SBUF=tab[a];
	a++;
	while(!TI);
	TI=0;
	for(j=1;j<=5;j++)
	{
		SBUF=tab[16];
		while(!TI);
		TI=0;
	}
}*/

/************************************/

void Stop()
{
	SBUF=tabStop[0];
	while(!TI);
	TI=0;
	SBUF=tabStop[1];
	while(!TI);
	TI=0;
	SBUF=tabStop[2];
	while(!TI);
	TI=0;
	SBUF=tabStop[3];
	while(!TI);
	TI=0;
	SBUF=tabStop[4];
	while(!TI);
	TI=0;
	SBUF=tabStop[5];
	while(!TI);
	TI=0;
}












⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -