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

📄 main_1027.c.bak

📁 基于485的51单片机多机通讯程序
💻 BAK
📖 第 1 页 / 共 5 页
字号:
#pragma la
#include <main.h>
#define uchar	unsigned char
#define uint	unsigned int
sbit stop=P3^5;

/**********err information**********/
/*
err=0		正常
err=1		急停
err=2		通讯出错
err=3		引弧失败
err=4		电源出错
err=5		过温
err=6		缺水
err=7		缺气1
err=8		缺气2
err=9		旋转过流
err=10		送丝过流
err=11		旋转限位
err=12		横摆左限位
err=13		横摆右限位
err=14		横摆过流
err=15		弧长上限位
err=16		弧长下限位
err=17		弧长过流
err=18		弧长短路
err=19		缺电流板
err=20		失弧		
*/
/**********err information**********/

bit	ignit_ok,lift_ok,editing,readEEPbyte,readEEPpage,
	writeEEPpage,writeEEPword,writeEEPbyte,edit_finish,copy,change_prg,
	overtime,getPRG,in_sector,send,current_ok,rw_ok,oa_ok,rc_ok,p_absent,
	t31OK,t41OK,t51OK,resend,param,ans,s_p,rc_demand,wire_stoped,avc_stoped,
	savePRG,noans_ok,calling,current_absent,rw_absent,oa_absent,main_err,current_err,rw_err,oa_err,
	osc_absent,avc_absent,p_out,p_send,temp_edit_finish,enter,rc_err;

bit	p_absent,rc_absent,change_sec_num,urgent_stop,p_forbid,rc_forbid,p_active,rc_active,wait_ans,
	tight,lose; 


xdata	uchar	start		_at_ 0x0800;
xdata	uchar	start_again	_at_ 0x0801;
xdata	uchar	decrease	_at_ 0x0802;
xdata	uchar	err_ok		_at_ 0x0803;
xdata	uchar	YOUHU		_at_ 0x0804;
xdata	uchar	WIRE		_at_ 0x0805;
xdata	uchar	decrease_ok	_at_ 0x0806;
//xdata	uchar	weld_switch	_at_ 0x0807;
//xdata	uchar	wire_switch	_at_ 0x0808;
xdata	uchar	current_add	_at_ 0x0809;
xdata	uchar	current_dec	_at_ 0x080A;
xdata	uchar	rot_front	_at_ 0x080B;
xdata	uchar	rot_reverse	_at_ 0x080C;
xdata	uchar	wire_add	_at_ 0x080D;
xdata	uchar	wire_dec	_at_ 0x080E;
xdata	uchar	osc_l		_at_ 0x080F;
xdata	uchar	osc_r		_at_ 0x0810;
xdata	uchar	breadth_add	_at_ 0x0811;
xdata	uchar	breadth_dec	_at_ 0x0812;
xdata	uchar	avc_up		_at_ 0x0813;
xdata	uchar	avc_down	_at_ 0x0814;
xdata	uchar	motor_stop	_at_ 0x0815;
xdata	uchar	delt_switch	_at_ 0x0816;
//xdata	uchar	return_ok	_at_ 0x0817;
xdata	uchar	nonce_sec	_at_ 0X0818;
xdata	uint	FINISH		_at_ 0X0819;
//xdata	uint	CURRENT		_at_ 0X081B;
//xdata	uint	VOLTAGE		_at_ 0X081D;
//xdata	uint	AVC		_at_ 0X081F;
xdata	uchar	new_switch11	_at_ 0x0821;
xdata	uchar	new_switch22	_at_ 0x0822;
xdata	uchar	pc_edit		_at_ 0x0823;
//xdata	uint	last_FINISH	_at_ 0x0824;
xdata	uchar	pc_stop		_at_ 0x0826;
xdata	uchar	edited		_at_ 0x0827;
xdata	uchar	p_changed	_at_ 0x0828;
xdata	uchar	scan		_at_ 0x0829;
xdata	uchar	err		_at_ 0x082A;


