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

📄 main_stop.c.bak

📁 基于485的51单片机多机通讯程序
💻 BAK
📖 第 1 页 / 共 5 页
字号:
		{
			sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
			temp_delt++;
		}
		else
			sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
	}
	sbuffer1[28]=pp.k1/256;
	sbuffer1[29]=pp.k1%256;
	for(temp_pc=30;temp_pc<55;temp_pc++)
		sbuffer1[temp_pc]=0;
	s_byte_nums=55;
	TR_ans();
RESEND3: if(resend==1||overtime==1)
	{
		c_err++;
		resend=0;
		overtime=0;
		if(c_err<5)
		{			
			TR_ans();
			goto RESEND3;
		}
		else
		{
			c_err=0;
			main_err=1;
			err=2;
			stop=0;
			while(urgent_stop==0);
			goto END_P;
		}
	}
	else
		c_err=0;

	if(pp.sec_num>0)
	{
		for(anum=0;anum<4;anum++)
		{
			s_p=1;
			for(snum=0;snum<pp.sec_num;snum++)
			{
				s_p=1;
				temp_delt=3;
				sbuffer1[0]=axis[anum];
				sbuffer1[1]=p_in_sec;
				sbuffer1[2]=snum;
				switch(anum)
				{
					case 0:	{
							point=&pp.x[snum][0];
							for(temp_pc=3;temp_pc<23;temp_pc++)
							{
								if(temp_pc%2==1)
								{
									sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
									temp_delt++;
								}
								else
									sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
							}
							sbuffer1[23]=0;
						}break;
					case 1:	{
							point=&pp.x[snum][10];
							for(temp_pc=3;temp_pc<23;temp_pc++)
							{
								if(temp_pc%2==1)
								{
									sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
									temp_delt++;
								}
								else
									sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
							}
							sbuffer1[23]=0;
						}break;
					case 2:	{
							point=&pp.x[snum][20];
							for(temp_pc=3;temp_pc<15;temp_pc++)
							{
								if(temp_pc%2==1)
								{
									sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
									temp_delt++;
								}
								else
									sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
							}
							for(temp_pc=15;temp_pc<24;temp_pc++)
								sbuffer1[temp_pc]=0;
						}break;
					case 3: {
							point=&pp.x[snum][26];
							for(temp_pc=3;temp_pc<11;temp_pc++)
							{
								if(temp_pc%2==1)
								{
									sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
									temp_delt++;
								}
								else
									sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
							}
							for(temp_pc=11;temp_pc<24;temp_pc++)
								sbuffer1[temp_pc]=0;
						}break;
					default:break;
				}
				s_byte_nums=get_byte_nums(p_in_sec);
				TR_ans();
RESEND4:			if(resend==1||overtime==1)
				{
					c_err++;
					resend=0;
					overtime=0;
					if(c_err<5)
					{			
						TR_ans();
						goto RESEND4;
					}
					else
					{
						c_err=0;
						main_err=1;
						err=2;
						stop=0;
						while(urgent_stop==0);
						goto END_P;
					}
				}
				else
					c_err=0;

			}
		}
	}
END_P:	p_send=0;
	s_p=0;
}

