在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例C/C++语言基础 → 撕拉力试验仪(医疗设备)控制程序

撕拉力试验仪(医疗设备)控制程序

C/C++语言基础

下载此实例
  • 开发语言:C/C++
  • 实例大小:4.78M
  • 下载次数:7
  • 浏览次数:158
  • 发布时间:2019-07-30
  • 实例类别:C/C++语言基础
  • 发 布 人:JINANA
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 设备

实例介绍

【实例简介】

【实例截图】

from clipboard

【核心代码】


#include "STC15W4K61S4.h"
#include "stdio.h"
#include "string.h"
#include "intrins.h"
#include "main.h"
#include "config.h"
#include "24c128.h"
#include "24C128.h"

bit B_Defy;		//是否修改过
bit B_Res;		//单片机复位标志
bit Spr1,Spr2,Spr3;
bit First_Test;
bit B_Tongji;
bit B_Start;
bit B_Test_Start;	//试验大于初始力值 开始进入试验
bit Mot_DIRB;
bit B_AD;		//AD是否更新
bit B_Stop;		//停机
bit B_Line;
bit B_FS;		//是否大于过初始力值

#define IDC_S 7		//产品型号:7:撕拉力试验机 YYB-01
unsigned char ID_Address;


//主程序用到的变量
unsigned char Mode01,Mode02,Mode03;
unsigned char Mode05;
unsigned char Mode_ICO1,Mode_ICO2;		//光标位置
unsigned char PRT_Mode;					//打印模式

//用户登陆
long int xdata Coust;	//系统现在用户
long int xdata CoustB;	//查看界面试验人员用户
long int xdata Coustomer[2];
long int xdata Coust_sec[2];
long int xdata CoustomerB[10];
long int xdata Coust_secB[10];
long int xdata CoustomerC[10];
long int xdata Coust_secC[10];

//系统时间用变量
bit B_Time;
unsigned char idata tt0,tt1,tt2;
unsigned int xdata Time0;
unsigned int xdata Time1,Time2,Time3;
unsigned int xdata Time9;		//试验计时
long int xdata Time_L0,Time_L1;
unsigned int xdata Time_Res;
unsigned int xdata Time_Mot;
unsigned int xdata Time_Set;	//设定时间
unsigned int xdata T_Set;		//设定时间

//AD 采样 标定 平均使用变量
long int xdata AD_02;
long int xdata AD_E2;
unsigned char AD_n2;
long int xdata AD2_BUF[20];
long int idata XX_AD0,XX_AD1;
long int idata YY_Dat0,YY_Dat1;
long int xdata YY_DY;		//力值修正
long int xdata YY_Max;		//保护力值 
float idata KKK;
unsigned char Mode_Sensor;		//传感器类型
long int xdata End00;			//力值
long int xdata End01;			//修正后力值 01  标定界面清零
long int xdata End02,End02B;	//修正后力值 02  试验界面清零
long int xdata End02C;			//反向力值

//位移
char idata CD_00,CD_01;
unsigned char idata CD_N00,CD_N01,CD_N02;
long int xdata CD_Vol0;			//位移 脉冲个数
long int xdata CD_Vol1;			//位移 mm	
long int xdata CD_Vol2;			//下一次记录数据	
long int xdata CD_Vol3;			//记录位置 回位时使用	
long int xdata CD_Vol4;			//记录位置 试验过程中过冲使用	
long int xdata CD_Vol_SetA;		//清零数据
long int xdata CD_Vol_SetB;		//预置厚度
int xdata Vol_D[12];				//历史数据 最多用到10次
//曲线使用
int xdata Lin_Dat[1024];
unsigned int xdata Lin_N0,Lin_N1;			//刷新点 存储点
long int xdata Ymax_Dat,Ymin_Dat;			//记录间隔之间的最大值
long int xdata Lin_Yn,Lin_Xn;					//Y方向最大值,如果大于这个数需要修改 MUL_Y;
int xdata MUL_Y;

//试验使用参数
unsigned char xdata Test_MM;
unsigned char xdata Mode_Test;	//试验模试
long int xdata Test_N0;			//试验编号
unsigned char xdata Test_Times;	//试验次数
long int xdata Test_L;			//试样厚度
long int xdata LL_00,LL_01;		//位移
long int xdata LL_02;			//拉伸长度
long int xdata LL_03;			//记录点位置
long int xdata Set1_D[11][10];	//试验参数
long int xdata TestAD_N;		//记录 AD 累积次数
float xdata TestAD_Sum;			//记录 AD 累积和
unsigned char xdata Sample_Serial[16];
long int xdata Set_FF[5];		//针尖穿刺
unsigned char xdata Dat_Num;	//定点剥离记录的点数
long int xdata Dat_EE[7];		//定点剥离记录

//试验结果
long int xdata End_Max,End_Min,End_Ave;	//试验结果 最大值 最小值 平均值
long int xdata Test_End01;		//伸长率
long int xdata Test_End02;		//拉伸强度
long int xdata Test_End03;		//伸长率
long int xdata Test_End04;		//拉伸强度
long int xdata Test_End05;		//针尖穿刺使用,位移
//查询使用变量
unsigned char xdata Time_Q[8];
unsigned int xdata  Set_Q[6];
long int xdata Test_N0_Q;
//按键
bit B_Key;
unsigned char Key00,Key01,Key02;
long int idata Key_LN;
//蜂鸣器使用变量
unsigned char xdata SPK_Mode;
unsigned int xdata Time_SPK;

//串口 1 使用变量
unsigned char U1R_Mode,U1T_Mode;
unsigned char idata U1T_N0,U1T_N1;
unsigned char xdata R1_Data[30],T1_Data[250];

unsigned char U2R_Mode,U2T_Mode;
unsigned char idata U2R_N0,U2R_N1;
unsigned char idata U2T_N0,U2T_N1;
unsigned char xdata R2_Data[0x40],T2_Data[0x60];

unsigned char U3R_Mode,U3T_Mode;
unsigned char idata U3R_N0,U3R_N1;
unsigned char idata U3T_N0,U3T_N1;
unsigned char xdata R3_Data[0x40],T3_Data[0x40];

//电机使用变量
bit B_MOT_RG;	//标示 电机速度需要更新
bit B_L0;		//标示 L0_Data 可以使用
bit B_JL;		//标示 按位移停机
unsigned char xdata Mode_Mot;
long int xdata Set_Speed;			//暂定为 1——500 mm/S 可调
long int xdata Set_Speed0;			//暂定为 1——500 mm/S 可调

unsigned char idata LL0_1,LL0_2,LL0_3;
unsigned long int xdata L0_Data;	//脉冲计数 一直
unsigned long int xdata L1_Data;	//脉冲计数

//时钟相关变量
unsigned char xdata Time[10];

//常用变量
unsigned char idata CC1,CC2,CC3,CC4;
unsigned int xdata II1,II2,II3;
int xdata SI1,SI2,SI3;
unsigned long int xdata LL1,LL2;
long int xdata SL1,SL2;
float xdata FF1,FF2;
union F_L_C xdata UFL1,UFL2;
unsigned long int xdata sec;
unsigned long int xdata sec2;

unsigned char code *cptr;
#define ID_ADDR_ROM 0Xf3f9
unsigned int xdata CN_CON_ADD;	//通信 eeprom 地址

void main(void)
{
	
	Initilaztion();//程序初始化
	
	DelayMs(300);		//延时启动液晶屏
	
	for(II1=0;II1<513;II1  )
		Lin_Dat[II1] = II1%20;
	
	Coust = 0xffffff;		//初始化后 变为 0xFFFF
	if((Coustomer[0]==1)&&(Coust_sec[0]==123456))		//如果管理员没有修改密码则用户 0 密码 0可进入
	{
		Coust = 1;
		U1T_Mode = 0x85;
	}
		
	//程序主循环
	Mode01 = 0;
	Mode02 = 0;
	while(1)
	{
		TR_Time();
		if(B_Key)
			TR_Key();
		if(Spr1)
			TR_Display();
		if(B_Time)
			TR_Test();
		if(B_Time)
			TR_Mot();
		if(B_Time)
			TR_AD();
		if((B_Time)&&(!Busy))
			TR_Print();		//打印处理
		if(U1R_Mode==0x7a)
			TR_U1();
		if((B_Time)&&(U1T_Mode))
			Send_U1(U1T_Mode);
		
		//位移处理
		if(CD_N00!=CD_N01)
		{
			CD_N02 = CD_N00-CD_N01;
			if(CD_N02<128)	//上升
			{
				CD_N01  = CD_N02;
				CD_Vol0  = CD_N02;
			}
			else
			{
				CD_N02 = CD_N01-CD_N00;
				CD_N01 -= CD_N02;
				CD_Vol0 -= CD_N02;
			}
			
			
			CD_Vol1 = CD_Vol0/4;
			if(CD_Vol1!=CD_Vol2)
			{
				if(Mode_Test==0x0D)
				{
					SL1 = CD_Vol1-CD_Vol2;
					CD_Vol2  = SL1;
				}
				else if((Test_MM==3)||(Test_MM==4)||(Test_MM==7)||(Test_MM==8)||(Test_MM==9))
				{
					SL1 = CD_Vol2-CD_Vol1;
					CD_Vol2 -= SL1;
				}
				else
				{
					SL1 = CD_Vol1-CD_Vol2;
					CD_Vol2  = SL1;
				}
				LL_00  = SL1;
			}
			
		}
		
		if((U1R_Mode==0x88)|(U1R_Mode==0x89))	//向 STC15F2K32S2 写入程序
		{
			ES = 0;
			break;
		}
		
		B_Time = 0;
		
	}
	EA = 0;
	//向 STC15F2K32S2 写入程序
	while(0)
	{
		
		P31 = P00;
		P01 = P30;
		
		if(U1R_Mode==0x89)
			break;
	}
	//与液晶屏透传通信
	while(1)
	{
		P31 = P10;
		P11 = P30;
		if(U2R_Mode==1)	//接收到液晶按键 单片机复位
		{
			U2R_Mode = 0;
			U2R_N0 = 0;
			if((R2_Data[9]==0x14)|(R2_Data[9]==0x15))
				IAP_CONTR = 0x20;
		}
	}
}

