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

📄 ad.c

📁 此程序为本人在公司开发的继电器功能测试仪
💻 C
📖 第 1 页 / 共 2 页
字号:
				return(0);			
			}

		}
		pd_v=(float)Comp_Data[12]*40.95/(24*MULTI_V);
		pu_v=(float)Comp_Data[13]*40.95/(24*MULTI_V);
		DA_Convert(pu_v);
		for(i=0;i<200;i++) Delay_1(250);
		if(NO_TIME)	
		{
			DA_Convert(Comp_Data_T[0]*4095/(24*MULTI_V));
			for(i=0;i<100;i++) Delay_1(250);
			DA_Convert(pd_v);
			for(i=0;i<100;i++) Delay_1(250);
			if(NO_TIME)
			{
				SetP_Data[4]=13;//ng
				Set_Data_fast(SetP_Data,5,0,7);
				IO_B=0xFF;
				IO_A&=0xF7;
				IO_C&=0xFD;		
				DA_Convert(0);
				return(0);		
			}
			else
			{
				SetP_Data[4]=14;//ok
				Set_Data_fast(SetP_Data,5,0,7);
				IO_B|=0x08;
				DA_Convert(0);
				for(i=0;i<20;i++) Delay_1(250);
				return(1);					
			}
		}
		else
		{
			SetP_Data[4]=13;//ng
			Set_Data_fast(SetP_Data,5,0,7);
			IO_B=0xFF;
			IO_A&=0xF7;
			IO_C&=0xFC;				
			DA_Convert(0);
			return(0);		
		}
	}

	bit V_Test(void)
	{
		unsigned char i,Count=0;
		unsigned long V_V=0,V_Value_Temp=0;
		bit NG_Flag=0,EXT_Enbale=0;//OP_F=0;//
		//unsigned float Test_Data[3]_Temp=0;
		for(i=0;i<11;i++)
		{
			SetP_Data[i]=15;
		}
		IO_B&=0xF7;
		for(i=0;i<30;i++) Delay_1(250);
		V_Value=0;
		V_Up=0;
		F=1;
		TH_Flag=0;
		p_v=0;
		Test_Data[3]=0;
		Test_Data[4]=0;
		TMOD=0x21;//T1 IS Method 2; T0 is method 1;
		TH0=T0_Time/256;//0.5ms
		TL0=T0_Time%256;
		if(Comp_Data_T[0]==12)
		{
			V_V=2048;
		}
		else if(Comp_Data_T[0]==24) V_V=4095;
		//IE0=0;//clear external 0 flag;
		TR0=1;
		//EX0=1;//Enable External 0 Interrupt.	
		while(!V_Up)
		{
			DA_Convert(V_Value);
			while(!TF0);
			TF0=0;
			TH0=T0_Time/256;//0.5ms
			TL0=T0_Time%256;
			if(NO_TIME)
			{
				p_v=V_Value-70;//about decrease 0.5v
				DA_Convert(0);	
				TR0=0;
				V_Up=1;
			}
			V_Value+=2;
			if(V_Value>=V_V)
		 	{
				V_Up=1;
				TR0=0;
			}
		}
		for(i=0;i<50;i++) Delay_1(250);
		V_Value=p_v;
		DA_Convert(V_Value);
		for(i=0;i<50;i++) Delay_1(250);
		TH0=T0_Time_2/256;//1ms
		TL0=T0_Time_2%256;
		V_Up=0;
		TR0=1;
		while(!V_Up)
		{
			DA_Convert(V_Value);
			while(!TF0);
			TF0=0;
			TH0=T0_Time_2/256;//1ms
			TL0=T0_Time_2%256;
			if(EXT_Enbale)
			{
				Count++;
				if(Count==5)
				{
					IE0=0;//clear external 0 flag;
					EX0=1;//Enable External 0 Interrupt.
					Count=0;
					EXT_Enbale=0;
				}
			}
			if(NO_TIME&&F)
			{
				F=0;
				p_v=V_Value-REPAIR;
				V_Value_Temp=p_v;
				Test_Data[3]=(float)p_v*2.4*MULTI_V/4.095;
				//IE0=0;//clear external 0 flag;
				//EX0=1;//Enable External 0 Interrupt.
				EXT_Enbale=1;
			}
			//V_Value+=2;
			V_Value++;
			if(TH_Flag||(V_Value>=(V_V*0.625))) 
			{
				EX0=0;
				TR0=0;
				//EX0=0;
				V_Up=1;
				DA_Convert(V_V);
			}
			if(V_Value>=V_V)
		 	{
				V_Up=1;
				TR0=0;
			}
		}

		if(TH_Flag)
		{
			if((Test_Data[3]>Comp_Data[6])&&(Test_Data[3]<=Comp_Data[7])) SetP_Data[4]=14;//ok
			else SetP_Data[4]=13;//ng
			Num_Convert(Test_Data[3],4);
			if((Page_Val==0)||(Page_Val==6)) Tests_Data(SetP_Data,5,4);
			else if(Page_Val==3) Tests_Data(SetP_Data,5,5);
			if(SetP_Data[4]==13)
		 	{
				NG_Flag=1;
				IO_A&=0xFB;
				IO_C&=0xFD;
			}
			if((Test_Data[4]>=Comp_Data[8])&&(Test_Data[4]<=Comp_Data[9])) SetP_Data[4]=14;//ok
			else 
			{
				SetP_Data[4]=13;//ng
				IO_A&=0xFB;
				IO_C&=0xFC;
			}
			Num_Convert(Test_Data[4],4);
			//Tests_Data(SetP_Data,5,5);
			if((Page_Val==0)||(Page_Val==6)) Tests_Data(SetP_Data,5,5);
			else if(Page_Val==3) Tests_Data(SetP_Data,5,6);
			if((SetP_Data[4]==13)||(NG_Flag==1))
		 	{
				IO_B=0xFF;
				V_Up=0;
				DA_Convert(0);
				return(0);
			}
		}
		else
		{
			if(Page_Val==6) Test_Data[4]=Test_Data[3];
			else Test_Data[4]=0;
			if((Test_Data[3]>Comp_Data[6])&&(Test_Data[3]<=Comp_Data[7])) SetP_Data[4]=14;//ok
			else SetP_Data[4]=13;//ng
			Num_Convert(Test_Data[3],4);
			//Tests_Data(SetP_Data,5,4);
			if((Page_Val==0)||(Page_Val==6)) Tests_Data(SetP_Data,5,4);
			else if(Page_Val==3) Tests_Data(SetP_Data,5,5);
			if(SetP_Data[4]==13)
		 	{
				NG_Flag=1;
				IO_A&=0xFB;
				IO_C&=0xFD;
			}
			if((Test_Data[4]>=Comp_Data[8])&&(Test_Data[4]<=Comp_Data[9])) SetP_Data[4]=14;//ok
			else 
			{
				SetP_Data[4]=13;//ng
				IO_A&=0xFB;
				IO_C&=0xFC;
			}
			Num_Convert(Test_Data[4],4);
			//Tests_Data(SetP_Data,5,5);
			if((Page_Val==0)||(Page_Val==6)) Tests_Data(SetP_Data,5,5);
			else if(Page_Val==3) Tests_Data(SetP_Data,5,6);
			if((SetP_Data[4]==13)||(NG_Flag==1))
		 	{
				//IO_B|=0x60;
				IO_B=0xFF;
				V_Up=0;
				//V_Value=0;
				DA_Convert(0);

				return(0);
			}			
		}
		for(i=0;i<20;i++) Delay_1(250);
		TH_Flag=0;
		F=1;
		//OP_F=0;
		V_Value=V_Value_Temp;
		DA_Convert(V_Value);
		for(i=0;i<40;i++) Delay_1(250);
		Test_Data[5]=0;
		Test_Data[6]=0;
		TH0=T0_Time/256;//0.5ms
		TL0=T0_Time%256;
		//IE0=0;
		TR0=1;
		//EX0=1;
		while(V_Up)
		{
			DA_Convert(V_Value);
			while(!TF0);
			TF0=0;
			TH0=T0_Time/256;//0.5ms
			TL0=T0_Time%256;
/*			if(EXT_Enbale) 
			{
				EX0=1;//Enable External 0 Interrupt.
				EXT_Enbale=0;
			}*/
			if((NO_TIME==0)&&F)
			{
				F=0;
				if(Page_Val==6)
				{
					Test_Data[5]=(float)(V_Value+REPAIR_1)*2.4*MULTI_V/4.095;
				}	
				else
				{
					p_v=V_Value+REPAIR_1;				
					Test_Data[6]=(float)p_v*2.4*MULTI_V/4.095;
				}
				
				IE0=0;//clear external 0 flag;
				EX0=1;//Enable External 0 Interrupt.
				//EXT_Enbale=1;
			}
			//V_Value-=2;
			V_Value--;
			if(TH_Flag||(V_Value<=10)) 
			{
				EX0=0;
				TR0=0;
				V_Up=0;
			}
/*			if((OP_F==0)&&TH_Flag) 
			{
				EX0=0;
				OP_F=1;
			}
			if(V_Value<=10) 
			{
				
				TR0=0;
				EX0=0;
				//EA=0;
				V_Up=0;
			}*/
		}
		DA_Convert(0);
		if(TH_Flag)
		{
			if((Test_Data[5]>=Comp_Data[10])&&(Test_Data[5]<=Comp_Data[11])) SetP_Data[4]=14;//ok
			else SetP_Data[4]=13;//ng
			Num_Convert(Test_Data[5],4);
			//Tests_Data(SetP_Data,5,6);
			if((Page_Val==0)||(Page_Val==6)) Tests_Data(SetP_Data,5,6);
			else if(Page_Val==3) Tests_Data(SetP_Data,5,7);
			if(SetP_Data[4]==13)
		 	{
				NG_Flag=1;
				IO_A&=0xF7;
				IO_C&=0xFD;
			}
			if(Test_Data[6]>=Comp_Data[12]&&Test_Data[6]<Comp_Data[13]) SetP_Data[4]=14;//ok
			else 
			{
				SetP_Data[4]=13;//ng
				IO_A&=0xF7;
				IO_C&=0xFC;
			}
			Num_Convert(Test_Data[6],4);
			//Tests_Data(SetP_Data,5,7);
			if((Page_Val==0)||(Page_Val==6)) Tests_Data(SetP_Data,5,7);
			else if(Page_Val==3) Tests_Data(SetP_Data,5,8);
			if((SetP_Data[4]==13)||(NG_Flag==1))
		 	{
				//TR0=0;
				//IO_B|=0x60;
				IO_B=0xFF;
				//V_Value=0;
				DA_Convert(0);

				return(0);
			}
		}
		else
		{
			if(Page_Val==6) Test_Data[6]=Test_Data[5];
			else Test_Data[5]=0;
			//Test_Data[6]=d_v*24/40.95;
			if((Test_Data[5]>=Comp_Data[10])&&(Test_Data[5]<=Comp_Data[11])) SetP_Data[4]=14;//ok
			else SetP_Data[4]=13;//ng
			Num_Convert(Test_Data[5],4);
		//	Tests_Data(SetP_Data,5,6);
			if((Page_Val==0)||(Page_Val==6)) Tests_Data(SetP_Data,5,6);
			else if(Page_Val==3) Tests_Data(SetP_Data,5,7);
			if(SetP_Data[4]==13)
		 	{
				NG_Flag=1;
				IO_A&=0xF7;
				IO_C&=0xFD;
			}
			if((Test_Data[6]>=Comp_Data[12])&&(Test_Data[6]<Comp_Data[13])) SetP_Data[4]=14;//ok
			else 
			{
				SetP_Data[4]=13;//ng
				IO_A&=0xF7;
				IO_C&=0xFC;
			}
			Num_Convert(Test_Data[6],4);
			//Tests_Data(SetP_Data,5,7);
			if((Page_Val==0)||(Page_Val==6)) Tests_Data(SetP_Data,5,7);
			else if(Page_Val==3) Tests_Data(SetP_Data,5,8);
			if((SetP_Data[4]==13)||(NG_Flag==1))
		 	{
				IO_B=0xFF;
				//V_Value=0;
				DA_Convert(0);
				return(0);
			}			
		}
		IO_B|=0x08;
		for(i=0;i<20;i++) Delay_1(250);
		return(1);
	}

	bit PDT_Test(void)
	{
		unsigned char i;
		for(i=0;i<11;i++)
		{
			SetP_Data[i]=15;
		}
		Test_Data[7]=9999;
		Test_Data[9]=9999;
	
		IO_B&=0xF7;
		AD_COM=0x0E;//coil cut on;
		for(i=0;i<20;i++) Delay_1(250);
		TMOD=0x22;//T1 IS Method 2; T0 is method 2;
		TH0=T0_T_10;//10us
		TL0=T0_T_10;	
		T_Count=0;
		DA_Convert(Comp_Data_T[0]*409.5/(2.4*MULTI_V));
		for(i=0;i<20;i++) Delay_1(250);	
		IO_B&=0x7F;	
		for(i=0;i<20;i++) Delay_1(250);	
		IO_B|=0x80;	
		for(i=0;i<30;i++) Delay_1(250);	
		IO_B&=0x7F;	
		TR0=1;
		while(!NO_TIME)
		{
			while(!TF0);
			TF0=0;
			T_Count++;
			if(T_Count==9999) break;
			//if(T_Count==2000) break;			
		}
		TR0=0;
		Test_Data[7]=T_Count*MULTI;
		if((Test_Data[7]>(Comp_Data[14]*10))&&(Test_Data[7]<=(Comp_Data[15]*10))) SetP_Data[4]=14;//ok
		else 
		{
			SetP_Data[4]=13;//ng
			IO_A&=0xEF;
			IO_C&=0xFD;
		}
		Num_Convert(Test_Data[7],4);
	//	Tests_Data(SetP_Data,5,8);
		if((Page_Val==0)||(Page_Val==5)||(Page_Val==6)) Tests_Data(SetP_Data,5,8);
		else if(Page_Val==4) Tests_Data(SetP_Data,5,4);
		if(SetP_Data[4]==13)
		{
			//IO_B|=0x88;
			IO_B=0xFF;
			AD_COM=0x0F;//coil cut off;
			DA_Convert(0);

			return(0);
		}
		for(i=0;i<20;i++) Delay_1(250);

		T_Count=0;	
		TH0=T0_T_10;//10us
		TL0=T0_T_10;	
		//DA_Convert(0);
		IO_B|=0x80;	
		TR0=1;
		while(NO_TIME)
		{
			while(!TF0);
			TF0=0;
			T_Count++;
			if(T_Count==9999) break;
			//if(T_Count==2000) break;
		}
		TR0=0;
		//AD_COM=0x0F;
		Test_Data[9]=T_Count*MULTI;
		if((Test_Data[9]>(Comp_Data[18]*10))&&(Test_Data[9]<=(Comp_Data[19]*10))) SetP_Data[4]=14;//ok
		else SetP_Data[4]=13;//ng
		Num_Convert(Test_Data[9],4);
		//Tests_Data(SetP_Data,5,10);
		if((Page_Val==0)||(Page_Val==5)||(Page_Val==6)) Tests_Data(SetP_Data,5,10);
		else if(Page_Val==4) Tests_Data(SetP_Data,5,6);
		if(SetP_Data[4]==13)
		{
			//IO_B|=0x88;
			IO_B=0xFF;
			AD_COM=0x0F;//coil cut off;
			DA_Convert(0);
			IO_A&=0xBF;
			IO_C&=0xFD;
			return(0);
		}
		for(i=0;i<20;i++) Delay_1(250);		
		return(1);
	}

	bit BT_Test(void)
	{
		bit B_Flag=1;
		unsigned int y=0,i=0,m=0;
		for(m=0;m<11;m++)
		{
			SetP_Data[m]=15;
		}
		Test_Data[8]=9999;
		Test_Data[10]=9999;
		TMOD=0x22;//T1 IS Method 2; T0 is method 2;
		TH0=T0_T_30;//30us
		TL0=T0_T_30;	
		T_Count=0;
		TR0=0;		
		i=0;
		IO_B&=0x7F;
		while(!NO_TIME)
		{
			i++;
			if(i==30000)
			{
				//IO_B=0xFF;
		 		//return(0);
				break;
			}

		}
		TR0=1;
		while(TR0)
		{
			if(NO_TIME&&B_Flag)
		 	{
				B_Flag=!B_Flag;
				y=T_Count;
			}
			if((NO_TIME==0)&&(B_Flag==0)) B_Flag=!B_Flag;
			while(!TF0);
			TF0=0;
			T_Count++;
			if((y+1000)<=T_Count) TR0=0;
		}
		Test_Data[8]=y*MULTI_B;
		if((Test_Data[8]>=(Comp_Data[16]*10))&&(Test_Data[8]<=(Comp_Data[17]*10))) SetP_Data[4]=14;//ok
		else SetP_Data[4]=13;//ng
		Num_Convert(Test_Data[8],4);
		//Tests_Data(SetP_Data,5,9);
		if((Page_Val==0)||(Page_Val==5)||(Page_Val==6)) Tests_Data(SetP_Data,5,9);
		else if(Page_Val==4) Tests_Data(SetP_Data,5,5);
		if(SetP_Data[4]==13)
		{
			//IO_B|=0x88;
			IO_B=0xFF;
			AD_COM=0x0F;//coil cut off;
			DA_Convert(0);
			IO_A&=0xDF;
			IO_C&=0xFD;
			return(0);
		}
		for(m=0;m<20;m++) Delay_1(250);

		B_Flag=1;
		TH0=T0_T_30;//100us
		TL0=T0_T_30;	
		T_Count=0;
		y=0;		
		i=0;
		if(Comp_Data_T[2]==12)//1c
		{
			IO_B|=0x80;
			while(!NC_TIME)
			{
				i++;
				if(i==30000)
				{
					//IO_B=0xFF;
					break;
			 	}

			}
			TR0=1;
			while(TR0)
			{
				if(NC_TIME&&B_Flag)
		 		{
					B_Flag=~B_Flag;
					y=T_Count;
				}
				if((NC_TIME==0)&&(B_Flag==0)) B_Flag=~B_Flag;
				while(!TF0);
				TF0=0;
				T_Count++;
				if((y+100)<=T_Count) TR0=0;
			}
		}
		Test_Data[10]=y*MULTI_B;
		if((Test_Data[10]>=(Comp_Data[20]*10))&&(Test_Data[10]<=(Comp_Data[21]*10))) SetP_Data[4]=14;//ok
		else SetP_Data[4]=13;//ng
		Num_Convert(Test_Data[10],4);
		//Tests_Data(SetP_Data,5,11);
		if((Page_Val==0)||(Page_Val==5)||(Page_Val==6)) Tests_Data(SetP_Data,5,11);
		else if(Page_Val==4) Tests_Data(SetP_Data,5,7);
		if(SetP_Data[4]==13)
		{
			IO_A&=0x7F;
			IO_C&=0xFD;
			IO_B=0xFF;
			AD_COM=0x0F;//coil cut off;
			DA_Convert(0);
			return(0);
		}
		AD_COM=0x0F;//coil cut off;
		IO_B|=0x9F;
		DA_Convert(0);
		return(1);
	}

⌨️ 快捷键说明

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