void send_param1()
{
	unsigned char	axis[]={M_current_P,M_RW_P,M_OA_P},temp_pc,temp_delt,snum,anum,c_err;

	p_send=1;
	s_p=1;
	c_err=0;
	point=&pp.t01;
	temp_delt=2;
	sbuffer1[0]=M_current_P;		//电流和面板接收
	sbuffer1[1]=p_out_sec;			//电流区间外参数
	sbuffer1[52]=0;
	sbuffer1[53]=0;
	sbuffer1[54]=0;
	for(temp_pc=2;temp_pc<52;temp_pc++)
	{
		if(temp_pc%2==0)
		{
			sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
			temp_delt++;
		}
		else
			sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
	}
	s_byte_nums=55;
	TR_ans();
RESEND:	if(resend==1||overtime==1)
	{
		c_err++;
		resend=0;
		overtime=0;
		if(c_err<5)
		{			
			TR_ans();
			goto RESEND;
		}
		else
		{
			c_err=0;
			err=2;
			stop=0;
			while(urgent_stop==0);
				goto END_P1;
		}
	}
	else
		c_err=0;
		
	s_p=1;
	point=&pp.k2;
	temp_delt=2;
	sbuffer1[0]=M_RW_P;			//旋转/送丝和面板接收
	sbuffer1[1]=p_out_sec;			//旋转/送丝区间外参数
	for(temp_pc=2;temp_pc<50;temp_pc++)
	{
		if(temp_pc%2==0)
		{
			sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
			temp_delt++;
		}
		else
			sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
	}
	for(temp_pc=50;temp_pc<55;temp_pc++)
		sbuffer1[temp_pc]=0;
	s_byte_nums=55;
	TR_ans();
RESEND1: if(resend==1||overtime==1)
	{
		c_err++;
		resend=0;
		overtime=0;
		if(c_err<5)
		{			
			TR_ans();
			goto RESEND1;
		}
		else
		{
			c_err=0;
			err=2;
			stop=0;
			while(urgent_stop==0);
				goto END_P1;
		}
	}
	else
		c_err=0;
	
	s_p=1;
	point=&pp.k4;
	temp_delt=2;
	sbuffer1[0]=M_OA_P;			//横摆和面板接收
	sbuffer1[1]=p_out_sec;			//横摆区间外参数
	for(temp_pc=2;temp_pc<52;temp_pc++)
	{
		if(temp_pc%2==0)
		{
			sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
			temp_delt++;
		}
		else
			sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
	}
	for(temp_pc=52;temp_pc<55;temp_pc++)
		sbuffer1[temp_pc]=0;
	s_byte_nums=55;
	TR_ans();
RESEND2: if(resend==1||overtime==1)
	{
		c_err++;
		resend=0;
		overtime=0;
		if(c_err<5)
		{			
			TR_ans();
			goto RESEND2;
		}
		else
		{
			c_err=0;
			err=2;
			stop=0;
			while(urgent_stop==0);
				goto END_P1;
		}
	}
	else
		c_err=0;
		
	if(pp.sec_num>0)
	{
		for(anum=0;anum<3;anum++)
		{
			s_p=1;
			for(snum=0;snum<pp.sec_num;snum++)
			{
				s_p=1;
				switch(anum)
				{
					case 0:	point=&pp.x[snum][0];break;
					case 1:	point=&pp.x[snum][10];break;
					case 2:	point=&pp.x[snum][20];break;
					default:break;
				}
				temp_delt=3;
				sbuffer1[0]=axis[anum];
				sbuffer1[1]=p_in_sec;
				sbuffer1[2]=snum;

				for(temp_pc=3;temp_pc<23;temp_pc++)
				{
					if(temp_pc%2==1)
					{
						sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
						temp_delt++;
					}
					else
						sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
				}
				sbuffer1[23]=0;

				s_byte_nums=get_byte_nums(p_in_sec);
				TR_ans();
RESEND3:			if(resend==1||overtime==1)
				{
					c_err++;
					resend=0;
					overtime=0;
					if(c_err<5)
					{			
						TR_ans();
						goto RESEND3;
					}
					else
					{
						c_err=0;
						err=2;
						stop=0;
						while(urgent_stop==0);
							goto END_P1;
					}
				}
				else
					c_err=0;

			}
		}
	}
END_P1:	p_send=0;
	s_p=0;
}

void ini_ram()
{
	for(times=0;times<6;times++)
	{
		readEEP_page();
		delay(13);
	}
}

