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

📄 tl_main.c

📁 LOOP1: CJNE A
💻 C
字号:
#include<_REG52_.H>	
//Bit Port Declaration
sbit	P20=P2^0;
sbit	P21=P2^1;
sbit	P22=P2^2;
sbit	P23=P2^3;
sbit	P32=P3^2;
sbit	P35=P3^5;
sbit	P36=P3^6;
sbit	P37=P3^7;
//--------------------
sbit	EWR=P1^0;
sbit	EWG=P1^1;
sbit	EWY=P1^2;
sbit	SNR=P1^4;
sbit	SNG=P1^5;
sbit	SNY=P1^6;
//Global Variables
uchar	TIME_EW;				//EastWest Count Down Register Unit
uchar	TIME_SN;				//SouthNorth Count Down Register Unit
uchar	MS_CNT;					//50ms Count 
uint	SEC_CNT;				//Second Count
uchar	HOUR=12;				//Hour Buffer
uchar	flash;
uchar	code table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
                          0x7F,0x6F};

//Delay Function
void Delay(uchar	formal_t)
	{	
		uchar	t;
		t=formal_t;
		while(t--);
	}

//Display Function
void	Display(void)
	{
		uchar	h,l;
		l=TIME_EW%10;					
		P2=0xff;		
		P0=table[l];		
		P20=0;
		h=TIME_EW/10;
		Delay(3);
		P2=0xff;			
		P0=table[h];				
		P21=0;
		Delay(3);
		//-----------------
		l=TIME_SN%10;						
		P2=0xff;		
		P0=table[l];		
		P22=0;
		h=TIME_SN/10;
		Delay(3);
		P2=0xff;		
		P0=table[h];			
		P23=0;
		Delay(3);
		P2=0xff;				
	}

//T0 Interrupt Function
void Timer0(void)interrupt 1 using 2
	{
		TH0=(65536-49990)/256;
		TL0=(65536-49990)%256;
		if(MS_CNT>=10)
				flash=1;
		else	flash=0;
		if(MS_CNT>=20)
				{
					MS_CNT=0;
					SEC_CNT+=1;
					TIME_EW-=1;
					TIME_SN-=1;		
					if(SEC_CNT==3600)
						HOUR+=1;
					if(HOUR==24)
						HOUR=0;
				}
		else	MS_CNT+=1;		
	}
//INT0 Interrupt Function
void INTSP(void)interrupt 0 using 1
	{
		EX0=0;
		P2=0xff;		
		Delay(10);
		P32=1;
		if(~P35)
				P1=0x65;	//P1.0----RG
		else if(~P36)
				P1=0x56;	//P1.1----GR
		else if(~P37)
				P1=0x66;	//P1.0----RR
		while(~P32){;}
		EX0=1;	
	}

//EastWest-RED,SouthNorth-GREEN   --30S
void	StateRG(void)
	{		
		TIME_EW=35;
		TIME_SN=30;	
		P1=0x00;
		while(TIME_SN)
			{	
				Display();
				EWR=1;SNG=1;			
			}
		P1=0x00;		
	}
//EastWest-RED,SouthNorth-YELLOW-5S
void	StateRY(void)
	{
		TIME_SN=5;		
		P1=0x00;
		while(TIME_SN)			
			{	
				Display();					
				EWR=1;SNY=1;	
			}
		P1=0x00;
	}
//EastWest-GREEN,SouthNorth-RED   -30S
void	StateGR(void)
	{		
		TIME_EW=30;
		TIME_SN=35;	
		P1=0x00;
		while(TIME_EW)
				{
					Display();
					EWG=1;SNR=1;	
				}
		P1=0x00;		
	}
//EastWest-YELLOW,SouthNorth-RED  -5S
void	StateYR(void)
	{		
		TIME_EW=5;		
		P1=0x00;
		while(TIME_EW)
				{
					Display();
					EWR=1;SNG=1;	
				}
		P1=0x00;		
	}
//SLEEP
void StateSleep(void)
	{
		P1=0x00;
		if(flash)	{EWY=1;SNY=1;}	
			else	P1=0x00;	
		P2=0xff;				
	}

void	main(void)
	{
		TMOD=0X01;	
		TH0=(65536-49990)/256;
		TL0=(65536-49990)%256;
		IT0=1;			//External Interrupt Springed by Hight-To-Low.
		PX0=1;			//T0 Interrupt With High PRI.		
  		ET0=1;			//T0 Interrupt Enable,
		EX0=1;			//INT0	Interrupt Enable
		EA=1;			//All Interrupt Enable.
		TR0=1;			//T0 Start.
		
	while(1)
		{
			while(HOUR>=0&&HOUR<=5)
			StateSleep();
			StateRG();
			StateRY();
			StateGR();
			StateYR();
		}
	}

⌨️ 快捷键说明

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