xdata	uchar	sbuffer[7]	_at_ 0x0000;
xdata	uchar	rbuffer[64]	_at_ 0x0007;
xdata	uchar	sbuffer1[55]	_at_ 0x0047;
xdata	uchar	existent[6]	_at_ 0x007E;
xdata	uchar	S_ANSW		_at_ 0x0084;
xdata	uchar	R_ANSW		_at_ 0x0085;
xdata	uchar	POINTER0	_at_ 0x0086;
xdata	uchar	POINTER1	_at_ 0x0087;
xdata	uchar	work		_at_ 0x0088;
xdata	uchar	Rn		_at_ 0x0089;
xdata	uchar	Wn		_at_ 0x008A;
xdata	uchar	OA		_at_ 0x008B;
xdata	uchar	RSUM		_at_ 0x008C;
xdata	uchar	SSUM		_at_ 0x008D;
xdata	uchar	sw		_at_ 0x008E;
xdata	uchar	PRG		_at_ 0x008F;
//xdata	uchar	err		_at_ 0x0090;
xdata	uchar	temp_PRG	_at_ 0x0091;
xdata	uchar	p_name		_at_ 0x0092;
xdata	uchar	s_byte_nums	_at_ 0x0093;
xdata	uchar	r_byte_nums	_at_ 0x0094;
xdata	uchar	times		_at_ 0x0095;
xdata	uchar	p_sec		_at_ 0x0096;
xdata	uchar	c_ex1		_at_ 0x0097;
xdata	uchar	delt_state	_at_ 0x0098;
xdata	uchar	c_c_t1		_at_ 0x0099;
xdata	uchar	key		_at_ 0x009A;
//xdata	uchar	r_byte_nums	_at_ 0x009B;
xdata	uchar	COMM		_at_ 0x009C;
xdata	uchar	SLA		_at_ 0x009D;
xdata	uchar	FF		_at_ 0x009E;
xdata	uchar	GET		_at_ 0x009F;
xdata	uchar	touch_ok	_at_ 0x00A0;
xdata	uchar	c_cm1		_at_ 0x00A1;

xdata	uint	*point		_at_ 0x0200;
xdata	uint	n_n11		_at_ 0x0202;
xdata	uint	n_t21		_at_ 0x0204;
xdata	uint	n_t31		_at_ 0x0206;
xdata	uint	n_t13		_at_ 0x0208;
xdata	uint	n_t32		_at_ 0x020A;
xdata	uint	n_t33		_at_ 0x020C;
xdata	uint	n_t41		_at_ 0x020E;
//xdata	uint	n_t43		_at_ 0x0212;
xdata	uint	n_t51		_at_ 0x0214;
xdata	uint	n_t52		_at_ 0x0216;
xdata	uint	n_t01		_at_ 0x0218;
xdata	uint	n_t02		_at_ 0x021A;
xdata	uint	n_t03		_at_ 0x021C;
xdata	uint	n_t04		_at_ 0x021E;
xdata	uint	n_t12		_at_ 0x0220;
xdata	uint	n_t17		_at_ 0x0222;
xdata	uint	n_t34		_at_ 0x0224;
xdata	uint	c_flow		_at_ 0x0226;
xdata	uint	c_sum		_at_ 0x0228;
xdata	uint	c_current	_at_ 0x022A;
xdata	uint	c_end		_at_ 0x022C;
xdata	uint	temp_GET	_at_ 0x022E;
xdata	uint	general_param	_at_ 0x0230;
xdata	uint	mainDDR		_at_ 0x0232;
xdata	uint	secondDDR	_at_ 0x0234;
xdata	uint	nums		_at_ 0x0236;
xdata	uint	nums1		_at_ 0x0238;
xdata	uint	delt		_at_ 0x023A;
xdata	uint	c_t1		_at_ 0x023C;
xdata	float	temp_t		_at_ 0x023E;
xdata	uint	n_t13_bb	_at_ 0x0242;
xdata	uint	n_t21_bb	_at_ 0x0244;
xdata	uint	n_t32_bb	_at_ 0x0246;
xdata	uint	CURRENT		_at_ 0x0248;
xdata	uint	VOLTAGE		_at_ 0x024A;
xdata	uint	last_FINISH	_at_ 0x024C;
				
		
void delay(unsigned int num)
{
  data unsigned int i,ii;
  for(i=0;i<num;i++)
   {
     for(ii=0;ii<255;ii++);
   }
}

void start_i2()
{
   data unsigned int time;
   P1_6=1;		//SCL
   P1_7=1;		//SDA
   S1CON=0x47;		//ENS1=1 STA=0 STO=0 SI=0 AA=1
   PS1=1;FF=0;
   EA=1;
   ES1=1;
   STA=1;
   time=0;
   do
     {
      time++;
      if(time>10000)
          {
           FF=1;
          }
     }while(FF==0);
   FF=0;
   ES1=0;
}