void Initilaztion(void)	//程序初始化
{
	P0M0 = 0x00;
	P0M1 = 0x00;
	P2M0 = 0X00;
	P2M1 = 0X00;
	P4M0 = 0X00;
	P4M1 = 0X00;
	P6M0 = 0X00;
	P6M1 = 0X00;
	P7M0 = 0X00;
	P7M1 = 0X00;
	
	//选择通道
	P61 = 0;
	P62 = 1;
	ID_Address = 1;
	
	B_Res = 0;
	B_Tongji = 0;
	B_Start = 0;
	
	//开AD转换
	CS_Clk1 = 0;
	CS_Clk2 = 0;
	
	//
	CD_00 = CD_01 = 0;
	CD_N00 = CD_N01 = CD_N02 = 0;
	CD_Vol0 = CD_Vol1 = CD_Vol2 = 0;
	
	B_Time = 0;
	tt0 = tt1 = tt2 = 0;
	Time0 = 0;
	Time1 = Time2 = Time3 = 0;
	Time_L0 = Time_L1 = 0;
	
	Mode01 = Mode02 = Mode03 = 0;
	
	Mode_Mot = 0x00;
	Mode_Test = 0x00;
	PRT_Mode = 0;
	
	LL_00 = LL_01 = LL_02 = LL_03 = 0;
	LL0_1 = LL0_2 = LL0_3 = 0;
	L1_Data = 0;
	B_MOT_RG = 0;
	B_JL = 0;
	B_L0 = 0;
	
	U2T_Mode = 1;
	
	U1R_Mode = 0;
	U1T_Mode = 0;
	U1T_N0 = 0;
	U1T_N1 = 0;
	
	Timer0Init();
	UartInit();
	
	
	Read_Set();		//读出试验编号 读出试验参数
	Read_Set2();		//读出用户名 密码数据
	Read_CAL();		//读出标定数据
	
	Test_MM = Read24c128(0x02);
	if((Test_MM<1)||(Test_MM>10))
	{
		Test_MM = 1;
		Write24c128(Test_MM,0x0002);
	}
	DelayMs(500);
	
	ES = 1;			//串口 1 中断
	IE2 |= 0x01;		//串口 2 中断
	IE2 |= 0x08;		//串口 3 中断
	
	EX0 = 1;			//开外部 0 中断
	EX1 = 1;			//开外部 1 中断
	ET0 = 1;			//开定时器 0 中断
	EA = 1;			//开总中断允许
}
void TR_Time(void)
{
	if(tt1!=tt0)
	{
		B_Time = 1;
		tt2 = tt0-tt1;
		tt1  = tt2;
		
		Time0  = tt2;
		Time_L0  = tt2;
		
		if(Time0-Time1>=200)
		{
			Time1 = Time0;
			Spr1 = 1;
		}
		if(Time0-Time2>=500)
		{
			Time2 = Time0;
			// ES = 0;
			// TI = 1;
			// printf("CD_Vol0 = %ld;\n",CD_Vol0);
			// printf("CD_Vol1 = %ld;\n",CD_Vol1);
			// TI = 0;
			// ES = 1;
			// SBUF = Mode_Test;
		}
		if(Mode01==1)	//如果在试验界面
		{
			
		}
		
		//按键采集
		if(U2R_Mode==1)
		{
			U2R_Mode = 0;
			U2R_N0 = 0;
			if(R2_Data[4]==0x83)		//液晶屏数据存储器应答
			{
				//按键动作
				if((R2_Data[5]==0x00)&&(R2_Data[6]==0x00)&&(R2_Data[7]==0x01)&&(R2_Data[8]==0x00))//
				{
					B_Key = 1;
					Key01 = R2_Data[9];
				}
				else if((R2_Data[5]==0x02)&&(R2_Data[6]==0x20))	//序列号输入
				{
					if((Mode_Test==0)||(Mode_Test>0xf0))
					{
						Mode_Test = 0;
						End01 = 0;
						End02 = 0;
						Test_End01 = 0;
						Test_End02 = 0;
						Test_End03 = 0;
						Test_End04 = 0;
						
						CC2 = 8;
						for(CC1=0;CC1<14;CC1  )
							Sample_Serial[CC1] = R2_Data[CC2  ];
						B_Key = 1;
						Key01 = 0xc0;
					}
				}
				else if((R2_Data[5]==0x02)&&((R2_Data[7]==0x01)|(R2_Data[7]==0x02)))	//数据输入数据返回
				{
					B_Key = 1;
					Key01 = 0xa0 R2_Data[6];
					Key_LN = R2_Data[8]*0x100 R2_Data[9];
					if(R2_Data[7]==0x02)
					{
						SL1 = R2_Data[10]*0x100 R2_Data[11];
						Key_LN = Key_LN*0x10000 SL1;
						
					}
				}
				else
				{
					// for(CC1=0;CC1<10;CC1  )
					// {	
						
					// SBUF = R2_Data[CC1];
					// DelayMs(1);
					// }
				}
			}
		}			
		
		//发送开机帧
		if(B_Start==0)
		{
			if(Time0>=2000)
			{
				B_Start = 1;
				Send_U1(1);
			}
		}
		//单片机复位
		if(B_Res)
		{
			if(Time_Res==0)
			{
				Time_Res = Time0;
				if(Time_Res==0)
					Time_Res  ;
			}
			else
			{
				if(Time0-Time_Res>200)
					IAP_CONTR = 0x60;
			}
			
		}
	}
}
void TR_Key(void)			//按键
{
	// SBUF = Key01;
	B_Key = 0;
	Spr1 = 1;		//有过按键动作后马上刷新
	if(Key01==0x05)			//返回 一键返回欢迎界面
	{
		Read_Set();
		Read_Set2();
		Read_CAL();
		Mode_Mot = 0;
		Mode_Test = 0; 
		if(Mode01==1)
		{
			B_Defy = 0;
			Mode01 = 6;
			Mode02 = 0;
		}
		else if(Mode01==5)
		{
			Mode01 = 3;
			Mode02 = 0;
		}
		else if(Mode01==6)
		{
			Mode01 = 0;
			Mode02 = 0;
			Mode_Sensor = Read24c128(0x000e);
			Read_CAL();	//传感器重新读取标定数据,转为力值传感器
		}
		else if((Mode01==7)||(Mode01==9))
		{
			Mode01 = 1;
			Mode02 = 0;
		}
		else if(Mode01==8)
		{
			Mode01 = 3;
			Mode02 = 0;
			Mode_Sensor = Read24c128(0x000e);
			Read_CAL();	//传感器重新读取标定数据,转为力值传感器
		}
		
		else if(Mode01==21)
		{
			Mode01 = 20;
			Mode02 = 0;
		}
		else
		{
			Mode01 = 0x00;
			Mode02 = 0x00;
		}
		Sample_Serial[0] = 0xff;
	}
	else if(Mode01==0)		//待机界面
	{
		if(Key01==0x0f)		//公司标志
			Coust = 0xffffff;
		
		if(Coust<0xffffff)
		{
			if(Key01==0x11)			//进入试验界面
			{
				B_Defy = 0;
				Mode01 = 0x06;	//进入试验界面
				Mode02 = 0x00;
			}
			else if(Key01==0x12)		//进入查看界面
			{
				//用户权限判断
				CC4 = 0;
				if(Coust==Coustomer[0])
					CC4  ;
				for(CC1=0;CC1<10;CC1  )
				{
					if(Coust==CoustomerB[CC1])
					{
						CC4  ;
						break;
					}
				}
				if(CC4!=0)	//用户权限判断
				{
					Mode01 = 0x02;	//进入查看界面
					Mode02 = 0x00;
					Test_N0_Q = Test_N0;
				}
			}
			else if((Key01==0x13)&&(Coust==1))//进入设置界面
			{
				if(Coust==1)
				{
					B_Defy = 0;
					Mode01 = 0x03;	//进入设置界面
					Mode02 = 0x00;
				}
			}
			else if(Key01==0x15)		//进入关于界面
			{
				Mode01 = 0x04;		//进入关于界面
				Mode02 = 0x00;
			}
		}
		else
		{
			Mode01 = 20;
			Mode02 = 0;
		}
		Sample_Serial[0] = 0xff;
	}
	else if(Mode01==1)		//试验界面
	{
		if(Key01==0x11)			//试验
		{
			//按下一次设定键 更新一次时间
			Spr2 = 1;
			U2T_Mode = 2;
			
			Mot_DIRB = 0;
			Mode_Test = 1;
			
			U1T_Mode = 10;			//试验开始 接着发送试验参数 然后再发送试验数据	
		}
		else if(Key01==0x12)		//上升
		{
			if(Mode_Test==0xfa)
			{
				Mode_Test = 0x00;
			}
			if(Mode_Test==0)
			{
				if(Mode_Mot==0)
				{
					Mot_DIRB = 0;
					Set_Speed = 50;
					Mode_Mot = 1;
				}
				else if(Mot_DIRB==0)	//方向正确 加速
				{
					if(Set_Speed<1000)
					{
						Mot_DIRB = 0;
						Set_Speed *= 2;
						if(Set_Speed>1000)
							Set_Speed = 1000;
						Mode_Mot = 1;
					}
				}
			}
		}
		else if(Key01==0x13)		//下降
		{
			if(Mode_Test==0xfa)
			{
				Mode_Test = 0x00;
			}
			if(Mode_Test==0)
			{
				if(Mode_Mot==0)
				{
					Mot_DIRB = 1;
					Set_Speed = 50;
					Mode_Mot = 1;
				}
				else if(Mot_DIRB==1)	//方向正确
				{
					if(Set_Speed<1000)
					{
						Mot_DIRB = 1;
						Set_Speed *= 2;
						if(Set_Speed>1000)
							Set_Speed = 1000;
						Mode_Mot = 1;
					}
				}
			}
		}
		else if(Key01==0x14)		//停止
		{
			Mode_Test = 0;
			Mode_Mot = 0;
		}
		else if(Key01==0x05)		//确定
		{
			//按下一次设定键 更新一次时间
			Spr2 = 1;
			U2T_Mode = 2;
			
			if((Mode_Test==0)|(Mode_Test==2)) //待机
			{
				Mode_Test = 1;
				Test_Times = 0;
			}
			if(Test_Times<10)	//小于10次才记录,大于10次时自动丢弃
			{
				Test_Times  ;
				
				End00 = CD_Vol2;
				Vol_D[Test_Times] = End00;
				
				End01 = CD_Vol2;
				if(Test_Times==1)
				{
					End_Max = End01;
					End_Min = End01;
				}
				else
				{
					if(End_Max<End01)
						End_Max = End01;
					if(End_Min>End01)
						End_Min = End01;
				}
				End_Ave = 0;
			}
			
		}
		else if(Key01==0x15)	//试验参数设置
		{	
			CC4 = 0;
			if(Coust==Coustomer[0])
				CC4  ;
			for(CC1=0;CC1<10;CC1  )
			{
				if(Coust==CoustomerB[CC1])
				{
					CC4  ;
					break;
				}
			}
			if (CC4!=0)
			{
				Mode_Mot = 0;
				Mode_Test = 0;
				Mode01 = 7;
				Mode02 = 0;
				if(Test_MM==4)
				{
					Mode01 = 9;
				}
			}	
		}
		else if(Key01==0x14)	//统计
		{
			Mode_Test = 2;
			End_Ave = 0;
			for(CC1=1;CC1<=Test_Times;CC1  )
			{
				End_Ave  = Vol_D[CC1];
			}
			End_Ave /= Test_Times;
			
			//下面将试验数据写入存储器
			Write_Test();
			Read_Set();
		}
		else if(Key01==0x16)	//打印
		{
			
			if((PRT_Mode==0)&&(Mode_Test>0xf8))
			{
				PRT_Mode = 1;
			}
		}
		else if(Key01==0x21)		//位移清零 
		{
			Mode_Test = 0;
			LL_00 = 0;
		}
		else if(Key01==0x22)		//力值清零 
		{
			Mode_Test = 0;
			End02B = End01;
		}
		else if((Key01==0xa1)&&(Coust==1))		//试验编号
		{
			if((Mode_Test==0)|(Mode_Test==0xfa))
			{
				Mode_Test = 0;
				Mode02 = 0;		//清空曲线
				Test_End01 = 0;
				Test_End02 = 0;
				Test_End03 = 0;
				Test_End04 = 0;
				
				if(Key01>99999999)
					Key01 = 99999999;
				else if(Key_LN<1)
					Key_LN = 1;
				Test_N0 = Key_LN-1;
				II1 = 0x0008;
				UFL1.SL = Test_N0;
				CC3 = 0;
				Write24c128(UFL1.UC[CC3  ],II1  );
				Write24c128(UFL1.UC[CC3  ],II1  );
				Write24c128(UFL1.UC[CC3  ],II1  );
				Write24c128(UFL1.UC[CC3  ],II1  );
			}
		}
		else if(Key01==0xa2)						//设定速度
		{
			CC4 = 0;
			if(Coust==Coustomer[0])
				CC4  ;
			for(CC1=0;CC1<10;CC1  )
			{
				if(Coust==CoustomerB[CC1])
				{
					CC4  ;
					break;
				}
			}
			if(CC4!=0)
			{
				if(Key_LN>1000)
					Key_LN = 1000;
				else if(Key_LN<1)
					Key_LN = 1;
				Set1_D[Test_MM][0] = Key_LN;
				
				SL1 = Key_LN;
				Write_Set_SG(0);
			}
			
		}
		else if(Key01==0xa3)		//设定长度
		{
			CC4 = 0;
			if(Coust==Coustomer[0])
				CC4  ;
			for(CC1=0;CC1<10;CC1  )
			{
				if(Coust==CoustomerB[CC1])
				{
					CC4  ;
					break;
				}
			}
			if(CC4!=0)
			{
				if(Key_LN>100000)
					Key_LN = 100000;
				else if(Key_LN<1)
					Key_LN = 1;
				Set1_D[Test_MM][1] = Key_LN;
				SL1 = Key_LN;
				Write_Set_SG(1);
				// if(Test_MM==5)
				// {
					// SL1 /= 2;
					// Set1_D[Test_MM][2] = SL1;
					// Write_Set_SG(2);
				// }
			}
		}
		else if(Key01==0xa4)		//设定宽度
		{
			CC4 = 0;
			if(Coust==Coustomer[0])
				CC4  ;
			for(CC1=0;CC1<10;CC1  )
			{
				if(Coust==CoustomerB[CC1])
				{
					CC4  ;
					break;
				}
			}
			if(CC4!=0)
			{
				if(Key_LN>100000)
					Key_LN = 100000;
				else if(Key_LN<1)
					Key_LN = 1;
				Set1_D[Test_MM][2] = Key_LN;
				SL1 = Key_LN;
				Write_Set_SG(2);
			}
		}
		else if(Key01==0xa5)		//设定厚度
		{
			if(Coust==Coustomer[0])
				CC4  ;
			for(CC1=0;CC1<10;CC1  )
			{
				if(Coust==CoustomerB[CC1])
				{
					CC4  ;
					break;
				}
			}
			if(CC4!=0)
			{
				if(Key_LN>100000)
					Key_LN = 100000;
				else if(Key_LN<1)
					Key_LN = 1;
				Set1_D[Test_MM][3] = Key_LN;
				SL1 = Key_LN;
				Write_Set_SG(3);
			}
		}
	}
	else if(Mode01==2)		//查看界面
	{
		if(Key01==0x11)	//打印
		{
			if(PRT_Mode==0)
			{
				PRT_Mode = 1;
			}
		}
		else if(Key01==0x12)	//加
		{
			if(Test_N0_Q<Test_N0)
			{
				Test_N0_Q  ;
				Mode02 = 0;
				// Read_Test(Test_N0_Q);
			}
		}
		else if(Key01==0x13)	//减
		{
			if((Test_N0_Q>Test_N0-400)&&(Test_N0_Q>1))
			{
				Test_N0_Q--;
				Mode02 = 0;
				// Read_Test(Test_N0_Q);
			}
		}
		else if(Key01==0xa0)	//设置试验编号
		{
			if((Key_LN<=Test_N0)&&(Key_LN>Test_N0-400))
			{
				Test_N0_Q = Key_LN;
				Mode02 = 0;
				// Read_Test(Test_N0_Q);
			}
		}
	}
	else if(Mode01==3)		//设置界面
	{
		if(Key01==0x11)		//保存 确定
		{
			if(B_Defy)
			{
				B_Defy = 0;
				Write24c128(Mode_Sensor,0x000e);
				Write_CAL();
				Read_CAL();
			}
		}
		else if(Key01==0x12)	//修改传感器类型
		{
			B_Defy = 1;
			if(Mode_Sensor<6)
				Mode_Sensor  ;
			else
				Mode_Sensor = 0;
			Read_CAL();
		}
		else if(Key01==0xa0)		//标定密码
		{
			if(Key_LN==5513)
			{
				Mode_Sensor = Read24c128(0x000e);
				Read_CAL();	//传感器重新读取标定数据,转为力值传感器
				Mode01 = 5;
				Mode02 = 0;
			}
			else if(Key_LN==5514)	//进入气压标定
			{
				Mode_Sensor = 7;
				Read_CAL();
				Mode01 = 8;
				Mode02 = 0;
			}
		}
	}
	else if(Mode01==4)		//关于界面
	{
		if(Key01==0x11)		//确定键 打印联系方式
		{
			if(PRT_Mode==0)
				PRT_Mode = 1;
		}
	}
	else if(Mode01==5)		//标定界面
	{
		if(Key01==0x11)		//保存 确定
		{
			Write24c128(Mode_Sensor,0x000e);
			Write_CAL();
			CC3 = Test_MM;
			for(CC4=1;CC4<10;CC4  )
			{
				Test_MM = CC4;
				SL1 = YY_Max;
				Write_Set_SG(5);
			}
			Test_MM = CC3;
			Read_CAL();
			Read_Set();
		}
		else if(Key01==0x12)	//修改传感器类型
		{
			if(Mode_Sensor<6)
				Mode_Sensor  ;
			else
				Mode_Sensor = 0;
			Read_CAL();
		}
		else if(Key01==0xa1)		//力值修正
		{
			YY_DY = Key_LN;
		}
		else if(Key01==0xa2)		//力值保护
		{
			YY_Max = Key_LN;
		}
		else if(Key01==0xa3)		//零点标定
		{
			XX_AD0 = AD_E2;
			YY_Dat0 = Key_LN;
			
			FF1 = XX_AD1-XX_AD0;
			FF2 = YY_Dat1-YY_Dat0;
			KKK = FF2/FF1;
		}
		else if(Key01==0xa4)		//终点标定
		{
			XX_AD1 = AD_E2;
			YY_Dat1 = Key_LN;
			
			FF1 = XX_AD1-XX_AD0;
			FF2 = YY_Dat1-YY_Dat0;
			KKK = FF2/FF1;
		}
	}
	else if(Mode01==6)		//项目选择界面
	{
		if(Key01==0x11)		//确定键 进入试验界面
		{
			Mode01 = 1;
			Mode02 = 0;
			CD_Vol2 = CD_Vol1;
			LL_00 = 0;
			LL_02 = 0;
			if(Test_MM==8)
				End02B = 0;
			else
				End02B = End01;
			
			End02 = 0;
			Test_End01 = 0;
			Test_End02 = 0;
			Test_End03 = 0;
			Test_End04 = 0;
			Lin_Xn = 1;
			Lin_Yn = 0;
			if(B_Defy)		//写入选择的试验模式
				Write24c128(Test_MM,0x0002);
			Read_Set();
			if(Test_MM==8)
				Mode_Sensor = 7;
			else
				Mode_Sensor = Read24c128(0x000e);
			Read_CAL();
			Sample_Serial[0] = 0xff;
		}
		// else if(Key01==0x18)	//屏蔽这个试验项目
		// {
			
		// }
		else if((Key01>0x11)&&(Key01<0x1c))
		{
			B_Defy = 1;
			Test_MM = Key01-0x11;
			Mode01 = 6;
			Mode02 = 0;
		}
	}
	else if(Mode01==7)		//试验参数设置界面
	{
		if(Key01==0x11)			//
		{
			Read_Set();
		}
		else if(Key01==0x12)		//
		{
			Set1_D[Test_MM][8] = 1;
			SL1 = 1;
			Write_Set_SG(8);
			Mode02 = 0;
		}
		else if(Key01==0x13)		//
		{
			Set1_D[Test_MM][8] = 0;
			SL1 = 0;
			Write_Set_SG(8);
			Mode02 = 0;
		}
		else if(Key01>=0xa1)		//标定密码
		{
			if(Key01==0xa3)
			{
				if(Key_LN>99)
					Key_LN = 99;
			}
			else if(Key01==0xa4)
			{
				if(Key_LN>1000)
					Key_LN = 1000;
			}
			else
			{
				if(Key_LN>999999)
					Key_LN = 999999;
			}
			if(Key_LN<0)
				Key_LN = 0;
			
			CC3 = Key01-0xa0 3;
			Set1_D[Test_MM][CC3] = Key_LN;
			SL1 = Key_LN;
			Write_Set_SG(CC3);
		}
	}
	else if(Mode01==8)		//标定界面
	{
		if(Key01==0x11)		//保存 确定
		{
			Write_CAL();
			CC3 = Test_MM;
			for(CC4=1;CC4<10;CC4  )
			{
				Test_MM = CC4;
				SL1 = YY_Max;
				Write_Set_SG(5);
			}
			Test_MM = CC3;
			Read_CAL();
			Read_Set();
		}
		else if(Key01==0xa1)		//压力修正
		{
			YY_DY = Key_LN;
		}
		else if(Key01==0xa2)		//压力保护
		{
			YY_Max = Key_LN;
		}
		else if(Key01==0xa3)		//零点标定
		{
			XX_AD0 = AD_E2;
			YY_Dat0 = Key_LN;
			
			FF1 = XX_AD1-XX_AD0;
			FF2 = YY_Dat1-YY_Dat0;
			KKK = FF2/FF1;
		}
		else if(Key01==0xa4)		//终点标定
		{
			XX_AD1 = AD_E2;
			YY_Dat1 = Key_LN;
			
			FF1 = XX_AD1-XX_AD0;
			FF2 = YY_Dat1-YY_Dat0;
			KKK = FF2/FF1;
		}
	}
	else if(Mode01==9)		//输液针穿刺力 试验参数设置界面
	{
		if(Key01==0x11)			//保存
		{
			if(B_Defy)
			{
				B_Defy = 0;
				
				II1 = 0X00D0;
				for(CC1=0;CC1<4;CC1  )
				{
					UFL1.SL = Set_FF[CC1];
					CC3 = 2;
					Write24c128(UFL1.UC[CC3  ],II1  );
					Write24c128(UFL1.UC[CC3  ],II1  );
				}
			}
			Read_Set();
		}
		else if(Key01==0x12)		//自动回位
		{
			Set1_D[Test_MM][8] = 1;
			SL1 = 1;
			Write_Set_SG(8);
			Mode02 = 0;
		}
		else if(Key01==0x13)		//不自动回位
		{
			Set1_D[Test_MM][8] = 0;
			SL1 = 0;
			Write_Set_SG(8);
			Mode02 = 0;
		}
		else if(Key01>=0xa5)		//
		{
			B_Defy = 1;
			if(Key_LN>30000)
			{
				Key_LN = 30000;
			}
			else if(Key_LN<1)
				Key_LN = 1;
			
			CC3 = Key01-0xa5;
			Set_FF[CC3] = Key_LN;
			
		}
		else if(Key01>=0xa1)		//
		{
			if(Key01==0xa3)
			{
				if(Key_LN>999999)
					Key_LN = 999999;
			}
			else if(Key01==0xa4)
			{
				if(Key_LN>1000)
					Key_LN = 1000;
			}
			else
			{
				if(Key_LN>999999)
					Key_LN = 999999;
			}
			if(Key_LN<1)
				Key_LN = 1;
			
			CC3 = Key01-0xa0 3;
			Set1_D[Test_MM][CC3] = Key_LN;
			SL1 = Key_LN;
			Write_Set_SG(CC3);
		}
	}
	else if(Mode01==20)		//用户登陆界面
	{
		if(Key01<0x20)
		{
			CC1 = 0;			//如果密码验正合格,则CC1 != 0;
			if((sec==0)&&(sec2==0)&&(Coust_sec[0]==123456))		//如果管理员没有修改密码则用户 0 密码 0可进入
			{
				CC1  ;
				sec = 1;
			}
			else if(sec==0)					//超级管理员,
			{
				if(sec2==741852)
				{
					sec = 1;
					CC1  ;
				}

			}
			else if((sec==Coustomer[0])&&(sec2==Coust_sec[0]))	//管理员
			{
				CC1  ;
			}
			else											//二 三级用户
			{
				for(CC2=0;CC2<10;CC2  )					//二级用户
				{
					if((sec==CoustomerB[CC2])&&(sec2==Coust_secB[CC2]))
					{
						CC1  ;
						break;
					}
					
				}
				for(CC2=0;CC2<10;CC2  )					//三级用户
				{
					if((sec==CoustomerC[CC2])&&(sec2==Coust_secC[CC2]))
					{
						CC1  ;
						break;
					}
					
				}
			}
			if(CC1!=0)
			{
				Coust = sec;
				if((Key01==0x11)&&((sec==0)|(sec==1)))//进入用户管理界面
				{
					Mode01 = 21;
					Mode02 = 0;
				}
				else if(Key01==0x12)
				{
					U1T_Mode = 0x85;		//发送登陆成功命令
					Mode01 = 0;
					Mode02 = 0;
				}
			}
		}
		else if(Key01==0xa1)
		{
			Key_LN %= 100000;			
			sec = Key_LN;
		}
		else if(Key01==0xa2)
		{
			Key_LN %= 1000000;			
			sec2 = Key_LN;
		}
	}
	else if(Mode01==21)		//用户管理界面
	{
		if(Key01==0x11)
		{
			W_Set2();
		}
		else if(Key01==0x12)
		{
			Read_Set2();
			sec = 0;
			Mode01 = 20;
			Mode02 = 0;
		}
		else if(Key01==0x21)		//二级用户设置
		{
			Mode01 = 22;
			Mode02 = 0;
		}
		else if(Key01==0x22)		//三级用户设置
		{
			Mode01 = 23;
			Mode02 = 0;
		}
		else if(Key01==0xa1)
		{
			Key_LN %= 1000000;			
			Coust_sec[0] = Key_LN;
		}
		else if(Key01==0xa2)	
		{
			Coustomer[0] = 1;
		}
	}
	else if(Mode01==22)		//二级 用户管理界面		
	{
		if(Key01==0x11)
		{
			W_Set2();
		}
		else if(Key01==0x12)
		{
			Read_Set2();
			sec = 0;
			Mode01 = 21;
			Mode02 = 0;
		}
		else if((Key01<0x2B)&&(Key01>0x20))		//删除
		{
			CC1 = Key01-0x21;
			CoustomerB[CC1] = 0;
			Coust_secB[CC1] = 0;
		}
		else if((Key01<0xB5)&&(Key01>0x9f))		//输入
		{
			Key01 -= 0xa1;
			
			if(Key01%2==0)		//用户名
			{
				Key_LN %= 100000;				
				CC4 = 0;
				if(Key_LN==Coustomer[0])
				{
					CC4  ;
				}
				for(CC1=0;CC1<10;CC1  )	//判断是否有用户名重复
				{
					if(Key_LN==CoustomerB[CC1])
					{
						CC4  ;
						break;
					}
				}
				for(CC1=0;CC1<10;CC1  )	//判断是否有用户名重复
				{
					if(Key_LN==CoustomerC[CC1])
					{
						CC4  ;
						break;
					}
				}
				if(CC4==0)
					CoustomerB[Key01/2] = Key_LN;
			}
			else				//密码
			{
				Key_LN %= 1000000;				
				sec2 = Key_LN;
				if(CoustomerB[Key01/2]==0)
					Coust_secB[Key01/2] = 0;
				else
					Coust_secB[Key01/2] = sec2;//Key_N1*0x10000 Key_N2;
			}
		}
	}
	else if(Mode01==23)		//三级 用户管理界面		
	{
		if(Key01==0x11)
		{
			W_Set2();
		}
		else if(Key01==0x12)
		{
			Read_Set2();
			sec = 0;
			Mode01 = 21;
			Mode02 = 0;
		}
		else if((Key01<0x2B)&&(Key01>0x20))		//删除
		{
			CC1 = Key01-0x21;
			CoustomerC[CC1] = 0;
			Coust_secC[CC1] = 0;
		}
		else if((Key01<0xB5)&&(Key01>0x9f))		//输入
		{
			Key01 -= 0xa1;
			
			if(Key01%2==0)		//用户名
			{
				Key_LN %= 100000;				
				CC4 = 0;
				if(Key_LN==Coustomer[0])
				{
					CC4  ;
				}
				for(CC1=0;CC1<10;CC1  )	//判断是否有用户名重复
				{
					if(Key_LN==CoustomerB[CC1])
					{
						CC4  ;
						break;
					}
				}
				for(CC1=0;CC1<10;CC1  )	//判断是否有用户名重复
				{
					if(Key_LN==CoustomerC[CC1])
					{
						CC4  ;
						break;
					}
				}
				if(CC4==0)
					CoustomerC[Key01/2] = Key_LN;
			}
			else				//密码
			{
				Key_LN %= 1000000;				
				sec2 = Key_LN;
				if(CoustomerC[Key01/2]==0)
					Coust_secC[Key01/2] = 0;
				else
					Coust_secC[Key01/2] = sec2;//Key_N1*0x10000 Key_N2;
			}
		}
	}
}
void TR_Display(void)		//显示处理 串口 2 处理函数
{
	unsigned char *pt1;
	if((U2T_N1<U2T_N0)|(U2T_N1==0))		//只有通信完成时才能进行下一条指令
	{
		// SBUF = Mode_Test;
		U2T_N1 = 0x00;
		if((U2T_Mode==1)&&(Spr1==1))		//正常界面通信
		{
			Spr1 = 0;
			if(Mode01==0)				//待机界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 00
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 0x00;
					U2T_N1 = 0x07;
					// Mode02  ;
					// Mode01 = 6;
				}
				else
				{
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 5;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 0x00;
					
					U2T_N1 = 0x08;
				}
				if(B_Start==0)
				{
					if(Time0>=2000)
					{
						B_Start = 1;
						Send_U1(1);
					}
				}
			}
			else if(Mode01==1)			//试验界面
			{
				if(Mode02==0x15)
					Mode02 = 1;
				else if((Mode02==1)&&(Mode_Test!=0))
				{
					if(Lin_Xn<5)
					{
						if(Lin_N1-Lin_N0>3)
							Mode02 = 0x15;	//绘制曲线
						else if(B_Line)
							Mode02 = 0x15;	//绘制曲线
							
					}
					else
					{
						if(Lin_N1>Lin_N0)
							Mode02 = 0x15;	//绘制曲线
					}
					
					B_Line = 0;
				}
				
				if(Mode02==0)			//界面初始化
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 40 Test_MM;
					
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1;
					
					Mode02 = 0x11;
					
					Mode_Test = 0;	//待机界面 
					Test_Times = 0;	//试验次数
					for(CC1=0;CC1<12;CC1  )
						Vol_D[CC1] = 0;
					End_Max = 0;
					End_Min = 0;
					End_Ave = 0;
					End02 = 0;
					Set_Speed = 100;
				}
				else if(Mode02==1)		//刷新显示数据			
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 33;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x00;
					
					//试验编号
					if(Mode_Test<0XF8)			//测试中
						UFL1.SL = Test_N0 1;		
					else if(Mode_Test>0XF8)	//测试完,统计完,显示统计结果
						UFL1.SL = Test_N0;
					UFL1.SL  = 100000000;
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					//实时数据 速度
					if(Mode_Test<0xf0)
					{
						//实时力值
						if(Mode_Test==0x0d)
							UFL1.SL = End02;	
						else if((Test_MM==3)||(Test_MM==4)||(Test_MM==7)||(Test_MM==8)||(Test_MM==9))
							UFL1.SL = End02C;
						else
							UFL1.SL = End02;		
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						//实时位移
						UFL1.SL = LL_00;		
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
					}
					else
					{
						//结果;最大力值
						UFL1.SL = End_Max;		
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						//结果:试验位移
						UFL1.SL = LL_02;		
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
					}
					//试验速度
					UFL1.SL = Set1_D[Test_MM][0];		
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					//设置的参数
					//长度 6:设定保压压协和
					UFL1.SL = Set1_D[Test_MM][1];		
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					//宽度 6:设定保压时间
					UFL1.SL = Set1_D[Test_MM][2];		
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					//厚度 0x10C;
					if((Test_MM==4)||(Test_MM==7))
						UFL1.SL = Test_End04;	
					else
						UFL1.SL = Set1_D[Test_MM][3];		
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					//试验结果
					if(1)//Test_MM==1)
					{
						//伸长率 0x110
						UFL1.SL = Test_End01;		
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						//拉伸强度
						UFL1.SL = Test_End02;		
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						//变形量
						UFL1.SL = Test_End03;		
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						
					}
					
					pt1 = T2_Data CC1;
					//显示试验状态
					if(Mode_Test==0)
					{
						if(Mode_Mot==0)
							strcpy(pt1," 待  机 ");
						else
						{
							if(Mot_DIRB==0)
								strcpy(pt1," 微  升 ");
							else
								strcpy(pt1," 微  降 ");
						}
					}
					else if(Mode_Test==0xf1)
						strcpy(pt1," 微  升 ");
					else if(Mode_Test==0xf2)
						strcpy(pt1," 微  降 ");
					else if(Mode_Test==0xfb)
						strcpy(pt1,"正在回位");
					else if(Mode_Test==0xfa)
						strcpy(pt1,"试验结束");
					else if(Mode_Test==0xff)
						strcpy(pt1," 超量程 ");
					else 
						strcpy(pt1,"正在试验");
					pt1  = 8;
					//显示试验模式
					if(Test_MM==1)
						strcpy(pt1," 拉伸试验 ");
					else if(Test_MM==2)
						strcpy(pt1,"撕拉盖开启");
					else if(Test_MM==3)
						strcpy(pt1," 剥离试验 ");
					else if(Test_MM==4)
						strcpy(pt1,"预灌封滑动");
					else if(Test_MM==5)
						strcpy(pt1," 笔式滑动 ");
					else if(Test_MM==6)
						strcpy(pt1," 器身密合 ");
					else if(Test_MM==7)
						strcpy(pt1,"开启力试验");
					else if(Test_MM==8)
						strcpy(pt1,"穿刺力试验");
					else if(Test_MM==9)
						strcpy(pt1,"连接力试验");
					else if(Test_MM==10)
						strcpy(pt1,"折断力试验");
					CC1  = 18;
					//显示实时力值
					if(Mode_Test==0x0d)
							UFL1.SL = End02;	
					else if((Test_MM==3)||(Test_MM==4)||(Test_MM==7)||(Test_MM==8)||(Test_MM==9))
						UFL1.SL = End02C;
					else
						UFL1.SL = End02;	
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					//显示 Y 单位
					UFL1.SL = LL_YB[Lin_Yn];
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					//显示 X 单位
					UFL1.SI[0] = Lin_Xn*10;
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					//输出试样序号
					for(CC2=0;CC2<14;CC2  )
					{
						if(Sample_Serial[0]==0xff)
							T2_Data[CC1  ] = 0x2d;
						else
							T2_Data[CC1  ] = Sample_Serial[CC2];
					}
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1;
				}
				else if(Mode02==0x11)	//初始化曲线 清空曲线
				{
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 3;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0xeb;
					T2_Data[CC1  ] = 0x56;
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1;
					
					Mode02  ;
				}
				else if(Mode02==0x12)	//初始化完曲线后延时 01
				{
					Mode02  ;
				}
				else if(Mode02==0x13)	//初始化完曲线后延时 02
				{
					Mode02  ;
				}
				else if(Mode02==0x14)	//曲线参数设置 纵轴放大倍数
				{
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 7;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x06;
					T2_Data[CC1  ] = 0x08;
					
					UFL1.SL = (long int)350*256/LL_Y[Lin_Yn];			//纵轴放大倍数 单位 1/256
					T2_Data[CC1  ] = UFL1.UC[2];
					T2_Data[CC1  ] = UFL1.UC[3];
					T2_Data[CC1  ] = 0x00;			//曲线 0
					T2_Data[CC1  ] = 1;				//X 轴 间隔
					
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1;
					
					if(Lin_N0!=Lin_N1)
						Mode02 = 1;
					else
						Mode02 = 0x15;
					Spr1 = 1;
				}
				else if(Mode02==0x15)	//曲线绘图
				{
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 12;
					T2_Data[CC1  ] = 0x84;
					T2_Data[CC1  ] = 0x01;
					
					II1 = Lin_N1-Lin_N0;
					II2 = Lin_N0;
					if(II1>40)
						II1 = 40;
					
					for(II3=0;II3<II1;II3  )
					{
						II2  ;
						UFL1.SI[0] = Lin_Dat[II2];
						T2_Data[CC1  ] = UFL1.UC[0];
						T2_Data[CC1  ] = UFL1.UC[1];
					}
					Lin_N0  = II1;
					
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1;
					
					if(Lin_N0!=Lin_N1)
						Mode02 = 1;
					else
						Mode02 = 0x15;
					
					Spr1 = 1;
				}
			}
			else if(Mode01==2)			//查看界面
			{
				if(Mode02==0)
				{
					Read_Test(Test_N0_Q);
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 60 Test_MM;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
					Spr1 = 1;	//再刷新一次界面,向液晶发送显示数据
					
				}
				else
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 33;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x00;
					
					//试验编号
					UFL1.SL = Test_N0_Q 100000000;
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];	//00
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					CC1  = 8;	//空
				
					//试验速度
					UFL1.SL = Set1_D[Test_MM][0];		
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];	//06
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					//长度
					UFL1.SL = Set1_D[Test_MM][1];		
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];	//08
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					//宽度
					UFL1.SL = Set1_D[Test_MM][2];		
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];	//0a
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					//厚度
					UFL1.SL = Set1_D[Test_MM][3];		
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];	//0a
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					if(1)//(Test_MM==4)|(Test_MM==9))
					{
						//启始力
						UFL1.SL = Test_End01;		
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];	//0c
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						//持续力最大值
						UFL1.SL = Test_End02;		
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];		//0e
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						//持续力平均值
						UFL1.SL = Test_End03;		
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];		//10
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						//持续力平均值
						UFL1.SL = Test_End04;		
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];		//10
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];						
					}
					//年月日时分秒
					for(CC3=0;CC3<7;CC3  )
					{
						if(CC3==3)
							CC3  ;
						UFL1.UI[0] = 2000 Time[CC3];			
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
					}
					
					CC1  = 6;
					//输出试样序号
					for(CC2=0;CC2<14;CC2  )
					{
						if(Sample_Serial[0]==0xff)
							T2_Data[CC1  ] = 0x2d;
						else
							T2_Data[CC1  ] = Sample_Serial[CC2];
					}
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1;
				}
			}
			else if(Mode01==3)			//设置界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 0x04;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
					Spr1 = 1;	//再刷新一次界面,向液晶发送显示数据
				}
				else
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 27;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x00;
					
					UFL1.SL = LL_Sensor[Mode_Sensor];
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1;
					
				}
			}
			else if(Mode01==4)			//关于界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 24;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
					Spr1 = 1;	//再刷新一次界面,向液晶发送显示数据
				}
				else 			//刷新数据
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 43;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x00;
					pt1 = T2_Data CC1;
					strcpy(pt1,"SUMSPRING_01_E.PCB  ");
					pt1  = 20;
					strcpy(pt1,"YYL-03_V3.0.1D       ");
					
					U2T_N1 = 46;
					
				}
				
				
			}
			else if(Mode01==5)			//标定界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 11;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
					Mode05 = 0x00;
					Mode_ICO1 = 0;
					Mode_ICO2 = 15;
					Spr1 = 1;	//再刷新一次界面,向液晶发送显示数据
					Test_Times = 1;
				}
				else 
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 27;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x00;
					
					//修正
					UFL1.SL = YY_DY;
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					//传感器量程
					UFL1.SL = YY_Max;		//
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					//零点
					UFL1.SL = YY_Dat0;		//
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					//终点
					UFL1.SL = YY_Dat1;		//
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					
					//AD值
					UFL1.SL = AD_E2;
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					//实时力值
					UFL1.SL = End01;
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					//
					UFL1.SL = LL_Sensor[Mode_Sensor];
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					T2_Data[2] = 28 3;
					U2T_N1 = 34;
					
				}
			}
			else if(Mode01==6)			//项目选择界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 30 Test_MM;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
				}
				else 
				{
					
				}
			}
			else if(Mode01==7)			//试验参数设置界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					if(Set1_D[Test_MM][8]==0)
						T2_Data[CC1  ] = 52;
					else
						T2_Data[CC1  ] = 51;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
					Spr1 = 1;	//再刷新一次界面,向液晶发送显示数据
				}
				else				//刷新数据
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 11;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x02;
					
					for(CC3=4;CC3<8;CC3  )
					{
						UFL1.SL = Set1_D[Test_MM][CC3];
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
					}
					
					
					T2_Data[2] = 19;
					U2T_N1 = 22;
				}
			}
			else if(Mode01==8)			//气压标定界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 15;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
					Mode05 = 0x00;
					Mode_ICO1 = 0;
					Mode_ICO2 = 15;
					Spr1 = 1;	//再刷新一次界面,向液晶发送显示数据
					Test_Times = 1;
					
				}
				else 
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 27;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x00;
					
					//修正
					UFL1.SL = YY_DY;
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					//传感器量程
					UFL1.SL = YY_Max;		//
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					//零点
					UFL1.SL = YY_Dat0;		//
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					//终点
					UFL1.SL = YY_Dat1;		//
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					
					//AD值
					UFL1.SL = AD_E2;
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					//实时力值
					UFL1.SL = End01;
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					//
					UFL1.SL = LL_Sensor[Mode_Sensor];
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					T2_Data[2] = 28 3;
					U2T_N1 = 34;
					
				}
			}
			else if(Mode01==9)			//针尖穿刺 试验参数设置界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					if(Set1_D[Test_MM][8]==0)
						T2_Data[CC1  ] = 74;
					else
						T2_Data[CC1  ] = 73;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
					Spr1 = 1;	//再刷新一次界面,向液晶发送显示数据
				}
				else				//刷新数据
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 11;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x02;
					
					for(CC3=4;CC3<8;CC3  )
					{
						UFL1.SL = Set1_D[Test_MM][CC3];
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
					}
					for(CC3=0;CC3<4;CC3  )
					{
						UFL1.SL = Set_FF[CC3];
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
					}
					
					
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1 3;
				}
			}
			else if(Mode01==20)			//用户登陆界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 20;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
					Mode05 = 0x00;
					Mode_ICO1 = 5;
					sec = 0;
					sec2 = 0;
					Spr1 = 1;	//再刷新一次界面,向液晶发送显示数据
				}
				else 		//刷新数据
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 11;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x00;
					
					UFL1.SL = 1000000 sec;
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					if(sec2==0)
					{
						for(CC2=0;CC2<6;CC2  )
							T2_Data[CC1  ] = 0x20;
					}
					else
					{
						for(CC2=0;CC2<6;CC2  )
							T2_Data[CC1  ] = 0x2a;
					}
					
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1;
				}
				
			}
			else if(Mode01==21)	//用户管理界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 75;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
					Mode05 = 0x00;
					Mode_ICO1 = 5;
					sec = 0;
					sec2 = 0;
					Spr1 = 1;	//再刷新一次界面,向液晶发送显示数据
					
				}
				else 		//刷新数据
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 39;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x00;
					
					UFL1.SL = 100000 Coustomer[0];
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					if(Coustomer[0]==0)
						UFL1.UL = 1000000;
					else
						UFL1.UL = 1000000 Coust_sec[0];
					
					CC2 = 0;
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					T2_Data[CC1  ] = UFL1.UC[CC2  ];
					
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1;
				}
			}
			else if(Mode01==22)	//二级 用户管理界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 77;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
					Mode05 = 0x00;
					Mode_ICO1 = 5;
					sec = 0;
					sec2 = 0;
					Spr1 = 1;	//再刷新一次界面,向液晶发送显示数据
					
				}
				else 		//刷新数据
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 39;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x00;
					
					for(CC3=0;CC3<10;CC3  )
					{
						UFL1.SL = 100000 CoustomerB[CC3];
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						
						if(CoustomerB[CC3]==0)
							UFL1.UL = 1000000;
						else
							UFL1.UL = 1000000 Coust_secB[CC3];
						
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
					}
					
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1;
				}
			}
			else if(Mode01==23)	//三级 用户管理界面
			{
				if(Mode02==0)
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 0x04;
					T2_Data[CC1  ] = 0x80;
					T2_Data[CC1  ] = 0x03;
					T2_Data[CC1  ] = 0x00;
					T2_Data[CC1  ] = 79;
					U2T_N1 = 0x07;
					
					Mode02 = 0x01;
					Mode05 = 0x00;
					Mode_ICO1 = 5;
					sec = 0;
					sec2 = 0;
					Spr1 = 1;	//再刷新一次界面,向液晶发送显示数据
					
				}
				else 		//刷新数据
				{
					//A5 5A 04 80 03 00 01
					CC1 = 0x00;
					T2_Data[CC1  ] = 0xa5;
					T2_Data[CC1  ] = 0x5a;
					T2_Data[CC1  ] = 39;
					T2_Data[CC1  ] = 0x82;
					T2_Data[CC1  ] = 0x01;
					T2_Data[CC1  ] = 0x00;
					
					for(CC3=0;CC3<10;CC3  )
					{
						UFL1.SL = 100000 CoustomerC[CC3];
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						
						if(CoustomerC[CC3]==0)
							UFL1.UL = 1000000;
						else
							UFL1.UL = 1000000 Coust_secC[CC3];
						
						CC2 = 0;
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
						T2_Data[CC1  ] = UFL1.UC[CC2  ];
					}
					T2_Data[2] = CC1-3;
					U2T_N1 = CC1;
				}
			}
		}
		else if((U2T_Mode==2)&&(Spr2==1)&&(U2R_Mode==0))	//时间查询
		{
			Spr2 = 0;
			U2T_Mode = 1;
			
			U2R_Mode = 2;	//接收时间
			U2R_N0 = 0;		//接收计数清零
			//A5 5A 03 81 20 08
			CC1 = 0x00;
			T2_Data[CC1  ] = 0xa5;
			T2_Data[CC1  ] = 0x5a;
			T2_Data[CC1  ] = 0x03;
			T2_Data[CC1  ] = 0x81;
			T2_Data[CC1  ] = 0x20;
			T2_Data[CC1  ] = 0x08;
			U2T_N1 = 0x06;
		}
		else if((U2T_Mode==3)&&(Spr3==1))	//设定时间
		{
			Spr3 = 0;
			
			U2T_Mode = 1;
			//A5 5A 03 81 20 08
			CC1 = 0x00;
			T2_Data[CC1  ] = 0xa5;
			T2_Data[CC1  ] = 0x5a;
			T2_Data[CC1  ] = 10;
			T2_Data[CC1  ] = 0x80;
			T2_Data[CC1  ] = 0x1f;
			T2_Data[CC1  ] = 0x5a;
			CC2 = 0x00;
			CC3 = Time[CC2  ];
			CC4 = CC3/10;
			CC4 <<= 4;
			CC4 = CC4|(CC3%10);
			T2_Data[CC1  ] = CC4;
			CC3 = Time[CC2  ];
			CC4 = CC3/10;
			CC4 <<= 4;
			CC4 = CC4|(CC3%10);
			T2_Data[CC1  ] = CC4;
			CC3 = Time[CC2  ];
			CC4 = CC3/10;
			CC4 <<= 4;
			CC4 = CC4|(CC3%10);
			T2_Data[CC1  ] = CC4;
			CC3 = Time[CC2  ];
			CC4 = CC3/10;
			CC4 <<= 4;
			CC4 = CC4|(CC3%10);
			T2_Data[CC1  ] = CC4;
			CC3 = Time[CC2  ];
			CC4 = CC3/10;
			CC4 <<= 4;
			CC4 = CC4|(CC3%10);
			T2_Data[CC1  ] = CC4;
			CC3 = Time[CC2  ];
			CC4 = CC3/10;
			CC4 <<= 4;
			CC4 = CC4|(CC3%10);
			T2_Data[CC1  ] = CC4;
			CC3 = Time[CC2  ];
			CC4 = CC3/10;
			CC4 <<= 4;
			CC4 = CC4|(CC3%10);
			T2_Data[CC1  ] = CC4;
			U2T_N1 = 13;
		}
		
		if(U2T_N1)						//有需要发送的数据
		{
			U2T_N0 = 1;
			S2BUF = 0xa5;
		}
	}
}
void TR_AD(void)			//AD处理
{
	unsigned char m,n;
	if((Test_MM!=8)||(Mode01==5))		//采信力值传感器
	{
		if(!CS_Dat1)				//AD采集 滤波
		{
			for(m=1;m<4;m  )
			{
				for(n=8;n>0;n--)
				{
					CS_Clk1 = 1;
					ACC <<= 1;
					if(CS_Dat1)
						ACC  ;
					CS_Clk1 = 0;
				}
				n = ACC;
				UFL1.UC[m] = n;
			}
			if(UFL1.UC[1]&0xf0)
				AD_02 = AD_E2;
			else
			{
				AD_02 = UFL1.UL;
				if(UFL1.UC[1]&0x08)
					AD_02 |= 0xfff00000;
				else				//如果是正数
					AD_02 &= 0x000fffff;
			}
			
			if(AD_n2<11)
				AD_n2  ;
			else
				AD_n2 = 0;
			AD2_BUF[AD_n2] = AD_02;
			if(AD_n2%2==0)	//约 16.666 ms 计算一次平均值
			{
				B_AD = 1;
				AD_E2 = 0;
				for(m=0;m<12;m  )
					AD_E2  = AD2_BUF[m];
				AD_E2 /= 12;
				
				FF1 = AD_E2-XX_AD0;
				FF1 = KKK*FF1 YY_Dat0;
				End00 = (long int)FF1;
				End01 = End00 YY_DY;
				End02 = End01-End02B;
				End02C = -End02;
				
				//力值保护,传感器保护
				if((End01>YY_Max)||(End01>Set1_D[Test_MM][5]))
				{
					if((Mot_DIRB==0)&&(Mode_Mot!=0))
					{
						Mode_Test = 0xff;
						Mode_Mot = 0;
						ET1 = 0;
						TR1 = 0;
					}
				}
				else if((End01<-YY_Max)||(End01<-Set1_D[Test_MM][5]))
				{
					if((Mot_DIRB==1)&&(Mode_Mot!=0))
					{
						Mode_Test = 0xff;
						Mode_Mot = 0;
						ET1 = 0;
						TR1 = 0;
					}
				}
			}
		}
	}
	else 				//采集气压传感
	{
		if(!CS_Dat2)				//AD采集 滤波
		{
			for(m=1;m<4;m  )
			{
				for(n=8;n>0;n--)
				{
					CS_Clk2 = 1;
					ACC <<= 1;
					if(CS_Dat2)
						ACC  ;
					CS_Clk2 = 0;
				}
				n = ACC;
				UFL1.UC[m] = n;
			}
			if(UFL1.UC[1]&0xf0)
				AD_02 = AD_E2;
			else
			{
				AD_02 = UFL1.UL;
				if(UFL1.UC[1]&0x08)
					AD_02 |= 0xfff00000;
				else				//如果是正数
					AD_02 &= 0x000fffff;
			}
			
			if(AD_n2<11)
				AD_n2  ;
			else
				AD_n2 = 0;
			AD2_BUF[AD_n2] = AD_02;
			if(AD_n2%2==0)	//约 16.666 ms 计算一次平均值
			{
				B_AD = 1;
				AD_E2 = 0;
				for(m=0;m<12;m  )
					AD_E2  = AD2_BUF[m];
				AD_E2 /= 12;
				
				FF1 = AD_E2-XX_AD0;
				FF1 = KKK*FF1 YY_Dat0;
				End00 = (long int)FF1;
				End01 = End00 YY_DY;
				End02 = End01-End02B;
				End02C = End02/100;
				
				//传感器保护
				if((End01>100000)||(End01>Set1_D[Test_MM][5]))
				{
					if((Mot_DIRB==0)&&(Mode_Mot!=0))
					{
						Mode_Test = 0xff;
						Mode_Mot = 0;
						ET1 = 0;
						TR1 = 0;
					}
				}
			}
		}
	}
}
void TR_Mot(void)			//电机运运
{
	Mot_DIR = Mot_DIRB;
	//减速:1:1	螺距:5mm	分频:4000
	if(Mode_Mot==0)			//待机不运行
	{
		ET1 = 0;	//关中断
		TR1 = 0;
	}
	else if(Mode_Mot==1)		//电机启动
	{
		if(Set_Speed<400)
			FF1 = Set_Speed;
		else
			FF1 = 400;
		FF1 = FF1/60/5*8000;
		if(FF1<30)
		{
			AUXR &= ~0x40;		//定时器时钟12T模式
			TMOD &= 0x0F;		//设置定时器模式
			TL1 = 0x00;			//设置定时初值
			TH1 = 0x00;			//设置定时初值
			
		}
		else if(FF1<400)
		{
			FF1 = 22118400/12/FF1 0.5;
			II1 = (unsigned int)FF1;
			II1 = (~II1) 1;
			AUXR &= ~0x40;		//定时器时钟12T模式
			TMOD &= 0x0F;		//设置定时器模式
			TL1 = II1;			//设置定时初值
			TH1 = II1/0x100;		//设置定时初值
		}
		else
		{
			FF1 = 22118400/FF1 0.5;
			II1 = (unsigned int)FF1;
			II1 = (~II1) 1;
			AUXR |= 0x40;		//定时器时钟1T模式
			TMOD &= 0x0F;		//设置定时器模式
			TL1 = II1;			//设置定时初值
			TH1 = II1/0x100;		//设置定时初值
		}
		
		TF1 = 0;				//清除TF1标志
		TR1 = 1;				//定时器1开始计时
		ET1 = 1;				//开中断
		
		if(Set_Speed<400)
			Mode_Mot = 0x0f;
		else
		{
			Mode_Mot = 2;
			Set_Speed0 = 400;
			Time_Mot = Time0;
		}
	}
	else if(Mode_Mot==2)		//匀加速
	{
		if(Time0-Time_Mot>=20)
		{
			Time_Mot = Time0;
			Set_Speed0 = Set_Speed0*21/20;
			if(Set_Speed0>Set_Speed)
				Set_Speed0 = Set_Speed;
			
			FF1 = Set_Speed0;
			FF1 = FF1/60/5*8000;
			if(FF1<30)
			{
				AUXR &= ~0x40;		//定时器时钟12T模式
				TMOD &= 0x0F;		//设置定时器模式
				TL1 = 0x00;			//设置定时初值
				TH1 = 0x00;			//设置定时初值
				
			}
			else if(FF1<400)
			{
				FF1 = 22118400/12/FF1 0.5;
				II1 = (unsigned int)FF1;
				II1 = (~II1) 1;
				AUXR &= ~0x40;		//定时器时钟12T模式
				TMOD &= 0x0F;		//设置定时器模式
				TL1 = II1;			//设置定时初值
				TH1 = II1/0x100;		//设置定时初值
			}
			else
			{
				FF1 = 22118400/FF1 0.5;
				II1 = (unsigned int)FF1;
				II1 = (~II1) 1;
				AUXR |= 0x40;		//定时器时钟1T模式
				TMOD &= 0x0F;		//设置定时器模式
				TL1 = II1;			//设置定时初值
				TH1 = II1/0x100;		//设置定时初值
			}
			
			TF1 = 0;				//清除TF1标志
			TR1 = 1;				//定时器1开始计时
			ET1 = 1;				//开中断
			if(Set_Speed0==Set_Speed)
			{
				Mode_Mot = 0x0f;
			}
		}
		
	}
	else if(Mode_Mot==0x0f)	//电机工作中
	{
		
	}
	
	if(Mode_Mot)
	{
		if((In_K1==0)&&(Mot_DIRB==0))
		{
			// Set_Speed = 10;
			// Mot_DIRB = 1;
			TR1 = 0;
			Mode_Mot = 0;
			Mode_Test = 0;
		}
		if((In_K2==0)&&(Mot_DIRB==1))
		{
			// Set_Speed = 10;
			// Mot_DIRB = 0;
			TR1 = 0;
			Mode_Mot = 0;
			Mode_Test = 0;
		}
		
	}
	
}
void TR_Test(void)			//试验处理	
{
	CC4 = 0;
	if(Mode_Test==CC4  )			//00 待机
	{
		
	}
	else if(Mode_Test==CC4  )	//01 启动
	{
		B_FS = 0;
		B_Test_Start = 0;
		B_Line = 0;
		if(Mode_Mot==0)
		{
			if(((In_K2==1)&&((Test_MM==3)||(Test_MM==4)||(Test_MM==7)||(Test_MM==8)||(Test_MM==9)))||((In_K1==1)&&((Test_MM==1)||(Test_MM==2)||(Test_MM==5)||(Test_MM==6))))
			{
				B_Stop = 0;
				//记录当前位置 以便回位时使用
				CD_Vol3 = CD_Vol1;
				//软件限位
				if((Test_MM==3)||(Test_MM==4))
					CD_Vol4 = CD_Vol1-Set1_D[Test_MM][1];
				else if((Test_MM==5)||(Test_MM==6))
					CD_Vol4 = CD_Vol1 Set1_D[Test_MM][1];
				else if((Test_MM==8)|(Test_MM==9))
					CD_Vol4 = CD_Vol1-Set1_D[Test_MM][3];
				
				for (II1=0;II1<600;II1  )
				{
					Lin_Dat[II1] = 0;
				}
				//速度
				if(Test_MM==10)
					Set_Speed = Set1_D[Test_MM][7];	//开始时以回位速度下压,到达起始压力后减速,以试验速度下压
				else
					Set_Speed = Set1_D[Test_MM][0];
				if (Set_Speed<200)
					Lin_Xn = 1;
				else if (Set_Speed<400)
					Lin_Xn = 4;
				else if (Set_Speed<800)
					Lin_Xn = 16;
				else
					Lin_Xn = 16;
				
				CD_Vol2 = CD_Vol1;
				LL_00 = 0;
				LL_01 = Lin_Xn;
				LL_02 = 0;
				Lin_N1 = 0;
				Lin_N0 = 0;
				Lin_Dat[0] = 0;
				
				// End02B = End01;
				// End02 = 0;
				Test_End01 = 0;
				Test_End02 = 0;
				Test_End03 = 0;
				Test_End04 = 0;
				Ymax_Dat = 0;
				Ymin_Dat = 0;
				End_Max = 0;
				End_Min = 0;
				TestAD_N = 0;		//计数清零
				TestAD_Sum = 0;
				
				Lin_Yn = 0;
				Mode02 = 0x11;	//初始化曲线

				if((Test_MM==1)||(Test_MM==2)||(Test_MM==5)||(Test_MM==6)||(Test_MM==7))
					Mot_DIRB = 0;		//向上运动
				else
					Mot_DIRB = 1;		//向下运动
				Mode_Mot = 1;		//启动电机
				
				if((Test_MM==1)||(Test_MM==2)||(Test_MM==5)||(Test_MM==6)||(Test_MM==7)||(Test_MM==8)||(Test_MM==9))		//直接进入试验,无起始力值
				{
					CD_Vol2 = CD_Vol1;
					LL_00 = 0;
					LL_01 = Lin_Xn;
					LL_02 = 0;
					
					if(Test_MM==1)
						Mode_Test = 2;
					else if(Test_MM==2)
						Mode_Test = 3;
					else if(Test_MM==3)
						Mode_Test = 4;
					else if(Test_MM==4)	//输液针穿刺力
						Mode_Test = 0x50;
					else if(Test_MM==5)	//拔开力试验
						Mode_Test = 0x06;
					else if(Test_MM==6)	//连接牢固度
						Mode_Test = 0x07;
					else if(Test_MM==7)	//滑动性试验
						Mode_Test = 0x0d;
					else if(Test_MM==8)	//正压密合试验
						Mode_Test = 0x0b;
					else if(Test_MM==9)	//压缩试验
						Mode_Test = 0x09;
					else
						Mode_Test = 2;
				}
			}
			else
			{
				Mode_Test = 0;
			}
		}
		else		// Test_MM==3 Test_MM==4
		{
			if((End02>=Set1_D[Test_MM][4])||(End02C>=Set1_D[Test_MM][4]))	//大于起始力值
			{
				CD_Vol2 = CD_Vol1;
				LL_00 = 0;
				LL_01 = Lin_Xn;
				LL_02 = 0;
				
				if(Test_MM==1)
					Mode_Test = 2;
				else if(Test_MM==2)
					Mode_Test = 3;
				else if(Test_MM==3)
					Mode_Test = 4;
				else if(Test_MM==4)	//输液针穿刺力
					Mode_Test = 0x50;
				else if(Test_MM==5)	//拔开力试验
					Mode_Test = 0x06;
				else if(Test_MM==6)	//连接牢固度
					Mode_Test = 0x07;
				else if(Test_MM==7)	//滑动性试验
					Mode_Test = 0x0d;
				else if(Test_MM==8)	//正压密合试验
					Mode_Test = 0x0b;
				else if(Test_MM==9)	//压缩试验
					Mode_Test = 0x09;
				else
					Mode_Test = 2;
			}
			else if(Test_MM==1)		//拉伸试验直接进入试验,无起始力值
			{
				CD_Vol2 = CD_Vol1;
				LL_00 = 0;
				LL_01 = Lin_Xn;
				LL_02 = 0;
				
				Mode_Test = 2;
			}
			//大于设定位移直接回位结束试验
			if(1)
			{
				if(CD_Vol1<CD_Vol4)	//大于设定位移直接回位结束试验
				{
					if(Set1_D[Test_MM][8]==0)
					{
						Mode_Test = 0xfa;
					}
					else
					{
						Time9 = Time0;
						Set_Speed = 0;
						ET1 = 0;
						TR1 = 0;
						Mode_Test = 0xf9;
					}
				}
			}
		}
	}
	//拉伸试验
	else if(Mode_Test==CC4  )		//0x02 采信最
	{
		if(B_AD)
		{
			B_AD = 0;
			
			Line_Code01();
			
			//判断是否满足停机条件,停止试验
			if((End_Max>=Set1_D[Test_MM][4])||(B_FS))	//大于初始力值
			{
				B_FS = 1;
				SL1 = End_Max*Set1_D[Test_MM][6]/100;
				if(End02<SL1)	//停止试验
				{
					B_Line = 1;
					B_Stop = 1;
					Ymax_Dat = End02;
				}
			}
		}
		if((LL_00>=LL_01)||(B_Stop))
		{
			LL_02 = LL_00;
			//试样变形量
			Test_End01 = LL_02;
			//计算伸长率
			Test_End02 = LL_02*10000/Set1_D[Test_MM][1];
			//计算拉伸强度
			Test_End03 = End_Max*100/Set1_D[Test_MM][2]*1000/Set1_D[Test_MM][3];
			
			if(B_Stop)
				B_Line = 1;
			Draw_Line();
			
			if(B_Stop)
			{
				B_Stop = 0;
				Time9 = Time0;
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Mode_Test = 0xf9;
			}
		}
	}
	//剥离试验
	else if(Mode_Test==CC4  )		//0x03
	{
		
		if(LL_02>Set1_D[Test_MM][2])	//到达结束值 结束试验
		{
			B_Line = 1;
			B_Stop = 1;
		}
		if(B_AD)
		{
			B_AD = 0;
			Line_Code01();
			
			if(LL_02>Set1_D[Test_MM][1])	//大于头长度
			{
				//为计算平均值准备
				TestAD_N  ;
				TestAD_Sum  = End02;
				
				//Line_Code01中有相应的代码,这个地方可以注释掉
				// if(End02>End_Max)
					// End_Max = End02;
				// else if(End02<End_Min)
					// End_Min = End02;
			}
			else
			{
				TestAD_N = 1;
				TestAD_Sum = 0;
				Test_End01 = 0;
				
				End_Max = End02;
				End_Min = End02;
			}
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			LL_02 = LL_00/2;
			//计算平均力值
			Test_End01 = TestAD_Sum/TestAD_N;
			//计算强度
			Test_End02 = Test_End01*1500/Set1_D[Test_MM][3];	//单位 N/15mm
			
			Draw_Line();
			
			if(B_Stop)
			{
				B_Stop = 0;
				Time9 = Time0;
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Mode_Test = 0xf9;
			}
		}
		
	}
	//针尖穿刺试验
	else if(Mode_Test==CC4  )		//0x04 
	{
		if(B_AD)
		{
			B_AD = 0;
			
			Line_Code02();
			//如果压力达到初始压力速度变为试验速度
			if(End02C>=Set1_D[Test_MM][4])
			{
				Set_Speed =  Set1_D[Test_MM][0];
				Mode_Mot = 1;		//更换速度重新启动电机
			}
			
			//判断是否满足停机条件,停止试验
			if((End_Max>=Set1_D[Test_MM][4])||(B_FS))	//大于初始力值
			{
				B_FS = 1;
				SL1 = End_Max*Set1_D[Test_MM][6]/100;
				if(End02C<SL1)	//停止试验
				{
					B_Line = 1;
					B_Stop = 1;
					Ymax_Dat = End02C;
				}
			}
			if(CD_Vol1<CD_Vol4)	//大于设定位移直接回位结束试验
			{
				B_Line = 1;
				B_Stop = 1;
			}
			
			
		}
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//取最大力值
			Test_End01 = End_Max;
			
			Draw_Line();
			
			if(B_Stop)
			{
				B_Stop = 0;
				Time9 = Time0;
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				if(Test_MM==3)	//穿刺力
					Mode_Test = 0x05;
				else
					Mode_Test = 0xf9;
			}
		}
	}
	//B针尖穿刺试验 测量回拔力值
	else if(Mode_Test==CC4  )		//0x05 测量回拔力值
	{
		if (B_AD)
		{
			B_AD = 0;

			if (Set_Speed==0)			//回位有个延时
			{
				if (Time0-Time9>1000)
				{
					Set_Speed = Set1_D[Test_MM][7];
					Mot_DIRB = 0;
					Mode_Mot = 1;
					End_Max = End02;
				}
			}
			else
			{
				if (End02>End_Max)		//最大力值
				{
					End_Max = End02;
					Test_End02 = End_Max;
				}
				if (CD_Vol1>=CD_Vol3)		//回位到位 试验结束 向下回位
				{
					Mode_Mot = 0;
					ET1 = 0;
					TR1 = 0;
					B_Stop = 1;
					Mode_Test = 0xfa;

					if (Test_N0<999999999)
						Test_N0  ;
					else
						Test_N0 = 0;

					UFL1.SL = Test_N0;
					II1 = 0x0008;
					CC2 = 0;
					Write24c128(UFL1.UC[CC2  ],II1  );
					Write24c128(UFL1.UC[CC2  ],II1  );
					Write24c128(UFL1.UC[CC2  ],II1  );
					Write24c128(UFL1.UC[CC2  ],II1  );
					Write_Test();		//写入试验结果

					U1T_Mode = 4;			//发送试验结果
				}
			}
		}
	}
	//拔开力试验
	else if(Mode_Test==CC4  )		//0x06
	{
		if(B_AD)
		{
			B_AD = 0;
			
			Line_Code01();
						
			//判断是否满足停机条件,停止试验
			if((End_Max>=Set1_D[Test_MM][4])||(B_FS))	//大于初始力值
			{
				B_FS = 1;
				SL1 = End_Max*Set1_D[Test_MM][6]/100;
				if(End02<SL1)	//停止试验
				{
					B_Line = 1;
					B_Stop = 1;
					Ymax_Dat = End02;
				}
			}
			if(CD_Vol1>CD_Vol4)	//大于设定位移直接回位结束试验
			{
				B_Line = 1;
				B_Stop = 1;
			}
			
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			Test_End01 = LL_02;
			//取最大力值
			Test_End02 = End_Max;
			
			Draw_Line();
			
			if(B_Stop)
			{
				B_Stop = 0;
				Time9 = Time0;
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Mode_Test = 0xf9;
			}
		}
		
	}
	//连接牢固度
	else if(Mode_Test==CC4  )		//0x07 初始加压
	{
		if(B_AD)
		{
			B_AD = 0;
			Line_Code01();
			if(End_Max>Set1_D[Test_MM][1])
				End_Max = Set1_D[Test_MM][1];
			if(End02>Set1_D[Test_MM][1])	//大于设定压力 结束加压 
			{
				B_Line = 1;
				B_Stop = 1;
			}
			SL1 = End_Max*Set1_D[Test_MM][6]/100;
			if((End02<SL1)&&(End02>=Set1_D[Test_MM][4]))	//破型判断 停止试验
			{
				B_Line = 1;
				B_Stop = 1;
				Test_End04 = 2;
				Ymax_Dat = End02;
			}
			
			if(CD_Vol1>CD_Vol4)	//大于设定位移直接回位结束试验
			{
				B_Line = 1;
				B_Stop = 1;
			}
			
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//取最大力值
			Test_End01 = End_Max;	//最大力值
			Test_End03 = End_Max;
			
			Draw_Line();
			
			if(B_Stop)
			{
				B_Stop = 0;
				LL_03 = LL_00;	//记录点位置
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				
				if(Test_End04==0)	//进入保压
				{
					Time_L1 = Time_L0;
					End_Max = End02;
					End_Min = End02;
					Mode_Test  ;
				}
				else				//直接结束试验
				{
					B_Stop = 0;
					Time9 = Time0;
					Set_Speed = 0;
					ET1 = 0;
					TR1 = 0;
					Mode_Mot = 0;
					Mode_Test = 0xf9;
				}
					
			}
		}
		
	}
	else if(Mode_Test==CC4  )		//0x08 保压时间 保压期间补压 并计算出位移量
	{
		if(B_AD)
		{
			B_AD = 0;
			
			Line_Code01();
			if(End_Max>Set1_D[Test_MM][1])
				End_Max = Set1_D[Test_MM][1];
			//破型判断
			SL1 = End_Max*Set1_D[Test_MM][6]/100;
			if(End02<SL1)	//破型判断 停止试验
			{
				B_Stop = 1;
				Test_End04 = 2;
				Ymax_Dat = End02;
			}	
			//时间是否超
			SL1 = Set1_D[Test_MM][2]*10;
			if(Time_L0-Time_L1<SL1)		//保压中 时间
			{
				Test_End02 = (Time_L0-Time_L1)/10;
				if(End02<Set1_D[Test_MM][1]-20)
				{
					if(Set_Speed==0)
					{
						//速度
						Set_Speed = Set1_D[Test_MM][0];
						Mot_DIRB = 0;		//向上运动
						Mode_Mot = 1;		//启动电机
						
					}
					else
					{
						
					}
				}
				else
				{
					if(Set_Speed==0)
					{
						
					}
					else
					{
						Set_Speed = 0;
						ET1 = 0;
						TR1 = 0;
						Mode_Mot = 0;
					}
				}
			}
			else						//结束试验
			{
				Test_End04 = 1;
				B_Stop = 1;
			}
			//位移是否超
			if(CD_Vol1>CD_Vol4)	//大于设定位移直接回位结束试验
			{
				B_Line = 1;
				B_Stop = 1;
			}
		}
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			Draw_Line();
			
			if(B_Stop)
			{
				if(Test_End04==1)	//试验成功,时间改为设定时间
					Test_End02 = Set1_D[Test_MM][2];
					
				B_Stop = 0;
				Time9 = Time0;
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Mode_Test = 0xf9;
			}
		}
	}
	//压缩试验
	else if(Mode_Test==CC4  )		//0x09 初始加压
	{
		if(B_AD)
		{
			B_AD = 0;
			Line_Code02();
			
			if(End02C>Set1_D[Test_MM][1])	//大于设定压力 结束加压 
			{
				B_Line = 1;
				B_Stop = 1;
			}
			SL1 = End_Max*Set1_D[Test_MM][6]/100;
			if((End02C<SL1)&&(End02C>=Set1_D[Test_MM][4]))	//破型判断 停止试验
			{
				B_Line = 1;
				B_Stop = 1;
				Test_End04 = 2;
				Ymax_Dat = End02C;
			}
			
			if(CD_Vol1<CD_Vol4)	//大于设定位移直接回位结束试验
			{
				B_Line = 1;
				B_Stop = 1;
			}
			
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//取最大力值
			Test_End03 = End_Max;
			
			Draw_Line();
			
			if(B_Stop)
			{
				B_Stop = 0;
				LL_03 = LL_00;	//记录点位置
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				
				if(Test_End04==0)	//进入保压
				{
					Time_L1 = Time_L0;
					End_Max = End02C;
					End_Min = End02C;
					Mode_Test  ;
				}
				else				//直接结束试验
				{
					B_Stop = 0;
					Time9 = Time0;
					Set_Speed = 0;
					ET1 = 0;
					TR1 = 0;
					Mode_Mot = 0;
					Mode_Test = 0xf9;
				}
					
			}
		}
		
	}
	else if(Mode_Test==CC4  )		//0x0A 保压时间 保压期间补压 并计算出位移量
	{
		if(B_AD)
		{
			B_AD = 0;
			
			Line_Code02();
			
			SL1 = End_Max*Set1_D[Test_MM][6]/100;
			if(End02C<SL1)	//破型判断 停止试验
			{
				B_Stop = 1;
				Test_End04 = 2;
				Ymax_Dat = End02C;
			}	
			
			SL1 = Set1_D[Test_MM][2]*10;
			if(Time_L0-Time_L1<SL1)		//保压中
			{
				Test_End02 = (Time_L0-Time_L1)/10;
				if(End02C<Set1_D[Test_MM][1]-20)
				{
					if(Set_Speed==0)
					{
						//速度
						Set_Speed = Set1_D[Test_MM][0];
						Mot_DIRB = 1;		//向上运动
						Mode_Mot = 1;		//启动电机
						
					}
					else
					{
						
					}
				}
				else
				{
					if(Set_Speed==0)
					{
						
					}
					else
					{
						Set_Speed = 0;
						ET1 = 0;
						TR1 = 0;
						Mode_Mot = 0;
					}
				}
			}
			else						//结束试验
			{
				Test_End04 = 1;
				B_Stop = 1;
			}
			
			if(CD_Vol1<CD_Vol4)	//大于设定位移直接回位结束试验
			{
				B_Line = 1;
				B_Stop = 1;
			}
			
		}
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//保持时间内的位移
			Test_End01 = LL_02-LL_03;
			
			Draw_Line();
			
			if(B_Stop)
			{
				if(Test_End04==1)	//试验成功,时间改为设定时间
					Test_End02 = Set1_D[Test_MM][2];
					
				B_Stop = 0;
				Time9 = Time0;
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Mode_Test = 0xf9;
			}
		}
	}
	//正压密合试验
	else if(Mode_Test==CC4  )		//0x0b 初始加压
	{
		if(B_AD)
		{
			B_AD = 0;
			Line_Code02();
			
			if(End02C>=Set1_D[Test_MM][1])	//大于设定压力 结束加压 
			{
				B_Line = 1;
				B_Stop = 1;
			}
			SL1 = End_Max*Set1_D[Test_MM][6]/100;
			if((End02C<SL1)&&(End02C>=Set1_D[Test_MM][4]))	//破型判断 停止试验
			{
				B_Line = 1;
				B_Stop = 1;
				Test_End04 = 2;
				Ymax_Dat = End02C;
			}
			
			if(CD_Vol1<CD_Vol4)	//大于设定位移直接回位结束试验
			{
				B_Line = 1;
				B_Stop = 1;
			}
			
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//取最大力值			
			Test_End01 = End_Max;

			Test_End03 = End_Max;
			
			Draw_Line();
			
			if(B_Stop)
			{
				B_Stop = 0;
				LL_03 = LL_00;	//记录点位置
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				
				if(Test_End04==0)	//进入保压
				{
					Time_L1 = Time_L0;
					End_Max = End02C;
					End_Min = End02C;
					Mode_Test  ;
				}
				else				//直接结束试验
				{
					B_Stop = 0;
					Time9 = Time0;
					Set_Speed = 0;
					ET1 = 0;
					TR1 = 0;
					Mode_Mot = 0;
					Mode_Test = 0xf9;
				}
					
			}
		}
		
	}
	else if(Mode_Test==CC4  )		//0x0c 保压时间 保压期间补压 并计算出位移量
	{
		if(B_AD)
		{
			B_AD = 0;
			
			Line_Code02();
			
			SL1 = End_Max*Set1_D[Test_MM][6]/100;
			if(End02C<SL1)	//破型判断 停止试验
			{
				B_Stop = 1;
				Test_End04 = 2;
				Ymax_Dat = End02C;
			}	
			
			SL1 = Set1_D[Test_MM][2]*10;
			if(Time_L0-Time_L1<SL1)		//保压中
			{
				Test_End02 = (Time_L0-Time_L1)/10;
				if(End02C<Set1_D[Test_MM][1]-2)
				{
					if(Set_Speed==0)
					{
						//速度
						Set_Speed = Set1_D[Test_MM][0];
						Mot_DIRB = 1;		//向上运动
						Mode_Mot = 1;		//启动电机
						
					}
					else
					{
						
					}
				}
				else
				{
					if(Set_Speed==0)
					{
						
					}
					else
					{
						Set_Speed = 0;
						ET1 = 0;
						TR1 = 0;
						Mode_Mot = 0;
					}
				}
			}
			else						//结束试验
			{
				Test_End04 = 1;
				B_Stop = 1;
			}
			
			if(CD_Vol1<CD_Vol4)	//大于设定位移直接回位结束试验
			{
				B_Line = 1;
				B_Stop = 1;
			}
		}
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//保持时间内的位移
			Test_End01= End_Max;
			
			Draw_Line();
			
			if(B_Stop)
			{
				if(Test_End04==1)	//试验成功,时间改为设定时间
					Test_End02 = Set1_D[Test_MM][2];
					
				B_Stop = 0;
				Time9 = Time0;
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Mode_Test = 0xf9;
			}
		}
	}
	//滑动性试验
	else if(Mode_Test==CC4  )		//0x0d 拉动时的最大力值 位移停机
	{
		//达到设定位移停止试验
		if(LL_02>=Set1_D[Test_MM][2])
		{
			B_Line = 1;
			B_Stop = 1;
			Ymax_Dat = End02;
		}
		if(B_AD)
		{
			B_AD = 0;
			
			Line_Code01();
			if(End_Max<0)
				End_Max = 0;
		}
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//取最大力值
			Test_End01 = End_Max;
			
			Draw_Line();
			
			if(B_Stop)
			{
				B_Stop = 0;
				Time9 = Time0;
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Mode_Test  ;
			}
		}
	}
	else if(Mode_Test==CC4  )		//0x0e 停止 30 秒
	{
		if(Time0-Time9>=30000)
		{
			B_Stop = 0;
			
			TestAD_N = 0;
			TestAD_Sum = 0;
			End_Max = End02C;
			End_Min = End02C;
			End_Ave = 0;
			LL_00 = 0;
			LL_01 = 0;
			LL_02 = 0;
			
			Time9 = Time0;
			Set_Speed = Set1_D[Test_MM][0];
			Mot_DIRB = 1;		//向下运动
			Mode_Mot = 1;
			Mode_Test  ;
		}
	}
	else if(Mode_Test==CC4  )		//0x0f 推动 采信最大值 最小值 平均值
	{
		//达到设定位移停止试验
		if(CD_Vol1<=CD_Vol3)
		{
			B_Line = 1;
			B_Stop = 1;
			Ymax_Dat = End02C;
		}
		if(B_AD)
		{
			B_AD = 0;
			//为计算平均值准备
			if(LL_02<500)	//1.0mm
			{
				TestAD_N = 0;
				TestAD_Sum = 0;
				if(End_Max<End02C)
				{
					End_Max = End02C;
					End_Min = End02C;
				}
				else if(End_Min>End02C)
					End_Min = End02C;
			}
			else
			{
				if(TestAD_N==0)
					End_Max = End02C;
				else if(End_Max<End02C)
					End_Max = End02C;
				TestAD_N  ;
				TestAD_Sum  = End02C;
			}
			
			Line_Code02();
			if(End_Max<0)
				End_Max = 0;
			if(End_Min<0)
				End_Min = 0;
			if(TestAD_Sum<0)
				TestAD_Sum = 0;
			
		}
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//取最大力值
			FF1 = TestAD_N;
			FF1 = TestAD_Sum/FF1;
			Test_End02 = (long int)FF1;
			Test_End03 = End_Max;
			Test_End04 = End_Min;
			
			Draw_Line();
			
			if(B_Stop)
			{
				B_Stop = 0;
				Time9 = Time0;
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Set1_D[Test_MM][8] = 0;
				
				Mode_Test = 0xf9;
			}
		}
	}
	//针尖穿刺力
	CC4 = 0x50;
	if(Mode_Test==CC4  )				//30 起始力值判断
	{
		if(B_AD)
		{
			B_AD = 0;
			
			if(End02C>Ymax_Dat)
				Ymax_Dat = End02C;
			else if(End02C<Ymin_Dat)
				Ymin_Dat = End02C;
			
			End_Max = End02C;
			End_Min = End02C;
			
			//判断是否满足停机条件,停止试验
			if(End_Max>=Set1_D[Test_MM][4])	//大于初始力值 转入下一个阶段
			{
				B_FS = 1;
				Mode_Test  ;
			}
			if(CD_Vol1<CD_Vol4)				//大于设定位移直接回位结束试验
			{
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				if(Set1_D[Test_MM][8]==0)
					Mode_Test = 0xfa;
				else
					Mode_Test = 0xfb;
			}
			
			if(Lin_Yn<7)
				SL1 = End02C;
			else
				SL1 = End02C/100 1;
			if(SL1>LL_Y[Lin_Yn])
			{
				Lin_Yn  ;
				if(Lin_Yn==7)
				{
					for(II1=0;II1<=Lin_N1;II1  )
						Lin_Dat[II1] /= 100;
					Lin_N0 = 0;
					Mode02 = 0x11;
				}
				else
				{
					Mode02 = 0x14;
				}
			}
			
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			Draw_Line();
		}
		
	}
	else if(Mode_Test==CC4  )		//31 第一个波峰
	{
		if(B_AD)
		{
			B_AD = 0;
			
			if(End02C>Ymax_Dat)
				Ymax_Dat = End02C;
			else if(End02C<Ymin_Dat)
				Ymin_Dat = End02C;
			
			if(End02C>End_Max)
				End_Max = End02C;
			else if(End02C<End_Min)
				End_Min = End02C;
			
			//判断是否满足停机条件,停止试验
			if(B_FS)	//大于初始力值
			{
				if(End_Max-End02C>Set_FF[0])	//停止试验
				{
					B_Stop = 0;
					//取最大力值
					Test_End01 = End_Max;
					Mode_Test  ;
					
					End_Max = End02C;
					End_Min = End02C;
					// B_Line = 1;
					// B_Stop = 1;
					// Ymax_Dat = End02;
				}
			}
			if(CD_Vol1<CD_Vol4)	//大于设定位移直接回位结束试验
			{
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				if(Set1_D[Test_MM][8]==0)
					Mode_Test = 0xfa;
				else
					Mode_Test = 0xfb;
			}
			
			if(Lin_Yn<7)
				SL1 = End02C;
			else
				SL1 = End02C/100 1;
			if(SL1>LL_Y[Lin_Yn])
			{
				Lin_Yn  ;
				if(Lin_Yn==7)
				{
					for(II1=0;II1<=Lin_N1;II1  )
						Lin_Dat[II1] /= 100;
					Lin_N0 = 0;
					Mode02 = 0x11;
				}
				else
				{
					Mode02 = 0x14;
				}
			}
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//取最大力值
			Test_End01 = End_Max;
			
			Draw_Line();
			
			if(B_Stop)
			{
				B_Stop = 0;
				Mode_Test  ;
				
				End_Max = End02C;
				End_Min = End02C;
			}
		}
	}
	else if(Mode_Test==CC4  )		//32 判断第一个波谷
	{
		if(B_AD)
		{
			B_AD = 0;
			
			if(End02C>Ymax_Dat)
				Ymax_Dat = End02C;
			else if(End02C<Ymin_Dat)
				Ymin_Dat = End02C;
			
			if(End02C>End_Max)
				End_Max = End02C;
			else if(End02C<End_Min)
			{
				End_Max = End02C;
				End_Min = End02C;
			}
						
			//判断是否满足停机条件,停止试验
			if(End_Max-End_Min>=Set1_D[Test_MM][6])	//大于初始力值 转入下一个阶段
			{
				End_Max = End02C;
				End_Min = End02C;
				Mode_Test  ;
			}
			if(CD_Vol1<CD_Vol4)				//大于设定位移直接回位结束试验
			{
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				if(Set1_D[Test_MM][8]==0)
					Mode_Test = 0xfa;
				else
					Mode_Test = 0xfb;
			}
			
			if(Lin_Yn<7)
				SL1 = End02C;
			else
				SL1 = End02C/100 1;
			if(SL1>LL_Y[Lin_Yn])
			{
				Lin_Yn  ;
				if(Lin_Yn==7)
				{
					for(II1=0;II1<=Lin_N1;II1  )
						Lin_Dat[II1] /= 100;
					Lin_N0 = 0;
					Mode02 = 0x11;
				}
				else
				{
					Mode02 = 0x14;
				}
			}
			
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			Draw_Line();
		}
		
	}
	else if(Mode_Test==CC4  )		//33 第二个波峰
	{
		if(B_AD)
		{
			B_AD = 0;
			
			if(End02C>Ymax_Dat)
				Ymax_Dat = End02C;
			else if(End02C<Ymin_Dat)
				Ymin_Dat = End02C;
			
			if(End02C>End_Max)
				End_Max = End02C;
			else if(End02C<End_Min)
				End_Min = End02C;
			
			//判断是否满足停机条件,停止试验
			if(B_FS)	//大于初始力值
			{
				if(End_Max-End02C>Set_FF[1])	//停止试验
				{
					B_Stop = 0;
					//取最大力值
					Test_End02 = End_Max;
					Mode_Test  ;
					
					End_Max = End02C;
					End_Min = End02C;
					// B_Line = 1;
					// B_Stop = 1;
					// Ymax_Dat = End02;
				}
			}
			if(CD_Vol1<CD_Vol4)	//大于设定位移直接回位结束试验
			{
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Mode_Test = 0xf9;		//存结果处理
			}
			
			if(Lin_Yn<7)
				SL1 = End02C;
			else
				SL1 = End02C/100 1;
			if(SL1>LL_Y[Lin_Yn])
			{
				Lin_Yn  ;
				if(Lin_Yn==7)
				{
					for(II1=0;II1<=Lin_N1;II1  )
						Lin_Dat[II1] /= 100;
					Lin_N0 = 0;
					Mode02 = 0x11;
				}
				else
				{
					Mode02 = 0x14;
				}
			}
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//取最大力值
			Test_End02 = End_Max;
			
			Draw_Line();
			
			if(B_Stop)
			{
				B_Stop = 0;
				Mode_Test  ;
				
				End_Max = End02C;
				End_Min = End02C;
			}
		}
	}
	else if(Mode_Test==CC4  )		//34 判断第二个波谷
	{
		if(B_AD)
		{
			B_AD = 0;
			
			if(End02C>Ymax_Dat)
				Ymax_Dat = End02C;
			else if(End02C<Ymin_Dat)
				Ymin_Dat = End02C;
			
			if(End02C>End_Max)
				End_Max = End02C;
			else if(End02C<End_Min)
			{
				End_Max = End02C;
				End_Min = End02C;
			}
						
			//判断是否满足停机条件,停止试验
			if(End_Max-End_Min>=Set1_D[Test_MM][6])	//大于初始力值 转入下一个阶段
			{
				End_Max = End02C;
				End_Min = End02C;
				Mode_Test  ;
			}
			if(CD_Vol1<CD_Vol4)				//大于设定位移直接回位结束试验
			{
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Mode_Test = 0xf9;		//存结果处理
			}
			
			if(Lin_Yn<7)
				SL1 = End02C;
			else
				SL1 = End02C/100 1;
			if(SL1>LL_Y[Lin_Yn])
			{
				Lin_Yn  ;
				if(Lin_Yn==7)
				{
					for(II1=0;II1<=Lin_N1;II1  )
						Lin_Dat[II1] /= 100;
					Lin_N0 = 0;
					Mode02 = 0x11;
				}
				else
				{
					Mode02 = 0x14;
				}
			}
			
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			Draw_Line();
		}
		
	}
	else if(Mode_Test==CC4  )		//35 第三个波峰
	{
		if(B_AD)
		{
			B_AD = 0;
			
			if(End02C>Ymax_Dat)
				Ymax_Dat = End02C;
			else if(End02C<Ymin_Dat)
				Ymin_Dat = End02C;
			
			if(End02C>End_Max)
				End_Max = End02C;
			else if(End02C<End_Min)
				End_Min = End02C;
			
			//判断是否满足停机条件,停止试验
			if(B_FS)	//大于初始力值
			{
				if(End_Max-End02C>Set_FF[2])	//停止试验
				{
					B_Stop = 0;
					//取最大力值
					Test_End03 = End_Max;
					Mode_Test  ;
					
					End_Max = End02C;
					End_Min = End02C;
					// B_Line = 1;
					// B_Stop = 1;
					// Ymax_Dat = End02;
				}
			}
			if(CD_Vol1<CD_Vol4)	//大于设定位移直接回位结束试验
			{
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Mode_Test = 0xf9;		//存结果处理
			}
			
			if(Lin_Yn<7)
				SL1 = End02C;
			else
				SL1 = End02C/100 1;
			if(SL1>LL_Y[Lin_Yn])
			{
				Lin_Yn  ;
				if(Lin_Yn==7)
				{
					for(II1=0;II1<=Lin_N1;II1  )
						Lin_Dat[II1] /= 100;
					Lin_N0 = 0;
					Mode02 = 0x11;
				}
				else
				{
					Mode02 = 0x14;
				}
			}
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			Test_End05 = LL_02;
			//取最大力值
			Test_End03 = End_Max;
			
			Draw_Line();
			
			// if(B_Stop)
			// {
				// B_Stop = 0;
				// Mode_Test  ;
				
				// End_Max = End02C;
				// End_Min = End02C;
			// }
		}
	}
	else if(Mode_Test==CC4  )		//36 判断第三个波谷  用位移来判 5mm 后再取最大值
	{
		if(B_AD)
		{
			B_AD = 0;
			
			if(End02C>Ymax_Dat)
				Ymax_Dat = End02C;
			else if(End02C<Ymin_Dat)
				Ymin_Dat = End02C;
			
			End_Max = End02C;
			End_Min = End02C;
						
			if(CD_Vol1<CD_Vol4)				//大于设定位移直接回位结束试验
			{
				Set_Speed = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Mot = 0;
				Mode_Test = 0xf9;		//存结果处理
			}
			
			if(Lin_Yn<7)
				SL1 = End02C;
			else
				SL1 = End02C/100 1;
			if(SL1>LL_Y[Lin_Yn])
			{
				Lin_Yn  ;
				if(Lin_Yn==7)
				{
					for(II1=0;II1<=Lin_N1;II1  )
						Lin_Dat[II1] /= 100;
					Lin_N0 = 0;
					Mode02 = 0x11;
				}
				else
				{
					Mode02 = 0x14;
				}
			}
			
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//判断是否满足停机条件,停止试验
			if(LL_02-Test_End05>=500)	//大于位移 转入下一个阶段
			{
				End_Max = End02C;
				End_Min = End02C;
				Mode_Test  ;
			}
			Draw_Line();
		}
	}
	else if(Mode_Test==CC4  )		//33 穿刺力最大值
	{
		if(B_AD)
		{
			B_AD = 0;
			
			if(End02C>Ymax_Dat)
				Ymax_Dat = End02C;
			else if(End02C<Ymin_Dat)
				Ymin_Dat = End02C;
			
			if(End02C>End_Max)
				End_Max = End02C;
			else if(End02C<End_Min)
				End_Min = End02C;
			
			//判断是否满足停机条件,停止试验
			if(1)	//大于初始力值
			{
				if(CD_Vol1<CD_Vol4)	//停止试验
				{
					B_Stop = 0;
					//取最大力值
					Test_End04 = End_Max;
					Mode_Test  ;
					
					End_Max = End02C;
					End_Min = End02C;
					// B_Line = 1;
					// B_Stop = 1;
					// Ymax_Dat = End02;
					
					Set_Speed = 0;
					ET1 = 0;
					TR1 = 0;
					Mode_Mot = 0;
					Mode_Test = 0xf9;		//存结果处理
				}
			}
			if(Lin_Yn<7)
				SL1 = End02C;
			else
				SL1 = End02C/100 1;
			if(SL1>LL_Y[Lin_Yn])
			{
				Lin_Yn  ;
				if(Lin_Yn==7)
				{
					for(II1=0;II1<=Lin_N1;II1  )
						Lin_Dat[II1] /= 100;
					Lin_N0 = 0;
					Mode02 = 0x11;
				}
				else
				{
					Mode02 = 0x14;
				}
			}
		}
		
		if((LL_00>=LL_01)||(B_Stop))
		{
			//位移
			LL_02 = LL_00;
			//取最大力值
			Test_End04 = End_Max;
			
			Draw_Line();
			
		}
	}
	
	
	else if(Mode_Test==0xf9)		//处理结果
	{
		if(Test_N0<999999999)
			Test_N0  ;
		else
			Test_N0 = 0;
		
		UFL1.SL = Test_N0;
		II1 = 0x0008;
		CC2 = 0;
		Write24c128(UFL1.UC[CC2  ],II1  );
		Write24c128(UFL1.UC[CC2  ],II1  );
		Write24c128(UFL1.UC[CC2  ],II1  );
		Write24c128(UFL1.UC[CC2  ],II1  );
		Write_Test();		//写入试验结果
		
		U1T_Mode = 4;			//发送试验结果
		
		if(Set1_D[Test_MM][8]==0)
			Mode_Test = 0xfa;
		else
			Mode_Test = 0xfb;
	}
	else if(Mode_Test==0xfb)		//正在回位
	{
		if(Set_Speed==0)			//回位有个延时
		{
			if(Time0-Time9>1000)
			{
				Set_Speed = Set1_D[Test_MM][7];
				if((Test_MM==1)|(Test_MM==2)|(Test_MM==5)|(Test_MM==6))
					Mot_DIRB = 1;
				else
					Mot_DIRB = 0;
				Mode_Mot = 1;
			}
		}
		if((Test_MM==1)|(Test_MM==2)|(Test_MM==5)|(Test_MM==6))
		{
			if(CD_Vol1<=CD_Vol3)		//回位到位 试验结束 向下回位
			{
				Mode_Mot = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Test = 0xfa;
				
			}
		}
		else
		{
			if(CD_Vol1>=CD_Vol3)		//回位到位 试验结束 向上回位
			{
				Mode_Mot = 0;
				ET1 = 0;
				TR1 = 0;
				Mode_Test = 0xfa;
			}
		}
	}
	else if(Mode_Test==0xfa)		//试验结束
	{
		
	}
}
void TR_Print(void)		//打印
{
	//可打英文 32 个字母 中文 16 个汉字
	CC4 = 0;
	if(PRT_Mode==CC4  )
	{
		
	}
	else if(PRT_Mode==CC4  )		//打印
	{
		S4CON |= S4TI;         //置位 S2TI 以方便下面使用
		PRT_Mode  ;
		PrintC(0x1b);
		PrintC(0x31);
		PrintC(0x01);
		if(Mode01==4)
			PRT_Mode = 0x30;
	
	}
	else if(PRT_Mode==CC4  )		//打印年月日时分秒
	{
		CC1 = 0;
		PrintL("    ");
		PrintN5(20);
		PrintN5(Time[CC1  ]);
		PrintL("年");
		PrintN5(Time[CC1  ]);
		PrintL("月");
		PrintN5(Time[CC1  ]);
		PrintL("日");
		PrintL("  ");
		CC1  ;
		PrintN5(Time[CC1  ]);
		PrintC(':');
		PrintN5(Time[CC1  ]);
		PrintC(':');
		PrintN5(Time[CC1  ]);
		
		PrintC(0x0a);
		PrintC(0x0d);
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 Test_End04
	{
		if(Test_MM==4)	//持续力平均值 02
		{
			PrintL("力值(F4): ");
			PrintN6(Test_End04);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==7)	//最小力 02
		{
			PrintL(" 最小力 : ");
			PrintN6(Test_End04);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==8)
		{
			PrintL("是否合格: □是 □否");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else
		{
			
		}
		
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 Test_End03
	{
		if(Test_MM==1)	//启始力 02
		{
			PrintL("拉伸强度: ");
			PrintN6(Test_End03);
			PrintL(" MPa");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==4)		//撕拉盖开启力 平均力值
		{
			PrintL("力值 F2 : ");
			PrintN6(Test_End03);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==7)	//最小力 02
		{
			PrintL(" 最大力 : ");
			PrintN6(Test_End03);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else
		{
			
		}
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 Test_End02
	{
		if(Test_MM==1)	//拉伸强度
		{
			PrintL(" 伸长率 : ");
			PrintN6(Test_End02);
			PrintL(" %");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==2)		//最小力值
		{
			PrintL("剥离强度: ");
			PrintN6(Test_End02);
			PrintL(" N/15mm");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==3)		//剥离强度
		{
			PrintL("回拔力值: ");
			PrintN6(Test_End02);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==4)		//持续最大力
		{
			PrintL("力值 F1 : ");
			PrintN6(Test_End02);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==5)		//持续力 1
		{
			PrintL("最大力值: ");
			PrintN6(Test_End02);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==7)	//最小力 02
		{
			PrintL(" 平均力 : ");
			PrintN6(Test_End02);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if((Test_MM==8)||(Test_MM==9))		//持续最大力
		{
			PrintL("保压时间: ");
			PrintN6(Test_End02);
			PrintL(" s");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else
		{
			
		}
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 Test_End01
	{
		if(Test_MM==1)	//伸长率
		{
			PrintL(" 变形量 : ");
			PrintN6(Test_End01);
			PrintL(" mm");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==2)
		{
			PrintL("平均力值: ");
			PrintN6(Test_End01);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==3)
		{
			PrintL("最大力值: ");
			PrintN6(Test_End01);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==4)		//启始力
		{
			PrintL("力值 F0 : ");
			PrintN6(Test_End01);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		/* else if(Test_MM==5)		//启始力
		{
			PrintL("最大位移: ");
			PrintN6(Test_End01);
			PrintL(" mm");
			PrintC(0x0a);
			PrintC(0x0d);
		} */
		else if(Test_MM==6)	//最小力 02
		{
			PrintL("试验压力: ");
			PrintN6(Test_End01);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==7)	//最小力 02
		{
			PrintL(" 启始力 : ");
			PrintN6(Test_End01);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==8)	//最小力 02
		{
			PrintL("试验压力: ");
			PrintN3(Test_End01);
			PrintL(" Kpa");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if((Test_MM==9))		//开启力
		{
			PrintL("位移变化: ");
			PrintN6(Test_End01);
			PrintL(" mm");
			PrintC(0x0a);
			PrintC(0x0d);
			
		}
		else
		{
			
		}
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 Set1_D[Test_MM][3]
	{
		if(Test_MM==1)	//试样厚度ABCDEFG
		{
			PrintL("试样厚度: ");
			PrintN8(Set1_D[Test_MM][3]);
			PrintL(" mm");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==2)
		{
			PrintL("试样宽度: ");
			PrintN6(Set1_D[Test_MM][3]);
			PrintL(" mm");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if((Test_MM==8)||(Test_MM==9))		//试样宽度
		{
			PrintL("设定位移: ");
			PrintN6(Set1_D[Test_MM][3]);
			PrintL(" mm");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else 
		{
			
		}
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 Set1_D[Test_MM][2]
	{
		if(Test_MM==1)	//试样宽度
		{
			PrintL("试样宽度: ");
			PrintN6(Set1_D[Test_MM][2]);
			PrintL(" mm");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==2)
		{
			PrintL("试验长度: ");
			PrintN6(Set1_D[Test_MM][2]);
			PrintL(" mm");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if((Test_MM==8)||(Test_MM==9))		//试样宽度
		{
			PrintL("设定时间: ");
			PrintN6(Set1_D[Test_MM][2]);
			PrintL(" s");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else 
		{
			
		}
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 Set1_D[Test_MM][1]
	{
		if((Test_MM==1)||(Test_MM==3)||(Test_MM==4))	//试样长度
		{
			PrintL("试样长度: ");
			PrintN6(Set1_D[Test_MM][1]);
			PrintL(" mm");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if(Test_MM==2)	//试样长度
		{
			PrintL(" 头长度 : ");
			PrintN6(Set1_D[Test_MM][1]);
			PrintL(" mm");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if((Test_MM==6)||(Test_MM==9))		//试验压力
		{
			PrintL("设定压力: ");
			PrintN6(Set1_D[Test_MM][1]);
			PrintL(" N");
			PrintC(0x0a);
			PrintC(0x0d);
		}
		else if (Test_MM==8)
		{
			PrintL("轴向压力: ");
			PrintN3(Set1_D[Test_MM][1]);
			PrintL(" kPa");
			PrintC(0x0a);
			PrintC(0x0d);
		}		
		else 
		{
			
		}
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 Set1_D[Test_MM][0]
	{
		PrintL("试验速度:   ");
		PrintN3(Set1_D[Test_MM][0]);
		PrintL(" mm/min");
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 LL_02
	{
		
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 End_Max
	{
		
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印试验模式
	{
		
		PrintL("试验模式: ");
		CC1 = 1;
		if(Test_MM==CC1  )	
			PrintL("拉伸试验");		//1
		else if(Test_MM==CC1  )
			PrintL("剥离试验");		//2
		else if(Test_MM==CC1  )
			PrintL("针尖穿刺试验");	//3
		else if(Test_MM==CC1  )
			PrintL("输液针穿刺力");	//4
		else if(Test_MM==CC1  )
			PrintL("拔开力试验");	//5
		else if(Test_MM==CC1  )
			PrintL("连接牢固度");	//6
		else if(Test_MM==CC1  )
			PrintL("滑动性试验");	//7
		else if(Test_MM==CC1  )
			PrintL("正压密合性");	//8
		else if(Test_MM==CC1  )
			PrintL("压缩试验");		//9
		else 
			PrintL("试验模式");
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 试验编号
	{
		
		PrintL("试验编号: ");
		if(Mode01==1)
			PrintN10(Test_N0);
		else
			PrintN10(Test_N0_Q);
		
		PrintL(" ");
		PrintC(0x0a);
		PrintC(0x0d);
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//34 打印 试样批号
	{
		if(Sample_Serial[0]!=0xff)
		{
			PrintL(" 批  号 : ");
			for(CC1=0;CC1<14;CC1  )
			{
				if(Sample_Serial[CC1]==0xff)
					break;
				else
					PrintC(Sample_Serial[CC1]);
			}
			PrintC(0x0a);
			PrintC(0x0d);
		}
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 试样来源
	{
		CC1 = 0;
		PrintL("试样名称:---------------------");
		PrintC(0x0a);
		PrintC(0x0d);
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 试验人员
	{
		CC1 = 0;
		PrintL("试验人员:(");
		PrintN7(CoustB);
		PrintL(")--------------");
		
		PrintC(0x0a);
		PrintC(0x0d);
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//36 打印 设备序号
	{
		CC1 = 0;
		PrintL("设备序号:");
		cptr = ID_ADDR_ROM;
		PrintN9(*cptr  );
		PrintN9(*cptr  );
		PrintN9(*cptr  );
		PrintN9(*cptr  );
		PrintN9(*cptr  );
		PrintN9(*cptr  );
		PrintN9(*cptr  );
		
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//37 打印 设备型号
	{
		CC1 = 0;
		PrintL("  医疗器械性能测试仪 YYL-03");
		PrintC(0x0a);
		PrintC(0x0d);
		PrintL("设备型号:");
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//打印 试验报告
	{
		CC1 = 0;
		PrintC(0x0a);
		PrintC(0x0d);
		PrintL("         ***试验报告***");
		PrintL(" \n \n \n");
		PrintC(0x0d);
		PRT_Mode = 0;
	}
	CC4 = 0x30;
	if(PRT_Mode==CC4  )		//打印公司名称
	{
		PrintL("  济南三泉中石实验仪器有限公司 ");
		PrintC(0x0a);
		PrintC(0x0d);
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//网址
	{
		PrintL("网址:www.sumspring.com");
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//电话
	{
		PrintL("电话:0531-67808296");
		PrintC(0x0a);
		PrintC(0x0d);
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//软件版本
	{
		// PrintL("软件版本:BHY-01_V1.0.0");
		PrintL("软件版本:YYL-03-V3.0.1D"); //清零按钮功能修改
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//硬件版本
	{
		PrintL("硬件版本:SUMSPRING-01-E.PCB");
		PrintC(0x0a);
		PrintC(0x0d);
		PRT_Mode  ;
	}
	else if(PRT_Mode==CC4  )		//关于
	{
		PrintL("             关  于         ");
		PrintL(" \n \n \n");
		PrintC(0x0d);
		PRT_Mode = 0;
	}
	
}
void Draw_Line(void)		//
{
	Send_U1(3);		//发送实时数据
	Lin_N1  ;
	if (Lin_Yn<7)
		SL1 = Ymax_Dat;
	else
		SL1 = Ymax_Dat/100;
	if (SL1<0)
		SL1 = 0;
	Lin_Dat[Lin_N1] = SL1;
	
	if(Lin_N1>=512)
	{
		Lin_Xn *= 4;
		II2 = 1;
		for (II1=1;II1<=512;II1  )
		{
			SI1 = Lin_Dat[II1];
			for (CC3=0;CC3<3;CC3  )
			{
				II1  ;
				if (SI1<Lin_Dat[II1])
					SI1 = Lin_Dat[II1];
			}

			Lin_Dat[II2] = SI1;
			II2  ;
		}
		Lin_N0 = 0;
		Lin_N1 = 128;
		Mode02 = 0x11;
	}
	LL_01  = Lin_Xn;
	if(Mode_Test==0x0D)
	{
		Ymax_Dat = End02;
		Ymin_Dat = End02;
	}
	else if((Test_MM==3)|(Test_MM==4)|(Test_MM==7)|(Test_MM==8)|(Test_MM==9))
	{
		Ymax_Dat = End02C;
		Ymin_Dat = End02C;
	}
	else
	{
		Ymax_Dat = End02;
		Ymin_Dat = End02;
	}
}
void Line_Code01(void)
{
	if(Lin_Yn<7)
		SL1 = End02;
	else
		SL1 = End02/100 1;
	if(SL1>LL_Y[Lin_Yn])
	{
		Lin_Yn  ;
		if(Lin_Yn==7)
		{
			for(II1=0;II1<=Lin_N1;II1  )
				Lin_Dat[II1] /= 100;
			Lin_N0 = 0;
			Mode02 = 0x11;
		}
		else
		{
			Mode02 = 0x14;
		}
	}
	
	if(End02>Ymax_Dat)
		Ymax_Dat = End02;
	else if(End02<Ymin_Dat)
		Ymin_Dat = End02;
	
	if(End02>End_Max)
		End_Max = End02;
	else if(End02<End_Min)
		End_Min = End02;
}
void Line_Code02(void)
{
	if(Lin_Yn<7)
		SL1 = End02C;
	else
		SL1 = End02C/100 1;
	if(SL1>LL_Y[Lin_Yn])
	{
		Lin_Yn  ;
		if(Lin_Yn==7)
		{
			for(II1=0;II1<=Lin_N1;II1  )
				Lin_Dat[II1] /= 100;
			Lin_N0 = 0;
			Mode02 = 0x11;
		}
		else
		{
			Mode02 = 0x14;
		}
	}
	
	if(End02C>Ymax_Dat)
		Ymax_Dat = End02C;
	else if(End02C<Ymin_Dat)
		Ymin_Dat = End02C;
	
	if(End02C>End_Max)
		End_Max = End02C;
	else if(End02C<End_Min)
		End_Min = End02C;
}
void TR_U1(void)			//处理接收命令
{
	// DelayMs(5);
	U1R_Mode = 0x00;
	//校验是否是正确帧
	CC1 = R1_Data[4] 2;
	CC2 = 0;
	for(CC3=2;CC3<CC1;CC3  )
		CC2  = R1_Data[CC3];
	
	if((CC2==R1_Data[CC1])&&(R1_Data[CC1 1]==0xa5)&&(R1_Data[CC1 2]==0xa5))
	{
		CC4 = R1_Data[5];
		if(CC4==0)		//空
		{
			
		}
		else if(CC4==0x42)	//查询最后一次结果
		{
			Test_N0_Q = Test_N0;
			
			Mode01 = 0;
			Mode02 = 0;
			
			U1T_Mode = 0x82;
		}
		else if(CC4==0x43)	//查询下一次结果
		{
			if(Test_N0_Q<Test_N0)
			{
				Test_N0_Q  ;
				Read_Test(Test_N0_Q);
				U1T_Mode = 0x83;
			}
			else
				U1T_Mode = 0x8f;
			
			Mode01 = 0;
			Mode02 = 0;
		}
		else if(CC4==0x44)	//查询上一次结果
		{
			if(Test_N0<400)
			{
				if(Test_N0_Q>1)
				{
					Test_N0_Q--;
					U1T_Mode = 0x84;
				}
				else
					U1T_Mode = 0x8f;
			}
			else
			{
				if(Test_N0_Q>Test_N0-400 1)
				{
					Test_N0_Q--;
					U1T_Mode = 0x84;
				}
				else
					U1T_Mode = 0x8f;
			}
			
			Mode01 = 0;
			Mode02 = 0;
		}
		else if(CC4==0x45)	//登陆命令
		{
			
			CC1 = 6;
			CC2 = 0;
			UFL1.UC[CC2  ] = R1_Data[CC1  ];
			UFL1.UC[CC2  ] = R1_Data[CC1  ];
			UFL1.UC[CC2  ] = R1_Data[CC1  ];
			UFL1.UC[CC2  ] = R1_Data[CC1  ];
			SL2 = UFL1.SL;
			CC2 = 0;
			UFL1.UC[CC2  ] = R1_Data[CC1  ];
			UFL1.UC[CC2  ] = R1_Data[CC1  ];
			UFL1.UC[CC2  ] = R1_Data[CC1  ];
			UFL1.UC[CC2  ] = R1_Data[CC1  ];
			SL1 = UFL1.SL;
			
			CC4 = 0;
			if (SL2==0)
			{
				
			}
			else if(SL2==Coustomer[0])
			{
				if(SL1==Coust_sec[0])
				{
					Coust = SL2;
					CC4 = 0x10;
				}
			}
			else
			{
				for(CC1=0;CC1<10;CC1  )
				{
					if(SL2==CoustomerB[CC1])
					{
						if(SL1==Coust_secB[CC1])
						{
							Coust = SL2;
							CC4 = 0x10;
							break;
						}
					}
					if(SL2==CoustomerC[CC1])
					{
						if(SL1==Coust_secC[CC1])
						{
							Coust = SL2;
							CC4 = 0x10;
							break;
						}
					}
				}
			}
			//写入返回帧
			if(CC4==0)
				U1T_Mode = 0x8f;
			else
				U1T_Mode = 0x85;
		}
		else if(CC4==0x47)	//查询指定编号结果
		{
			CC1 = 0;
			CC2 = 6;
			
			UFL1.UC[CC1  ] = R1_Data[CC2  ];
			UFL1.UC[CC1  ] = R1_Data[CC2  ];
			UFL1.UC[CC1  ] = R1_Data[CC2  ];
			UFL1.UC[CC1  ] = R1_Data[CC2  ];
			
			if((UFL1.SL<=Test_N0)&&(UFL1.SL>=Test_N0-400))
			{
				Test_N0_Q = UFL1.SL;
				
				Mode01 = 0;
				Mode02 = 0;
				
				U1T_Mode = 0x87;
			}
			else
			{
				U1T_Mode = 0x8f;
			}
		}
		else if(CC4==0x90)	//读取 EEPROM
		{
			U1T_Mode = 0X91;
		}
		else if(CC4==0x95)	//读取 EEPROM
		{
			U1T_Mode = 0X96;
		}
		else
			U1T_Mode = 0X8f;
		
	}
}
void Send_U1(unsigned char a)	//发送通信帧 与计算机通信
{
	while(U1T_N0<U1T_N1)
	{
		_nop_();
	}
	U1T_Mode = 0x00;
	U1T_N1 = 0;
	CC1 = 0;
	T1_Data[CC1  ] = 0xc0;
	T1_Data[CC1  ] = 0xc0;
	T1_Data[CC1  ] = IDC_S;
	T1_Data[CC1  ] = 0x01;
	T1_Data[CC1  ] = 0x06;		//4 数据长度 在下面还需要修改!!!
	T1_Data[CC1  ] = a;			//5 数据帧状态定
	if(a==0)
	{
		
	}
	else if(a==1)			//1 开机
	{
		T1_Data[4] = 0x06;		//数据长度 在下面还需要修改!!!
		
		U1T_N1 = T1_Data[4] 5;			//发送数据个数
	}
	
	else if(a==10)			//2 开始试验帧
	{
		CC1 = 6;
		UFL1.SL = Test_N0 1;	//试验编号
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		T1_Data[CC1  ] = Test_MM;		//试验模式
		
		UFL1.SL = 0;
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		
		T1_Data[4] = 9 4;		//数据长度 在下面还需要修改!!!
		U1T_N1 = T1_Data[4] 5;			//发送数据个数
		U1T_Mode = 2;		//发送完成后发送 参数
	}
	else if(a==2)			//2 开始试验 发送参数 无参数
	{
		DelayMs(1);
		CC1 = 6;
		UFL1.SL = Test_N0 1;	//试验编号
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		T1_Data[CC1  ] = Test_MM;		//试验模式
		
		UFL1.SL = Set1_D[Test_MM][0];	//速度
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][1];	//模式
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][2];	//方向
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][3];	//方向
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		T1_Data[4] = CC1-2;		//数据长度 
		U1T_N1 = CC1 3;			//发送数据个数
		U1T_Mode = 0;		//第一次数据要在参数发送完成后发送
	}
	else if(a==3)			//3 实时数据
	{
		CC1 = 6;
		UFL1.SL = Test_N0 1;				//试验编号
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		T1_Data[CC1  ] = Test_MM;		//试验模式   序号0 共用一个
		
		UFL1.SL = LL_02;					//实时位移
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		// UFL1.SL = CR_N2;				//实时力值
		UFL1.SL = Ymax_Dat*10;	
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		T1_Data[4] = CC1-2;		//数据长度 
		U1T_N1 = CC1 3;			//发送数据个数
	}
	else if(a==4)			//4 试验结果
	{
		CC1 = 6;
		UFL1.SL = Test_N0;				//试验编号
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		T1_Data[CC1  ] = Test_MM;		//试验模式   序号0 共用一个
		
		UFL1.SL = Test_End01;			//结果 01
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End02;			//结果 02
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End03;			//结果 03
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End04;			//结果 04
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		UFL1.SL = End_Max;				//最大值
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		UFL1.SL = LL_02;				//最小值
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// UFL1.SL = End_Ave;				//平均值
		// CC2 = 0;
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		//试验时间
		for(CC2=0;CC2<7;CC2  )
		{
			if(CC2==3)
				CC2  ;
			T1_Data[CC1  ] = Time[CC2];
		}
		//试样批号
		for(CC2=0;CC2<14;CC2  )
			T1_Data[CC1  ] = Sample_Serial[CC2];
		
		T1_Data[4] = CC1-2;		//数据长度 
		U1T_N1 = CC1 3;			//发送数据个数
	}
	else if(a==0x82)			//	最后一次数据
	{
		Test_N0_Q = Test_N0;
		Read_Test(Test_N0);
		
		CC1 = 6;
		UFL1.SL = Test_N0;				//试验编号
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		T1_Data[CC1  ] = Test_MM;		//试验模式   序号0 共用一个
		UFL1.SL = Test_End01;			//结果 01
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End02;			//结果 02
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End03;			//结果 03
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End04;			//结果 04
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		
		UFL1.SL = End_Max;				//最大值
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		UFL1.SL = LL_02;					//位移
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		UFL1.SL = Set1_D[Test_MM][0];	//速度
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][1];	//模式
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][2];	//方向
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][3];	//方向
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// UFL1.SL = End_Ave;				//平均值
		// CC2 = 0;
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		//试验时间
		for(CC2=0;CC2<7;CC2  )
		{
			if(CC2==3)
				CC2  ;
			T1_Data[CC1  ] = Time[CC2];
		}
		//试样批号
		for(CC2=0;CC2<14;CC2  )
			T1_Data[CC1  ] = Sample_Serial[CC2];
		//发送试验人员
		UFL1.SL = CoustB;
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		
		T1_Data[4] = CC1-2;		//数据长度 
		U1T_N1 = CC1 3;			//发送数据个数
	}
	else if((a==0x83)||(a==0x84))	//查询数据
	{
		Read_Test(Test_N0_Q);
		
		CC1 = 6;
		UFL1.SL = Test_N0_Q;				//试验编号
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		T1_Data[CC1  ] = Test_MM;		//试验模式   序号0 共用一个
		UFL1.SL = Test_End01;			//结果 01
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End02;			//结果 02
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End03;			//结果 03
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End04;			//结果 04
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		
		UFL1.SL = End_Max;				//最大值
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		UFL1.SL = LL_02;				//最小值
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		UFL1.SL = Set1_D[Test_MM][0];	//速度
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][1];	//模式
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][2];	//方向
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][3];	//方向
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// UFL1.SL = End_Ave;				//平均值
		// CC2 = 0;
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		//试验时间
		for(CC2=0;CC2<7;CC2  )
		{
			if(CC2==3)
				CC2  ;
			T1_Data[CC1  ] = Time[CC2];
		}
		//试样批号
		for(CC2=0;CC2<14;CC2  )
			T1_Data[CC1  ] = Sample_Serial[CC2];
		//发送试验人员
		UFL1.SL = CoustB;
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		T1_Data[4] = CC1-2;		//数据长度 
		U1T_N1 = CC1 3;			//发送数据个数
	}
	else if(a==0x87)	//查询数据
	{
		Read_Test(Test_N0_Q);
		
		CC1 = 6;
		UFL1.SL = Test_N0_Q;				//试验编号
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		T1_Data[CC1  ] = Test_MM;		//试验模式   序号0 共用一个
		UFL1.SL = Test_End01;			//结果 01
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End02;			//结果 02
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End03;			//结果 03
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Test_End04;			//结果 04
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		
		UFL1.SL = End_Max;				//最大值
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		UFL1.SL = LL_02;				//最小值
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		UFL1.SL = Set1_D[Test_MM][0];	//速度
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][1];	//模式
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][2];	//方向
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		UFL1.SL = Set1_D[Test_MM][3];	//方向
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// UFL1.SL = End_Ave;				//平均值
		// CC2 = 0;
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		// T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		//试验时间
		for(CC2=0;CC2<7;CC2  )
		{
			if(CC2==3)
				CC2  ;
			T1_Data[CC1  ] = Time[CC2];
		}
		//试样批号
		for(CC2=0;CC2<14;CC2  )
			T1_Data[CC1  ] = Sample_Serial[CC2];
		//发送试验人员
		UFL1.SL = CoustB;
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		
		
		T1_Data[4] = CC1-2;		//数据长度 
		U1T_N1 = CC1 3;			//发送数据个数
	}
	else if(a==0x85)
	{
		CC1 = 6;
		UFL1.SL = Coust;
		CC2 = 0;
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		T1_Data[CC1  ] = UFL1.UC[CC2  ];
		if(Coust==1)
		{
			UFL1.SL = Coust_sec[0];
			CC2 = 0;
			T1_Data[CC1  ] = UFL1.UC[CC2  ];
			T1_Data[CC1  ] = UFL1.UC[CC2  ];
			T1_Data[CC1  ] = UFL1.UC[CC2  ];
			T1_Data[CC1  ] = UFL1.UC[CC2  ];
			T1_Data[CC1  ] = 1;
		}
		else
		{
			for(CC3=0;CC3<10;CC3  )
			{
				if(Coust==CoustomerB[CC3])
				{
					UFL1.SL = Coust_secB[CC3];
					CC2 = 0;
					T1_Data[CC1  ] = UFL1.UC[CC2  ];
					T1_Data[CC1  ] = UFL1.UC[CC2  ];
					T1_Data[CC1  ] = UFL1.UC[CC2  ];
					T1_Data[CC1  ] = UFL1.UC[CC2  ];
					T1_Data[CC1  ] = 2;
					break;
				}
				if(Coust==CoustomerC[CC3])
				{
					UFL1.SL = Coust_secC[CC3];
					CC2 = 0;
					T1_Data[CC1  ] = UFL1.UC[CC2  ];
					T1_Data[CC1  ] = UFL1.UC[CC2  ];
					T1_Data[CC1  ] = UFL1.UC[CC2  ];
					T1_Data[CC1  ] = UFL1.UC[CC2  ];
					T1_Data[CC1  ] = 3;
					break;
				}
			}
		}
		
		
		T1_Data[4] = CC1-2;		//数据长度 在下面还需要修改!!!
		U1T_N1 = CC1 3;			//发送数据个数
	}
	else if(a==0x8f)
	{
		T1_Data[4] = 0x06;		//数据长度 在下面还需要修改!!!
		
		U1T_N1 = T1_Data[4] 5;			//发送数据个数
	}
	
	else if(a==0x91)
	{
		CN_CON_ADD = 0x0000;
		
		CC1 = 6;
		T1_Data[CC1  ] = CN_CON_ADD>>8;
		T1_Data[CC1  ] = CN_CON_ADD;
		
		Read24c128_PG(CN_CON_ADD);
		CC1  = 0x40;
		
		T1_Data[4] = CC1-2;		//数据长度 在下面还需要修改!!!
		U1T_N1 = CC1 3;			//发送数据个数
	}
	else if(a==0x96)
	{
		CN_CON_ADD  = 0x40;
		
		CC1 = 6;
		T1_Data[CC1  ] = CN_CON_ADD>>8;
		T1_Data[CC1  ] = CN_CON_ADD;
		
		Read24c128_PG(CN_CON_ADD);
		CC1  = 0x40;
		
		T1_Data[4] = CC1-2;		//数据长度 在下面还需要修改!!!
		U1T_N1 = CC1 3;			//发送数据个数
	}
	
	if(U1T_N1)
	{
		//计算校验和
		CC3 = 0;
		CC4 = U1T_N1-3;
		for(CC2=2;CC2<CC4;CC2  )
		{
			CC3  = T1_Data[CC2];
		}
		T1_Data[CC4  ] = CC3;
		T1_Data[CC4  ] = 0xa5;
		T1_Data[CC4  ] = 0xa5;
		
		U1T_N0 = 1;
		SBUF = 0xc0;
	}
}
void Write_Set(void)			//写入参数
{
	II1 = 0x0200;
	for(CC1=1;CC1<11;CC1  )
	{
		for(CC2=0;CC2<10;CC2  )
		{
			UFL1.SL = Set1_D[CC1][CC2];
			CC3 = 0;
			Write24c128(UFL1.UC[CC3  ],II1  );
			Write24c128(UFL1.UC[CC3  ],II1  );
			Write24c128(UFL1.UC[CC3  ],II1  );
			Write24c128(UFL1.UC[CC3  ],II1  );
		}
	}
}
void Write_Set_SG(unsigned char a)
{
	II1 = 0x0200;
	II1 = II1 40*(Test_MM-1) 4*a;
	UFL1.SL = SL1;
	CC1 = 0;
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
}
void Read_Set(void)			//读出参数
{
	II1 = 0x0008;
	CC2 = 0;
	UFL1.UC[CC2  ] = Read24c128(II1  );
	UFL1.UC[CC2  ] = Read24c128(II1  );
	UFL1.UC[CC2  ] = Read24c128(II1  );
	UFL1.UC[CC2  ] = Read24c128(II1  );
	Test_N0 = UFL1.SL;
	Mode_Sensor = Read24c128(0x000e);
	if(Mode_Sensor>7)
	{
		Mode_Sensor = 0;
		Write24c128(0,0x000e);
	}
	
	II1 = 0x0200;
	for(CC1=1;CC1<11;CC1  )
	{
		for(CC2=0;CC2<10;CC2  )
		{
			CC3 = 0;
			UFL1.UC[CC3  ] = Read24c128(II1  );
			UFL1.UC[CC3  ] = Read24c128(II1  );
			UFL1.UC[CC3  ] = Read24c128(II1  );
			UFL1.UC[CC3  ] = Read24c128(II1  );
			Set1_D[CC1][CC2] = UFL1.SL;
		}
	}
	
	
	II1 = 0X00D0;
	for(CC1=0;CC1<4;CC1  )
	{
		CC2 = 0;
		UFL1.UC[CC2  ] = 0;
		UFL1.UC[CC2  ] = 0;
		UFL1.UC[CC2  ] = Read24c128(II1  );
		UFL1.UC[CC2  ] = Read24c128(II1  );
		Set_FF[CC1] = UFL1.SL;
	}
	
	//第一次上电线路板上的EEPROM初始化
	if((Set1_D[1][0]>1000)||(Set1_D[1][0]<0))
	{
		Test_N0 = 0;
		II1 = 0x0008;
		UFL1.SL = Test_N0;
		CC1 = 0;
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		Mode_Sensor = 3;
		Write24c128(3,0x000e);
		for(CC1=1;CC1<11;CC1  )
		{
			CC2 = 0;
			Set1_D[CC1][CC2  ] = 300;	//试验速度
			Set1_D[CC1][CC2  ] = 2000;//试样长度
			Set1_D[CC1][CC2  ] = 100;	//试样宽度
			Set1_D[CC1][CC2  ] = 10;	//试样厚度
			
			Set1_D[CC1][CC2  ] = 100;	//起始力值
			Set1_D[CC1][CC2  ] = 50000;	//保护力值
			Set1_D[CC1][CC2  ] = 50;	//破形判断
			Set1_D[CC1][CC2  ] = 500;	//回位速度
			Set1_D[CC1][CC2  ] = 1;	//是否自动回位
		}
		Set_FF[0] = 10;
		Set_FF[1] = 10;
		Set_FF[2] = 10;
		Set_FF[3] = 10;
		
		Write_Set();
	}
}

void W_Set2(void)				//写入用户名密码
{
	II1 = 0x110;
	
	//写入管理员用户密码
	UFL1.SL = Coustomer[0];
	CC1 = 0;
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	if(Coustomer==0)
		UFL1.UL = 0;
	else
		UFL1.UL = Coust_sec[0];
	CC1 = 0;
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	
	//写入 二级用户名 密码
	for(CC2=0;CC2<10;CC2  )
	{
		UFL1.SL = CoustomerB[CC2];
		CC1 = 0;
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		if(Coustomer==0)
			UFL1.UL = 0;
		else
			UFL1.UL = Coust_secB[CC2];
		CC1 = 0;
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
	}
	//写入 三级用户名 密码
	for(CC2=0;CC2<10;CC2  )
	{
		UFL1.SL = CoustomerC[CC2];
		CC1 = 0;
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		if(Coustomer==0)
			UFL1.UL = 0;
		else
			UFL1.UL = Coust_secC[CC2];
		CC1 = 0;
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
		Write24c128(UFL1.UC[CC1  ],II1  );
	}
}
void Read_Set2(void)			//读出用户名密码
{
	II1 = 0x110;
	
	CC2 = 0;
	UFL1.UC[CC2  ] = Read24c128(II1  );
	UFL1.UC[CC2  ] = Read24c128(II1  );
	UFL1.UC[CC2  ] = Read24c128(II1  );
	UFL1.UC[CC2  ] = Read24c128(II1  );
	Coustomer[0] = UFL1.SL;
	if(UFL1.SL==1)		//读出所有用户名 密码	
	{	
		CC2 = 0;
		UFL1.UC[CC2  ] = Read24c128(II1  );
		UFL1.UC[CC2  ] = Read24c128(II1  );
		UFL1.UC[CC2  ] = Read24c128(II1  );
		UFL1.UC[CC2  ] = Read24c128(II1  );
		Coust_sec[0] = UFL1.SL;
		
		//二级用户
		for(CC3=0;CC3<10;CC3  )
		{
			CC2 = 0;
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			CoustomerB[CC3] = UFL1.SL;
			CC2 = 0;
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			Coust_secB[CC3] = UFL1.SL;
		}
		//三级用户
		for(CC3=0;CC3<10;CC3  )
		{
			CC2 = 0;
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			CoustomerC[CC3] = UFL1.SL;
			CC2 = 0;
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			UFL1.UC[CC2  ] = Read24c128(II1  );
			Coust_secC[CC3] = UFL1.SL;
		}
	}
	else					//初始化所有用户名 密码
	{
		Coustomer[0] = 1;
		Coust_sec[0] = 123456;
		for(CC3=0;CC3<10;CC3  )
		{
			CoustomerB[CC3] = 0;
			Coust_secB[CC3] = 0;
		}
		for(CC3=0;CC3<10;CC3  )
		{
			CoustomerC[CC3] = 0;
			Coust_secC[CC3] = 0;
		}
		W_Set2();
	}
}
void Write_Test(void)			//写入试验记录
{
	unsigned int x;
	x = 0x0500 0x48*(Test_N0%400);
	
	Write24c128(1,x  );	//是否有记录
	for(CC1=0;CC1<7;CC1  )	//写入试验时间
	{
		Write24c128(Time[CC1],x  );	
	}
	Write24c128(Test_MM,x  );		//试验模式
	for(CC1=0;CC1<4;CC1  )	//试验速度 及其它设置参数
	{
		UFL1.SL = Set1_D[Test_MM][CC1];
		CC2 = 0;
		Write24c128(UFL1.UC[CC2  ],x  );
		Write24c128(UFL1.UC[CC2  ],x  );
		Write24c128(UFL1.UC[CC2  ],x  );
		Write24c128(UFL1.UC[CC2  ],x  );
	}
	UFL1.SL = Test_End01;
	CC2 = 0;
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	UFL1.SL = Test_End02;
	CC2 = 0;
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	UFL1.SL = Test_End03;
	CC2 = 0;
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	UFL1.SL = Test_End04;
	CC2 = 0;
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	UFL1.SL = End_Max;
	CC2 = 0;
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	UFL1.SL = LL_02;
	CC2 = 0;
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	//写入试样序号
	for(CC1=0;CC1<14;CC1  )	//写入试
	{
		if(Sample_Serial[0]==0xff)
			Write24c128(0xff,x  );
		else
			Write24c128(Sample_Serial[CC1],x  );	
	}
	UFL1.SL = Coust;
	CoustB = Coust;
	CC2 = 0;
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	Write24c128(UFL1.UC[CC2  ],x  );
	
}
void Read_Test(long int a)
{
	unsigned char m;
	unsigned int x;
	x = (a%400)*0x48 0x500;
	
	m = Read24c128(x  );
	if(m!=1)	//无记录
	{
		Test_MM = 1;
		CoustB = 0;
		for(CC1=0;CC1<7;CC1  )	//试验时间
			Time[CC1] = 0;
		Test_MM = 1;
		for(CC1=0;CC1<4;CC1  )
			Set1_D[Test_MM][CC1] = 0;
		Test_End01 = 0;
		Test_End02 = 0;
		Test_End03 = 0;
		Test_End04 = 0;
	}
	else
	{
		for(CC1=0;CC1<7;CC1  )	//试验时间
		{
			Time[CC1] = Read24c128(x  );
		}
		Test_MM = Read24c128(x  );
		for(CC1=0;CC1<4;CC1  )
		{
			CC2 = 0;
			UFL1.UC[CC2  ] = Read24c128(x  );
			UFL1.UC[CC2  ] = Read24c128(x  );
			UFL1.UC[CC2  ] = Read24c128(x  );
			UFL1.UC[CC2  ] = Read24c128(x  );
			Set1_D[Test_MM][CC1] = UFL1.SL;
		}
		CC2 = 0;
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		Test_End01 = UFL1.SL;
		CC2 = 0;
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		Test_End02 = UFL1.SL;
		CC2 = 0;
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		Test_End03 = UFL1.SL;
		CC2 = 0;
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		Test_End04 = UFL1.SL;
		CC2 = 0;
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		End_Max = UFL1.SL;
		CC2 = 0;
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		LL_02 = UFL1.SL;
		//读出试样序号
		for(CC1=0;CC1<14;CC1  )	//试验时间	7  
		{
			Sample_Serial[CC1] = Read24c128(x  );
		}
		CC2 = 0;
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		UFL1.UC[CC2  ] = Read24c128(x  );
		CoustB = UFL1.SL;
	}
}
void Write_CAL(void)				//写入标定数据
{
	II1 = 0x0010 0x18*Mode_Sensor;
	UFL1.SL = XX_AD0;
	CC1 = 0;
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	UFL1.SL = YY_Dat0;
	CC1 = 0;
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	UFL1.SL = XX_AD1;
	CC1 = 0;
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	UFL1.SL = YY_Dat1;
	CC1 = 0;
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	UFL1.SL = YY_DY;
	CC1 = 0;
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	UFL1.SL = YY_Max;
	CC1 = 0;
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	Write24c128(UFL1.UC[CC1  ],II1  );
	
}
void Read_CAL(void)
{
	II1 = 0x0010 0x18*Mode_Sensor;
	CC1 = 0;
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	if ((UFL1.SL==0xffffffff)||(UFL1.SL==0x00000000))
	{
		XX_AD0 = 0;
		XX_AD1 = 600000;
		YY_Dat0 = 0;
		YY_Dat1 = 10000;
		YY_DY = 0;
		YY_Max = 10000;
		Write_CAL();
	}

	II1 = 0x0010 0x18*Mode_Sensor;
	CC1 = 0;
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	XX_AD0 = UFL1.SL;
	CC1 = 0;
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	YY_Dat0 = UFL1.SL;
	CC1 = 0;
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	XX_AD1 = UFL1.SL;
	CC1 = 0;
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	YY_Dat1 = UFL1.SL;
	CC1 = 0;
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	YY_DY = UFL1.SL;
	CC1 = 0;
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	UFL1.UC[CC1  ] = Read24c128(II1  );
	YY_Max = UFL1.SL;
	
	FF1 = XX_AD1-XX_AD0;
	FF2 = YY_Dat1-YY_Dat0;
	KKK = FF2/FF1;
}

void PrintC(unsigned char a)		//向打印机发送一个字符
{
	while((S4CON&S4TI)==0)		//等待上次的发送完成
	{
		
	}
	S4CON &= ~S4TI;         //清除S2TI位
	S4BUF = a;
}
void PrintL(unsigned char *a)		//发送一个长字符串,直到字符串结束符为至
{
	while(*a!=0)
	{
		PrintC(*a);
		a  ;
	}
}
/* void PrintN1(unsigned char a)		//打印一个字节数据,三位数,左对齐
{
	unsigned char m;
	m = 0;
	if(a/100)
	{
		m = 1;
		PrintC(a/100 0x30);
	}
	// else
		// PrintC(0x20);
	a %= 100;
	if(a/10)
		PrintC(a/10 0x30);
	else
	{
		if(m)
			PrintC(0x30);
		// else
			// PrintC(0x20);
	}
	PrintC(a%10 0x30);
} */
/* void PrintN2(unsigned int a)		//打印一个整型数据,五位数,左对齐
{
	unsigned char m;
	m = 0;
	if(a/10000)
	{
		m = 1;
		PrintC(a/10000 0x30);
	}
	// else
		// PrintC(0x20);
	a %= 10000;
	if(a/1000)
	{
		PrintC(a/1000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		// else
			// PrintC(0x20);
	}
	a %= 1000;
	if(a/100)
	{
		PrintC(a/100 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		// else
			// PrintC(0x20);
	}
	a %= 100;
	if(a/10)
	{
		PrintC(a/10 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		// else
			// PrintC(0x20);
	}
	PrintC(a%10 0x30);
} */
void PrintN3(unsigned long int a)	//长整数 前面补空格
{
	unsigned char m;
	m = 0;
	if(a/1000000)
	{
		m = 1;
		PrintC(a/1000000 0x30);
	}
	else
		PrintC(0x20);
	a %= 1000000;
	if(a/100000)
	{
		PrintC(a/100000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	a %= 100000;
	if(a/10000)
	{
		PrintC(a/10000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	a %= 10000;
	if(a/1000)
	{
		PrintC(a/1000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	
	a %= 1000;
	if(a/100)
	{
		PrintC(a/100 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	a %= 100;
	if(a/10)
	{
		PrintC(a/10 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	
	PrintC(a%10 0x30);
}
/* void PrintN4(long int a)	//长整数,一位小数 为负数时有负号
{
	unsigned char m;
	unsigned char s;
	m = 0;
	if(a<0)
	{
		s = 5;
		a = -a;
	}
	else
		s = 3;
		
	if(a/1000000)
	{
		m = 1;
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/1000000 0x30);
	}
	else
		PrintC(0x20);
	a %= 1000000;
	if(a/100000)
	{
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/100000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	a %= 100000;
	if(a/10000)
	{
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/10000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	a %= 10000;
	if(a/1000)
	{
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/1000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	
	a %= 1000;
	if(a/100)
	{
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/100 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	if(s==5)
	{
		s = 0;
		PrintC('-');
	}
	else if(s==3)
	{
		s = 0;
		PrintC(' ');
	}
	a %= 100;
	PrintC(a/10 0x30);
	PrintC(0x2e);
	PrintC(a%10 0x30);
} */
void PrintN5(unsigned char a)		//两位数字,年月日 时分秒 使用
{
	a %= 100;
	PrintC(a/10 0x30);
	PrintC(a%10 0x30);
}
void PrintN6(long int a)			//长整数,二位小数 为负数时有负号
{
	unsigned char m;
	unsigned char s;
	m = 0;
	if(a<0)
	{
		s = 5;		//表示为负数	
		a = -a;
	}
	else
		s = 3;		//表示为正数
		
	if(a>9999999)
		a = 9999999;
	if(a/1000000)
	{
		m = 1;
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/1000000 0x30);
	}
	else
		PrintC(0x20);
	a %= 1000000;
	if(a/100000)
	{
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/100000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	a %= 100000;
	if(a/10000)
	{
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/10000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	a %= 10000;
	
	if(a/1000)
	{
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/1000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	
	a %= 1000;
	if(s==5)
	{
		s = 0;
		PrintC('-');
	}
	else if(s==3)
	{
		s = 0;
		PrintC(' ');
	}
	PrintC(a/100 0x30);
	m  ;
	
	PrintC(0x2e);
	
	a %= 100;
	PrintC(a/10 0x30);
	PrintC(a%10 0x30);
}

void PrintN7(long int a)		//打印一个整型数据,四位数,右边补零
{
	if(a>99999)
		a = 99999;
	PrintC(a/10000 0x30);
	a %= 10000;
	PrintC(a/1000 0x30);
	a %= 1000;
	PrintC(a/100 0x30);
	a %= 100;
	PrintC(a/10 0x30);
	PrintC(a%10 0x30);
}
void PrintN8(long int a)			//长整数,三位小数 为负数时有负号
{
	unsigned char m;
	unsigned char s;
	m = 0;
	if(a<0)
	{
		s = 5;
		a = -a;
	}
	else
		s = 3;
		
	if(a/1000000)
	{
		m = 1;
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/1000000 0x30);
	}
	else
		PrintC(0x20);
	a %= 1000000;
	if(a/100000)
	{
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/100000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	a %= 100000;
	if(a/10000)
	{
		if(s==5)
		{
			s = 0;
			PrintC('-');
		}
		else if(s==3)
		{
			s = 0;
			PrintC(' ');
		}
		PrintC(a/10000 0x30);
		m  ;
	}
	else
	{
		if(m)
			PrintC(0x30);
		else
			PrintC(0x20);
	}
	a %= 10000;
	if(s==5)
	{
		s = 0;
		PrintC('-');
	}
	else if(s==3)
	{
		s = 0;
		PrintC(' ');
	}
	PrintC(a/1000 0x30);
	
	a %= 1000;
	PrintC(0x2e);
	PrintC(a/100 0x30);
	a %= 100;
	PrintC(a/10 0x30);
	PrintC(a%10 0x30);
}

void PrintN9(unsigned char a)		//打印一个字节,十六进制打印
{
	CC1 = a>>4;
	if(CC1>9)
		PrintC(CC1 0x37);
	else
		PrintC(CC1 0x30);
	CC1 = a&0x0f;
	if(CC1>9)
		PrintC(CC1 0x37);
	else
		PrintC(CC1 0x30);
	
}
void PrintN10(long int a)		//打印试验编号
{
	if(a>99999999)
		a = 99999999;
	else if(a<0)
		a = 0;
	CC1 = a/10000000;
	a %= 10000000;
	PrintC(CC1 0x30);
	CC1 = a/1000000;
	a %= 1000000;
	PrintC(CC1 0x30);
	CC1 = a/100000;
	a %= 100000;
	PrintC(CC1 0x30);
	CC1 = a/10000;
	a %= 10000;
	PrintC(CC1 0x30);
	CC1 = a/1000;
	a %= 1000;
	PrintC(CC1 0x30);
	CC1 = a/100;
	a %= 100;
	PrintC(CC1 0x30);
	CC1 = a;
	PrintC(CC1/10 0x30);
	PrintC(CC1%10 0x30);
}
/* void Delay500ns()	//@22.1184MHz
{
	unsigned char i;

	i = 2;
	while (--i);
} */
void Timer0Init(void)		//1毫秒@22.1184MHz
{
	AUXR |= 0x80;			//定时器时钟1T模式
	TMOD &= 0xF0;			//设置定时器模式
	TL0 = 0x9A;				//设置定时初值
	TH0 = 0xA9;				//设置定时初值
	TF0 = 0;					//清除TF0标志
	TR0 = 1;					//定时器0开始计时
}
void UartInit(void)		//串口初始化	
{
	//定时器 1 	//57600bps@22.1184MHz
	// AUXR |= 0x40;		//定时器1时钟为Fosc,即1T
	// TMOD &= 0x0F;		//设定定时器1为16位自动重装方式
	// TL1 = 0xA0;			//设定定时初值
	// TH1 = 0xFF;			//设定定时初值
	// ET1 = 0;				//禁止定时器1中断
	// TR1 = 1;				//启动定时器1
	//定时器 1 	//115200bps@22.1184MHz
	// AUXR |= 0x40;		//定时器1时钟为Fosc,即1T
	// TMOD &= 0x0F;		//设定定时器1为16位自动重装方式
	// TL1 = 0xd0;			//设定定时初值
	// TH1 = 0xFF;			//设定定时初值
	// ET1 = 0;				//禁止定时器1中断
	// TR1 = 1;				//启动定时器1
	//定时器 2 	//115200bps@22.1184MHz
	T2L = 0xD0;			//设定定时初值
	T2H = 0xFF;			//设定定时初值
	AUXR |= 0x04;		//定时器2时钟为Fosc,即1T
	AUXR |= 0x10;		//启动定时器2
	//定时器 4 	//9600bps@22.1184MHz
	T4T3M |= 0x20;		//定时器4时钟为Fosc,即1T
	T4L = 0xC0;			//设定定时初值
	T4H = 0xFD;			//设定定时初值
	T4T3M |= 0x80;		//启动定时器4
	
	//串口 1
	SCON = 0x50;			//8位数据,可变波特率
	// AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	AUXR |= 0x01;		//串口1选择定时器2为波特率发生器
	//串口 2 
	S2CON = 0x50;		//8位数据,可变波特率
	//串口 3 
	S3CON = 0x10;		//8位数据,可变波特率
	S3CON &= 0xBF;		//串口3选择定时器2为波特率发生器
	//串口 4 
	S4CON = 0x10;		//8位数据,可变波特率
	S4CON |= 0x40;		//串口4选择定时器4为波特率发生器
	P_SW2 |= 0x04;		//选择 通道 2 输出
}
void DelayMs(unsigned int a)		//@22.1184MHz
{
	unsigned char i, j;

	while(a--)
	{
		_nop_();
		_nop_();
		i = 22;
		j = 128;
		do
		{
			while (--j);
		} while (--i);
	}
}

void Int_EX0(void)	interrupt 0 using 1
{
	char n;
	if((P32|P33)==0)
		CD_00 = 0;
	else if((P32&&P33)==1)
		CD_00 = 2;
	else if(P32)
		CD_00 = 1;
	else
		CD_00 = 3;
	
	n = CD_00-CD_01;
	CD_01 = CD_00;
	if((n==1)||(n==-3))
		CD_N00  ;
	else if((n==-1)||(n==3))
		CD_N00--;
	
}
void Int_EX1(void)	interrupt 2 using 1
{
	char n;
	if((P32|P33)==0)
		CD_00 = 0;
	else if((P32&&P33)==1)
		CD_00 = 2;
	else if(P32)
		CD_00 = 1;
	else
		CD_00 = 3;
	
	n = CD_00-CD_01;
	CD_01 = CD_00;
	if((n==1)||(n==-3))
		CD_N00  ;
	else if((n==-1)||(n==3))
		CD_N00--;
	
}

void Int_Time0(void) interrupt 1 
{
	tt0  ;
}
void Int_Time1(void) interrupt 3 
{
	Mot_PUL = ~Mot_PUL;
}
void Int_Uart1(void) interrupt 4 using 1
{
	unsigned char a;
	if(RI)
	{
		RI = 0;
		a = SBUF;
		if(U1R_Mode==0)
		{
			if(a==0x12)
				U1R_Mode = 0x80;
			else if(a==0xc5)
				U1R_Mode  ;
		}
		else if(U1R_Mode<0x7a)
		{
			R1_Data[U1R_Mode] = a;
			
			if(U1R_Mode==1)
			{
				if(a!=0xc5)
					U1R_Mode = 0;
			}
			else if(U1R_Mode==2)
			{
				if((a!=IDC_S)&&(a!=0xff))
					U1R_Mode = 0;
			}
			else if(U1R_Mode==3)
			{
				if((a!=ID_Address)&&(a!=0xff))
					U1R_Mode = 0;
			}
			else if(U1R_Mode==R1_Data[4] 4)
			{
				U1R_Mode = 0x79;
			}
			if(U1R_Mode)
				U1R_Mode  ;
		}
		else if(U1R_Mode==0x7a)		//接收完成,等待处理
		{
			
		}
		else if(U1R_Mode<0x80)
		{
			U1R_Mode = 0x00;
		}
		else if(U1R_Mode<0x88)
		{
			if(U1R_Mode==0x80)
			{
				if(a==0x34)
					U1R_Mode  ;
				else
					U1R_Mode = 0x00;
			}
			else if(U1R_Mode==0x81)
			{
				if(a==0x56)
					U1R_Mode  ;
				else
					U1R_Mode = 0x00;
			}
			else if(U1R_Mode==0x82)
			{
				if(a==0x78)
					U1R_Mode  ;
				else
					U1R_Mode = 0x00;
			}
			else if(U1R_Mode==0x83)
			{
				if(a==0x90)
					U1R_Mode  ;
				else
					U1R_Mode = 0x00;
			}
			else if(U1R_Mode==0x84)
			{
				if(a==0xab)
					U1R_Mode  ;
				else
					U1R_Mode = 0x00;
			}
			else if(U1R_Mode==0x85)
			{
				if(a==0xcd)
					U1R_Mode  ;
				else
					U1R_Mode = 0x00;
			}
			else if(U1R_Mode==0x86)
			{
				if(a==0xef)
				{
					B_Res = 1;
					U1R_Mode  ;
				}
				else if(a==0xe0)
					U1R_Mode = 0x88;
				else if(a==0xe2)
					U1R_Mode = 0x89;
				else
					U1R_Mode = 0x00;
			}
		}
		else if(U1R_Mode==0x87)
		{
			
		}
		else if(U1R_Mode==0x88)
		{
			
		}
		else if(U1R_Mode==0x89)
		{
			
		}
	}
	if(TI)
	{
		TI = 0;
		if(U1T_N0<U1T_N1)
		{
			SBUF = T1_Data[U1T_N0];
		}
		else
		{
			U1T_Mode = 0;
		}
		if(U1T_N0<200)
			U1T_N0  ;
		
	}
}

//UART2 中断服务程序
void Int_Uart2(void) interrupt 8 using 1
{
	unsigned char m,n;
    if (S2CON & S2RI)
    {
        S2CON &= ~S2RI;         //清除S2RI位
		if(U2R_N0<40)
		{
			U2R_N0  ;
			if(U2R_Mode==0)			//接收按键动作
			{
				R2_Data[U2R_N0] = S2BUF;
				
				if(U2R_N0>4)
				{
					if(U2R_N0==R2_Data[3] 3)
					{
						R2_Data[U2R_N0 1] = 0xff;	//输入字符串时多加一个结束符号R2_Data[U2R_N0 1] = 0xff;	//输入字符串时多加一个结束符号
						U2R_Mode = 1;
					}
				}
			}
			else if(U2R_Mode==1)		//等待主程序处理接收的液晶回送数据帧
			{
				
				
			}
			else if(U2R_Mode==2)
			{
				m = S2BUF;
				n = m&0x0f;
				m >>= 4;
				m = m*10 n;
				if(U2R_N0==7)
					Time[0] = m;
				else if(U2R_N0==8)
					Time[1] = m;
				else if(U2R_N0==9)
					Time[2] = m;
				else if(U2R_N0==10)
					Time[3] = m;
				else if(U2R_N0==11)
					Time[4] = m;
				else if(U2R_N0==12)
					Time[5] = m;
				else if(U2R_N0==13)
					Time[6] = m;
				else if(U2R_N0==14)
				{
					U2R_Mode = 0;
					U2R_N0 = 0;
				}
			}
		}
		else
		{
			U2R_Mode = 0;
			U2R_N0 = 0;
			// R2_Data[U2R_N0] = S2BUF;
		}
    }
    if (S2CON & S2TI)
    {
        S2CON &= ~S2TI;         //清除S2TI位
		if(U2T_N0<U2T_N1)
		{
			S2BUF = T2_Data[U2T_N0];
		}
		U2T_N0  ;
    }
}

//UART3 中断服务程序
void Int_Uart3(void) interrupt 17 using 1
{
	unsigned char a;
    if (S3CON & S3RI)
    {
        S3CON &= ~S3RI;         //清除S3RI位
		a = S3BUF;
		if(U3R_Mode==0)
		{
			if(a==0xaa)
				U3R_Mode  ;
		}
		else if(U3R_Mode==1)
		{
			if(a==0xaa)
				U3R_Mode  ;
			else
				U3R_Mode = 0;
		}
		else if(U3R_Mode<26)
		{
			R3_Data[U3R_Mode  ] = a;
		}
		else if(U3R_Mode<28)
		{
			if(a==0xbb)
				U3R_Mode  ;
			else
				U3R_Mode = 0;
		}
		else if(U3R_Mode==0x28)	//等待主程序处理
		{
			
		}
    }
    if (S3CON & S3TI)
    {
        S3CON &= ~S3TI;         //清除S3TI位
    }
}

//Pwm中断
void Int_PWM(void) interrupt 22 using 2
{
	
}


标签: 设备

实例下载地址

撕拉力试验仪(医疗设备)控制程序

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警