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

📄 master-all.c

📁 全国电子大赛智能小车赛题
💻 C
字号:
#include<all.h>


uchar timeflag,dplay;
uchar tf,flag,fflag;
uint time,needdisplay,disy;
uchar disx;
uchar i=0;
uchar stopflag=0;

sbit beer=P2^4;		//蜂鸣器

unsigned char code Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
                          0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x7f};//数码显示
uint Tab_data[5]={0};//数据池
void displayl(uchar dula,uchar wela )//显示
{
	uchar i;
	P2=0xff;
	i=dula;
	P0=Tab[i];
	P2=wela;

}
void display(uint num)//显示
{
	switch(tf)
	{
		case 0:displayl(num/100,0xfe);
			break;
		case 1:displayl((num%100)/10,0xfd);
			break;
		case 2:displayl(16,0xfb);
			break;
		case 3:displayl((num%100%10),0xf7);
			break;
	}
}

void beerring()//蜂鸣器响
{
//	if(timeflag%2)beer=~beer;
	beer=0;
}


void sendmsg(uchar sbuf)//发指令
{
	uchar x;
	TI=0;
	SBUF=sbuf;
	for(x=50;x>>0;x--);
}

void delay5s()	//停车5s
{
	uint i;
	i=time+50;
	while(i!=time)
	{
		display(i-time);
		beerring();
	}
	flag=0x22;
	sendmsg(flag);

}

void stoprun()
{
	Tab_data[3]=disy;
	Tab_data[4]=time;
	stopflag=1;
	ES=0;
	EX1=0;
	EX0=1;

}

void stop()				//停车
{
	uchar u=0;
	flag=0x88;
	sendmsg(flag);
	while(1)
	{
	
	//	if(!(time%50))
	//	{
	//		u++;
	//		if(u==5)u=0;
	//	}	
	//	needdisplay=Tab_data[u];
			display(Tab_data[4]);
	}
}


void main()
{

	TMOD=TMOD|0x21;
	TH0=0xee;
	TL0=0x00;
	TH1=0xfd;
	TL1=0xfd;

	SCON=0x50;
	PCON=0;
	PS=1;
	PT0=1;

	EA=1;
	ET0=1;

	ES=1;
	PX0=1;

	IT0=1;
	IT1=1;

	EX0=1;
	EX1=1;

	TR0=1;
	TR1=1;

	time=0;
	timeflag=0;
	flag=0x11;
	sendmsg(flag);
	while(1)
	{
		if(stopflag==1)stop();
			else if(i==0)needdisplay=time;
				else if(i<4)needdisplay=i*10;
				else if(i==6)needdisplay=time;
			
		display(needdisplay);
	//	display(Tab_data[i-1]);
		if(i==4)
		{
			flag=0x88;
			sendmsg(flag);
			delay5s();
			i=6;
		}
		else if(time==900)stoprun();
	//	{
		//	flag=0x88;
		//	sendmsg(flag);
	//		while(1)stop();
		//}
	}
	while(1);
}

void timer0int() interrupt 1 //定时器中断,系统时间
{
	TR0=0;
	TH0=0xf6;
	TL0=0xf0;
	timeflag++;
	TR0=1;
	if(tf==3)tf=0;
	else tf++;
	if(timeflag==40)
	{
		timeflag=0;
		time++;
	//	if(time==901)
	//	{
			//flag=0x88;
	//		time=time-1;
	//	}
	}	
}

void uartint() interrupt 4//通信中断,传输数据
{
	TI=0;
	while(RI)
	{
		switch(SBUF)
		{
			case 0x55:break;
			case 0x88:stoprun();
				break;
		//	default:sendmsg(flag);
		}
		 RI=0;
	 }
  
}

void intin0() interrupt 0		//外0中断,距离检测
{
	disx++;
	if(disx==7)
	{
		disy++;
		disx=0;
	}
	//if(disy==8)disz++;
	
}

void intin1() interrupt 2		//外1中断,金属检测
{
	uchar ja,jb;
	ja=disy;
	while(INT1==0)beerring();
	jb=disy;
	Tab_data[i]=(ja+jb)/2;
	i++;
	if(i==4)
	EX1=0;
	
}

⌨️ 快捷键说明

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