void ini_sbuf(unsigned char a,b,c,d,e,f,g)
{
	sbuffer[0]=a;
	sbuffer[1]=b;
	sbuffer[2]=c;
	sbuffer[3]=d;
	sbuffer[4]=e;
	sbuffer[5]=f;
	sbuffer[6]=g;
}

unsigned char get_byte_nums(unsigned char type)
{
	unsigned char numbers;
	switch(type)
	{
		case	command:
		case	program:
		case	answer:		numbers=4;
					break;
		case	err_infor:
		case	parameter1:	numbers=5;
					break;
		case	parameter:
		case	infor:		numbers=6;
					break;
		case	parameter2:	numbers=7;
					break;
		case	call_result:	numbers=9;
					break;
		case	p_out_sec:	numbers=55;
					break;
		case	p_in_sec:	numbers=24;
					break;
		case	edit_sec:	numbers=64;
					break;
		case	p_section:
		case	p_edit_finish:	numbers=8;
					break;
		default:		break;
	}
	return numbers;
}

void start_i2a()
{
   P1_6=1;		//SCL
   P1_7=1;		//SDA
   S1CON=0x47;		//ENS1=1 STA=0 STO=0 SI=0 AA=1
   PS1=1;
   EA=1;
   ES1=1;
   STA=1;
}

void get_SLA()
{

	if(PRG<50)
 	{
 		SLA=0xA0;
 		temp_PRG=PRG;
 	}
	else
	{
		if(PRG<100)
		{
			SLA=0XA2;
			temp_PRG=PRG-50;
		}
	}
	mainDDR=temp_PRG*768;
}

void get_SLA1()
{
	if(PRG<50)
	{
		SLA=0XA0;
		temp_PRG=PRG;
	}
	else
	{
		if(PRG<100)
		{
			SLA=0XA2;
			temp_PRG=PRG-50;
		}
		else
		{
			if(PRG<150)
			{
				SLA=0XA4;
				temp_PRG=PRG-100;
			}
			else
			{
				SLA=0XA6;
				temp_PRG=PRG-150;
			}
		}
	}
	mainDDR=temp_PRG*768;
}

void readEEP_byte()
{
	nums=0;
	readEEPbyte=1;
	SLA=0XA0;
	COMM=0xFF;
	start_i2a();
	while(readEEPbyte==1)
	{
		if(urgent_stop==1)
			readEEPbyte=0;
	}
}

void readEEP_page()
{
	nums=0;
	nums1=0;
	delt=2;
	point=&pp.pn;
	readEEPpage=1;
	get_SLA1();
	COMM=(mainDDR+times*128)/256;
	start_i2a();
	while(readEEPpage==1)
	{
		if(urgent_stop==1)
			readEEPpage=0;
	}
}

void writeEEP_byte()
{
	nums=0;
	writeEEPbyte=1;
	SLA=0XA0;
	COMM=0XFF;
	start_i2a();
	while(writeEEPbyte==1)
	{
		if(urgent_stop==1)
			writeEEPbyte=0;
	}
}

void writeEEP_word()
{
	nums=0;
	writeEEPword=1;
	start_i2a();
	while(writeEEPword==1)
	{
		if(urgent_stop==1)
			writeEEPword=0;
	}
}

void writeEEP_page(unsigned char t)			//将指定专家参数复制到目的程序号下
{
	nums=0;
	delt=2;
	writeEEPpage=1;
	get_SLA1();
	COMM=(mainDDR+t*128)/256;
	start_i2a();
	while(writeEEPpage==1)
	{
		if(urgent_stop==1)
			writeEEPpage=0;
	}
}

void save_prg()
{
	savePRG=1;
	SLA=0XA0;
	COMM=0XFF;
	writeEEP_byte();
}

void TR_noans()
{
	noans_ok=0;
	TB8=1;
	POINTER0=0;
	SSUM=0;
	send=1;
	c_t1=0;
	TR1=1;
	while(POINTER0<s_byte_nums);
	TR1=0;
	noans_ok=1;
}

