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

📄 可控交通.c

📁 关于交通灯、秒表及一些简单的音乐播放程序
💻 C
字号:
#include"reg51.h"
#include"absacc.h"

#define CA XBYTE[0x7100]
#define PA XBYTE[0x7101]
#define PB XBYTE[0x7102]

sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;

unsigned char i=30;
unsigned char j=25;
unsigned char c;
unsigned char c1;
unsigned char c2;
unsigned char x;
unsigned char y;
unsigned char flag0=0;
unsigned char flag1=0;
unsigned char restart=0;
void jishu(i);
void display(y,x);
void xs(x);
void xun();

int0() interrupt 0
{
	
	switch(flag0)
	{
		case 0:flag0=1;break;//暂停
		case 1:flag0=0;break;//继续
	}
	
}//判断是否停止

int1() interrupt 2
{
	switch(flag1)
	{
		case 0:flag1=1;break;//减1
		case 1:flag1=0;break;//加1
	}
}
	


void main()
{
	CA=0x03;	
	EA=1;
	EX0=1;
	EX1=1;
	IT0=1;
	IT1=1;
	TMOD=0x51;


	xun();
	
}

void xun1()
{		
	c1=i;	
	jishu(i);
	TF1=0;
	c2=j;			
	jishu(j);
	TF1=0;
	if(i!=c1||j!=c2)
		xun();		
	c=i-j;		 	
	for(;i>5;)
	{   				
		for(;j>0;)
		{
			PA=0x08;
			display(i,j);										
			if(flag0==0)
     			j--;				
			break;		  	
		}
		if(flag0==0)		 		 	  		
			i--;
	}
}//绿-红
void xun2()
{
	
	i=c;	  	
	jishu(i);
	TF1=0;
	j=c;
	jishu(j);
	TF1=0;
	if(i!=c||j!=c)
		xun();
	for(;i>0;)
	{   
		for(;j>0;)
		{	
			PA=0x08;
			display(i,j);
		
			if(flag0==0)
       			j--;
			break;		  	
		}
		if(flag0==0)	 		 		 	  		
			i--;
	 }
}//黄-红
void xun3()
{
	i=c2;
	jishu(i);
	TF1=0;
	j=c1;
	jishu(j);
	TF1=0;
	if(i!=c2||j!=c1)
		xun();		
	for(;i>0;)
	{    
		for(;j>5;)
		{	
			PA=0x08;
			display(i,j);		
			if(flag0==0)
       			j--;
			break;		  	
		}
		if(flag0==0)	 		 		 	  		
			i--;
	}
 }//红-绿
void xun4()
{
	
	i=c;
	jishu(i);
	TF1=0;
	j=c;
	jishu(j);
	TF1=0;
	if(i!=c||j!=c)
		xun();		
	for(;i>0;)
	{   		  			
		for(;j>0;)
		{
			PA=0x08;
			display(i,j);			
			if(flag0==0)
       			j--;
			break;
		}
		if(flag0==0)	 		 		 	  		
			i--;
	}
}//红-黄
void xun()
{
	P1=0xd7;
	xun1();
	P1=0xb7;
	xun2();
	P1=0x7d;
	xun3();
	P1=0x7b;
	xun4();
}

void display(y,x)
{ 
	int k,b;
	unsigned char m;
	unsigned char n;
	unsigned char x1;
	unsigned char x2;
	for(k=0;k<20;k++)
	{
		
		TR0=1;
		TH0=(65536-50000)/256;
		TL0=(65536-50000)%256;
		
		while(!TF0)
		{
			PA=0x08;
			m=y/10;		   							
			xs(m);
          	for(b=0;b<500;b++);
			PA=PA/2;
			n=y%10;
			xs(n);
			for(b=0;b<500;b++);
			PA=PA/2;			   	
			x1=x/10;			
			xs(x1);
          	for(b=0;b<500;b++);
			PA=PA/2;
			x2=x%10;
			xs(x2);
			for(b=0;b<500;b++);	
		}
		TF0=0;	
	}
	
}
void xs(x)
{	
	int tab[10]=
	{0x3f,0x06,0x5b,0x4f,0x66,
	 0x6d,0x7d,0x07,0x7f,0x6f};
	PB=tab[x];
}
void jishu(i)
{
	TR0=1;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	while(!TF1)
	{

		if(flag1==0)
		{
			i++;
			TF1=1;
			flag1=1;
		}
		else 
		{	
			i--;
			TF1=1;
			flag1=0;
		}
		
	 }
}

⌨️ 快捷键说明

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