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

📄 main_stop2.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 information**********/

xdata unsigned char sbuffer[7],rbuffer[64],sbuffer1[55],existent[6];
unsigned char	S_ANSW,R_ANSW,POINTER0,POINTER1,work,Rn,Wn,OA,RSUM,SSUM,sw,PRG,
		err,toPRG,temp_PRG,p_name,s_byte_nums,r_byte_nums,
		times,p_sec,c_ex1,delt_state,c_c_t1;
unsigned int 	*point,n_n11,n_t21,n_t31,n_t13,n_t32,n_t33,n_t41,n_t43,n_t51,n_t52,
		n_t01,n_t02,n_t03,n_t04,n_t12,n_t17,n_t34,c_flow,c_sum,c_current,
		c_end,temp_GET,general_param,mainDDR,secondDDR,nums,nums1,delt,c_t1
		;
unsigned char COMM,SLA,FF,GET;
bit	ignit_ok,lift_ok,auto_return,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,send_p_ok;

xdata	uchar	start		_at_ 0x0800;
xdata	uchar	start_again	_at_ 0x0801;
xdata	uchar	decrease	_at_ 0x0802;
xdata	uchar	err_ok		_at_ 0x0804;
xdata	uchar	YOUHU		_at_ 0x0806;
xdata	uchar	WIRE		_at_ 0x0808;
xdata	uchar	decrease_ok	_at_ 0x080A;
xdata	uchar	weld_switch	_at_ 0x080C;
xdata	uchar	wire_switch	_at_ 0x080E;
xdata	uchar	current_add	_at_ 0x0810;
xdata	uchar	current_dec	_at_ 0x0812;
xdata	uchar	rot_front	_at_ 0x0814;
xdata	uchar	rot_reverse	_at_ 0x0816;
xdata	uchar	wire_add	_at_ 0x0818;
xdata	uchar	wire_dec	_at_ 0x081A;
xdata	uchar	osc_l		_at_ 0x081C;
xdata	uchar	osc_r		_at_ 0x081E;
xdata	uchar	breadth_add	_at_ 0x0820;
xdata	uchar	breadth_dec	_at_ 0x0822;
xdata	uchar	avc_up		_at_ 0x0824;
xdata	uchar	avc_down	_at_ 0x0826;
xdata	uchar	motor_stop	_at_ 0x0828;
xdata	uchar	delt_switch	_at_ 0x082A;
xdata	uchar	return_ok	_at_ 0x082C;
xdata	uchar	nonce_sec	_at_ 0X082E;
xdata	uint	FINISH		_at_ 0X0830;
xdata	uint	CURRENT		_at_ 0X0832;
xdata	uint	VOLTAGE		_at_ 0X0834;
xdata	uint	AVC		_at_ 0X0836;
//xdata	uchar	pc_ok		_at_ 0x0838;
xdata	uchar	new_switch11	_at_ 0x0839;
xdata	uchar	new_switch22	_at_ 0x083A;
xdata	uchar	p_forbided	_at_ 0x083B;
xdata	uchar	rc_forbided	_at_ 0x083C;
xdata	uchar	p_actived	_at_ 0x083D;
xdata	uchar	rc_actived	_at_ 0x083E;
xdata	uint	last_FINISH	_at_ 0x0840;
xdata	uchar	pc_stop		_at_ 0x0842;
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:	{
 				pp.k21=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.k21;
 			}break;
 	case	V21_P:	{
 				pp.v21_p=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.v21_p;
 			}break;
 	case	V21_B:	{
 				pp.v21_b=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.v21_b;
 			}break;
 	case	T21:	{
 				pp.t21=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t21;
 			}break;
 	case    T21_SD:	{
 				pp.t21_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t21_sd;
 			}break;
 	case	DV21:	{
 				pp.dv21=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.dv21;
 			}break;
 	case	B:	{
 				pp.b=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.b;
 			}break;
	case	K3:	{
				pp.k3=rbuffer[3]*256+rbuffer[4];
				general_param=pp.k3;
			}break;
 	case	K31:	{
 				pp.k31=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.k31;
 			}break;
 	case	WN:	{
 				pp.wn=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.wn;
 			}break;
	case	T31:	{
				pp.t31=rbuffer[3]*256+rbuffer[4];
				general_param=pp.t31;
			}break;
 	case    T31_SD:	{
 				pp.t31_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t31_sd;
 			}break;
 	case    T32:	{
 				pp.t32=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t32;
 			}break;
 	case    T32_SD:	{
 				pp.t32_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t32_sd;
 			}break;
 	case	V31_P:	{
 				pp.v31_p=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.v31_p;
 			}break;
 	case	V31_B:	{
 				pp.v31_b=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.v31_b;
 			}break;
 	case	DV31:	{
 				pp.dv31=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.dv31;
 			}break;
 	case	T33:	{
 				pp.t33=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t33;

⌨️ 快捷键说明

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