void switch_state()
{
	ini_sbuf(M_P_RC,program,PRG,0,0,0,0);
	s_byte_nums=4;
	TR_noans();
/*	TR_ans();
	answer_judge();
	ini_sbuf(M_RC,command,com_demand,0,0,0,0);
	s_byte_nums=4;
	TR_ans();
	answer_judge();
*/
	ini_sbuf(M_RC,command,com_weld_simu,0,0,0,0);
	s_byte_nums=4;
	wait_ans=1;
	TR_ans();
	wait_ans=0;
	YOUHU=rbuffer[3];
	new_switch11=0;
	ini_sbuf(M_current,infor,com_weld_simu,YOUHU,0,0,0);
	s_byte_nums=6;
	TR_noans();
//	TR_ans();

	ini_sbuf(M_RC,command,com_wire_on_off,0,0,0,0);
	s_byte_nums=4;
	wait_ans=1;
	TR_ans();
	wait_ans=0;
	WIRE=rbuffer[3];
	new_switch22=0;
	ini_sbuf(M_RW,infor,com_wire_on_off,WIRE,0,0,0);
	s_byte_nums=6;
	TR_noans();
//	TR_ans();

	ini_sbuf(M_RC,command,com_delt_switch,0,0,0,0);
	s_byte_nums=4;
	wait_ans=1;
	TR_ans();
	wait_ans=0;
	delt_state=rbuffer[3];
	delt_switch=0;
	ini_sbuf(M_ALL,infor,com_delt_switch,delt_state,0,0,0);
	s_byte_nums=6;
	TR_noans();
//	TR_ans();
}