void TR_ans()
{
	REN=0;
	ans=1;
	POINTER1=0;
	RSUM=0;
	TB8=1;
	POINTER0=0;
	SSUM=0;
	send=1;
	c_t1=0;
	TR1=1;
	while(POINTER0<s_byte_nums);
	TR1=0;

	REN=1;
	send=0;
	c_t1=0;
	TR1=1;
	while(POINTER1<r_byte_nums&&overtime==0);
	TR1=0;
	POINTER1=0;
	RSUM=0;
	c_t1=0;
	if(overtime==1)
	{
		if(wait_ans==1)
		{
			err=2;
			main_err=1;
		}
		c_t1=0;
	}
	ans=0;
	REN=0;
}

void get_secondDDR()
{
	switch(p_name)
	{
		case T01:	secondDDR=2;break;
		case T02:	secondDDR=4;break;
		case GAS2:	secondDDR=6;break;
		case T03:	secondDDR=8;break;
		case T04:	secondDDR=10;break;
		case K1:	secondDDR=12;break;
		case Ignit:	secondDDR=14;break;
		case I11:	secondDDR=16;break;
		case T12:	secondDDR=18;break;
		case I12:	secondDDR=20;break;
		case T13:	secondDDR=22;break;
		case T13_SD:	secondDDR=24;break;
		case T14:	secondDDR=26;break;
		case I14:	secondDDR=28;break;
		case T15:	secondDDR=30;break;
		case I15:	secondDDR=32;break;
		case DI:	secondDDR=34;break;
		case AHF:	secondDDR=36;break;
		case I16:	secondDDR=38;break;
		case F:		secondDDR=40;break;
		case T16:	secondDDR=42;break;
		case N11:	secondDDR=44;break;
		case N11_SD:	secondDDR=46;break;
		case T17:	secondDDR=48;break;
		case I17:	secondDDR=50;break;
		case K2:	secondDDR=52;break;
		case RN:	secondDDR=54;break;
		case D:		secondDDR=56;break;
		case K21:	secondDDR=58;break;
		case V21_P:	secondDDR=60;break;
		case V21_B:	secondDDR=62;break;
		case T21:	secondDDR=64;break;
		case T21_SD:	secondDDR=66;break;
		case DV21:	secondDDR=68;break;
		case B	:	secondDDR=70;break;
		case K3:	secondDDR=72;break;
		case K31:	secondDDR=74;break;
		case WN:	secondDDR=76;break;
		case T31:	secondDDR=78;break;
		case T31_SD:	secondDDR=80;break;
		case T32:	secondDDR=82;break;
		case T32_SD:	secondDDR=84;break;
		case V31_P:	secondDDR=86;break;
		case V31_B:	secondDDR=88;break;
		case DV31:	secondDDR=90;break;
		case T33:	secondDDR=92;break;
		case T33_SD:	secondDDR=94;break;
		case V32:	secondDDR=96;break;
		case T34:	secondDDR=98;break;
		case K4:	secondDDR=100;break;
		case Syn_type:	secondDDR=102;break;
		case T41:	secondDDR=104;break;
		case T41_SD:	secondDDR=106;break;
		case T42_L:	secondDDR=108;break;
		case T42_R:	secondDDR=110;break;
		case V41:	secondDDR=112;break;
		case A41:	secondDDR=114;break;
		case DC41:	secondDDR=116;break;
		case DA41:	secondDDR=118;break;
		case T43:	secondDDR=120;break;
		case T43_SD:	secondDDR=122;break;
		case K5:	secondDDR=124;break;
		case PGJ:	secondDDR=126;break;
		case H51:	secondDDR=128;break;
		case T51:	secondDDR=130;break;
		case T51_SD:	secondDDR=132;break;
		case T52:	secondDDR=134;break;
		case T52_SD:	secondDDR=136;break;
		case AVC_type:	secondDDR=138;break;
		case U51_P:	secondDDR=140;break;
		case U51_B:	secondDDR=142;break;
		case SENS:	secondDDR=144;break;
		case DU51:	secondDDR=146;break;
		case H52:	secondDDR=148;break;
		case NUM_BB:	secondDDR=150;break;
		case N_BB:	secondDDR=150+nonce_sec*60+2;break;
		case T13_BB:	secondDDR=150+nonce_sec*60+4;break;
		case T14_BB:	secondDDR=150+nonce_sec*60+6;break;
		case I14_BB:	secondDDR=150+nonce_sec*60+8;break;
		case T15_BB:	secondDDR=150+nonce_sec*60+10;break;
		case I15_BB:	secondDDR=150+nonce_sec*60+12;break;
		case AHF_BB:	secondDDR=150+nonce_sec*60+14;break;
		case I16_BB:	secondDDR=150+nonce_sec*60+16;break;
		case F_BB:	secondDDR=150+nonce_sec*60+18;break;
		case T16_BB:	secondDDR=150+nonce_sec*60+20;break;
		case D_BB:	secondDDR=150+nonce_sec*60+22;break;
		case K21_BB:	secondDDR=150+nonce_sec*60+24;break;
		case V21P_BB:	secondDDR=150+nonce_sec*60+26;break;
		case V21B_BB:	secondDDR=150+nonce_sec*60+28;break;
		case T21_BB:	secondDDR=150+nonce_sec*60+30;break;
		case K3_BB:	secondDDR=150+nonce_sec*60+32;break;
		case K31_BB:	secondDDR=150+nonce_sec*60+34;break;
		case T32_BB:	secondDDR=150+nonce_sec*60+36;break;
		case V31P_BB:	secondDDR=150+nonce_sec*60+38;break;
		case V31B_BB:	secondDDR=150+nonce_sec*60+40;break;
		case K4_BB:	secondDDR=150+nonce_sec*60+42;break;
		case T42L_BB:	secondDDR=150+nonce_sec*60+44;break;
		case T42R_BB:	secondDDR=150+nonce_sec*60+46;break;
		case V41_BB:	secondDDR=150+nonce_sec*60+48;break;
		case A41_BB:	secondDDR=150+nonce_sec*60+50;break;
		case T43_BB:	secondDDR=150+nonce_sec*60+52;break;
		case U51P_BB:	secondDDR=150+nonce_sec*60+54;break;
		case U51B_BB:	secondDDR=150+nonce_sec*60+56;break;
		case SENS_BB:	secondDDR=150+nonce_sec*60+58;break;
		case DU51_BB:	secondDDR=150+nonce_sec*60+60;break;
		default:break;
	}
}