void edit()
{
	while(editing==1)
	{
			if(edit_finish==1)
			{
				p_name=76;
				param=1;
				para_table();
				param=0;
				edit_finish=0;
				editing=0;
			}
			else if(param==1)
			{
				p_name=rbuffer[2];
				para_table();
				if(temp_edit_finish==1)
				{
					edit_finish=1;
					temp_edit_finish=0;
				}
			}	
		while(in_sector==1)
		{
			get_SLA();
			point=&pp.x[nonce_sec][0];	
			for(p_sec=0;p_sec<30;p_sec++)
			{
				*(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
				COMM=(mainDDR+152+nonce_sec*60+p_sec*2)/256;
				writeEEP_word();
				delay(5);
			}
			in_sector=0;
		}
	}
}

void start_t2()
{
	TM2CON=0x8D;    /*16位溢出,分频系数8,f/12*/
	EA=1;
	TM2IR=0;
}

void count()
{
	n_t01=pp.t01;
	n_t02=pp.t02;
	if(pp.gas2==ON)
	{
		n_t03=pp.t03;
		n_t04=pp.t04;
	}
	n_t12=pp.t12;
	n_t17=pp.t17;
	n_t34=pp.t34;

	if(pp.t13_sd==0)
		n_t13=pp.t13;
	if(pp.n11_sd==0)
		n_n11=pp.n11;
	if(pp.t21_sd==0)
		n_t21=pp.t21;
	if(pp.t31_sd==0)
		n_t31=pp.t31;
	if(pp.t32_sd==0)
		n_t32=pp.t32;
	if(pp.t33_sd==0)
		n_t33=pp.t33;
	if(pp.t41_sd==0)
		n_t41=pp.t41;
	if(pp.t43_sd==0)
		n_t43=pp.t43;
	if(pp.t51_sd==0)
		n_t51=pp.t51;
	if(pp.t52_sd==0)
		n_t52=pp.t52;
}

void start_woa()		//送丝、横摆、弧长哪个时间短先启动哪个
{
	if(pp.k3==1&&WIRE==ON&&t31OK==0&&wire_stoped==0)
	{
		if((pp.t31_sd==0&&c_flow>=c_current+n_t31)||(pp.t31_sd==1&&FINISH>=pp.t31))
		{
			ini_sbuf(M_RW,command,com_wire,0,0,0,0);
			s_byte_nums=4;
			wait_ans=1;
			TR_ans();
			wait_ans=0;
//			answer_judge();
			t31OK=1;
		}
	}
	if(pp.k4==1&&t41OK==0)
	{
		if((pp.t41_sd==0&&c_flow>=c_current+n_t41)||(pp.t41_sd==1&&FINISH>=pp.t41))
		{
			ini_sbuf(M_OSC,command,com_osc,0,0,0,0);
			s_byte_nums=4;
			wait_ans=1;
			TR_ans();
			wait_ans=0;
//			answer_judge();
			t41OK=1;
		}
	}
	if(YOUHU&&pp.k5==1&&t51OK==0&&avc_stoped==0)
	{
		if((pp.t51_sd==0&&c_flow>=c_current+n_t51)||(pp.t51_sd==1&&FINISH>=pp.t51))
		{
			ini_sbuf(M_AVC,command,com_avc,0,0,0,0);
			s_byte_nums=4;
			wait_ans=1;
			TR_ans();
			wait_ans=0;
//			answer_judge();
			t51OK=1;
		}
	}
}

void EX0_INT (void) interrupt 0			//急停
{
	EX0=0;
	s_p=0;
	if(rc_err==1)
	{
		rc_err=0;
		last_FINISH=FINISH;
		stop=1;
		stop=1;
	}
	else if(main_err==1)
	{	
		main_err=0;			//清主板出错标志
		ini_sbuf(M_P_RC,err_infor,M_main,err,0,0,0);
		s_byte_nums=5;
		TR_noans();
		err=0;
		stop=1;
	}
	else
	{
		ini_sbuf(M_current,command,com_calling,0,0,0,0);
		s_byte_nums=4;
		TR_ans();		// 对方给正常时应答类型,出错时错误信息类型
		if(rbuffer[1]==answer)
		{
			ini_sbuf(M_RW,command,com_calling,0,0,0,0);
			s_byte_nums=4;
			TR_ans();
			if(rbuffer[1]==answer)
			{
				ini_sbuf(M_OSC,command,com_calling,0,0,0,0);
				s_byte_nums=4;
				TR_ans();
				if(rbuffer[1]==answer)
				{
					ini_sbuf(M_AVC,command,com_calling,0,0,0,0);
					s_byte_nums=4;
					TR_ans();
					if(rbuffer[1]==err_infor)
					{
						if(work!=0)
						{
							ini_sbuf(M_P_RC,err_infor,M_AVC,err,0,0,0);
							s_byte_nums=5;
							TR_noans();
						}
						else
						{
							if(err==18)
							{
								ini_sbuf(M_AVC,command,com_lift,0,0,0,0);
								s_byte_nums=4;
								TR_noans();
							}
						}
						
					}
				}
				else
				{
					ini_sbuf(M_P_RC,err_infor,M_OSC,err,0,0,0);
					s_byte_nums=5;
					TR_noans();
				}
			}
			else
			{
				ini_sbuf(M_P_RC,err_infor,M_RW,err,0,0,0);
				s_byte_nums=5;
				TR_noans();
			}
		}
		else
		{
			ini_sbuf(M_P_RC,err_infor,M_current,err,0,0,0);
			s_byte_nums=5;
			TR_noans();
		}
		
	}
	delay(10);
	ini_sbuf(M_ALL,command,com_err_ok,0,0,0,0);
	s_byte_nums=4;
	TR_noans();
	urgent_stop=1;
	POINTER1=64;
	wait_ans=0;
}

void EX1_INT(void) interrupt 2		//响应线控器申请
{
	EX1=0;
	c_ex1++;
	if(c_ex1==3)
	{
		EX1=0;
		c_ex1=0;
		rc_demand=1;
	}
	else
		EX1=1;
}

void T1_INT (void) interrupt 3
{
	c_t1++;
	if(send==1)
	{
		if(c_t1==7)
		{
			if(s_p==0)
				S0BUF=sbuffer[POINTER0];
			else
				S0BUF=sbuffer1[POINTER0];
			c_t1=0;
		}
	}
	else
	{
			if(p_send==1)
			{
				if(c_t1==4000)
				{
					TR1=0;
					c_t1=0;
					overtime=1;
				}
				
			}
			else
			{
				if(c_t1==100)
				{
					TR1=0;
					c_t1=0;
					overtime=1;
				}
			}
	}

⌨️ 快捷键说明

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