void para_table()
{

	switch(p_name)
	{
     	case    T01:	{
     				pp.t01=rbuffer[3]*256+rbuffer[4];
     				general_param=pp.t01;
     			}break;
 	case	T02:	{
 				pp.t02=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t02;
 			}break;
 	case	GAS2:	{
 				pp.gas2=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.gas2;
 			}break;
 	case    T03:	{
 				pp.t03=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t03;
 			}break;
 	case    T04:	{
 				pp.t04=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t04;
 			}break;
 	case	K1:	{
 				pp.k1=rbuffer[3]*256+rbuffer[4];
 				if(pp.k1==DC)
 				{
 					pp.k21=OFF;
 					pp.k31=OFF;
 				}
 				general_param=pp.k1;
 			}break;
 	case	Ignit:	{
 				pp.ignit=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.ignit;
 			}break;
 	case	I11:	{
 				pp.i11=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.i11;
 			}break;
 	case	T12:	{
 				pp.t12=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t12;
 			}break;
 	case	I12:	{
 				pp.i12=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.i12;
 			}break;
 	case	T13:	{
 				pp.t13=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t13;
 			}break;
 	case	T13_SD:	{
 				pp.t13_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t13_sd;
 			}break;
 	case	T14:	{
 				pp.t14=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t14;
 			}break;
 	case	I14:	{
 				pp.i14=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.i14;
 			}break;
 	case	T15:	{
 				pp.t15=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t15;
 			}break;
 	case	I15:	{
 				pp.i15=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.i15;
 			}break;
 	case	DI:	{
 				pp.di=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.di;
 			}break;
 	case	AHF:	{
 				pp.ahf=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.ahf;
 			}break;
 	case	I16:	{
 				pp.i16=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.i16;
 			}break;
 	case	F:	{
 				pp.f=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.f;
 			}break;
 	case	T16:	{
 				pp.t16=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t16;
 			}break;
 	case	N11:	{
 				pp.n11=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.n11;
 			}break;
 	case	N11_SD:	{
 				pp.n11_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.n11_sd;
 			}break;
 	case	T17:	{
 				pp.t17=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t17;
 			}break;
 	case	I17:	{
 				pp.i17=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.i17;
 			}break;
	case	K2:	{
				pp.k2=rbuffer[3]*256+rbuffer[4];
				general_param=pp.k2;
			}break;
 	case	RN:	{
 				pp.rn=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.rn;
 			}break;
 	case	D:	{
 				pp.d=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.d;
 			}break;
 	case	K21:	{

⌨️ 快捷键说明

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