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

📄 pull in test.c

📁 此仪器可以测试继电器的吸合电压
💻 C
字号:
     #include <reg51.h>
     #define uint unsigned int
     #define uchar unsigned char
     //#define VOL_CON 4095
     #define VOL_CON 3412
     #define TIME_CON_T0 240
	 #define TIME_CON_T1 1000
     sbit S_NO=P1^0;
	 sbit S_NC=P1^1;
	 sbit HOLD_D=P1^2;
	 sbit FAST=P1^3;
	 sbit MID=P1^4;
	 sbit SLOW=P1^5;
	 sbit SQR=P1^6;
	 sbit RMP=P1^7;
	 sbit PULL_THR_IN=P3^2;
	 sbit D=P3^4;
	 sbit AB=P3^5;
	 sbit A=P3^6;
     uchar SPEED;
	 uint Z=0;
	 uint DIGIT_VAL=0;
     static bit RISE=0;
	 static char WAVE;
	 static uint Y=0;
     static bit NO_JUGHT=0;
	 void DELAY(uint A);
	 void T0_SRV(void);
	 void T1_SRV(void);
     void VOLT_OUT(void);
	 void HOLD(void);
     void SCAN_INPUT(void);
	 void main(void)
	 {
	     bit data START=0;
	     P0=0;
		 P2=0;
		 TMOD=0X11;
		 ET0=1;
		 ET1=1;
		 EA=1;
		 PT1=1;
		 HOLD_D=1;
		 while(1)
		 {
		     SCAN_INPUT();
			 VOLT_OUT();
			 if(START==0&&(SQR==0||RMP==0))
			 {
                 TL0=-(SPEED*TIME_CON_T0)%256;
		         TH0=-(SPEED*TIME_CON_T0)/256;
				 TL1=-TIME_CON_T1%256;
				 TH1=-TIME_CON_T1/256;
				 TR0=1;
                 START=1;
			 }
			 if(SQR!=0&&RMP!=0)
			 {
			     START=0;
				 DIGIT_VAL=0;
			 }
         }
	 }
     void DELAY(uint A)
	 {
		 TR0=0;
		 TR1=1;
         while(A!=Z);
         TR1=0;		 
		 TR0=1;
		 Z=0;
	 }
     void T1_SRV(void) interrupt 3 using 2
	 {
	     TL1=-TIME_CON_T1%256;
	     TH1=-TIME_CON_T1/256;
         Z++;
	 }
	 void T0_SRV(void) interrupt 1 using 1
	 {
	     TL0=-(SPEED*TIME_CON_T0)%256;
		 TH0=-(SPEED*TIME_CON_T0)/256;
		 switch(WAVE)
		 {
			 case 0:
			 {
			     if(Y==VOL_CON)
				 { 
				     DIGIT_VAL=DIGIT_VAL^0XFFFF;
					 Y=0;
				 }
				 else
				 {
				     Y++;
				 }
			  } break;
		     case 1:
			 {
                 if(RISE==0)
		         {	     
                     if(DIGIT_VAL>=VOL_CON)
			         {
			             RISE=1;
						 //DELAY(1);
			         }
			         else
			         {
			             DIGIT_VAL++;
			         }
		         }
		         if(RISE==1)
		         {		     
                     if(DIGIT_VAL==0)
			         {
			             RISE=0;
						 //DELAY(1);
			         }
			         else
			         {
			             DIGIT_VAL--;
			         }
		         }
			 } break;
		 }
	 }
     void VOLT_OUT(void)
	 {
	     P0=DIGIT_VAL%256;
		 P2=DIGIT_VAL/256;		 
	 }
	 void HOLD(void)
	 {
	     HOLD_D=0;
		 DELAY(700);
		 HOLD_D=1;
	 }
	 void SCAN_INPUT(void)
	 {
         if(FAST==0) SPEED=1;
		 if(MID==0) SPEED=2;
		 if(SLOW==0) SPEED=3;
         if(SQR==0)
		 {
		     if(WAVE==1) DIGIT_VAL=0;
		     WAVE=0;
			 HOLD_D=0;
		 }
	     if(RMP==0)
		 {
	         WAVE=1;
	         if(D==0)
		     {
			     if(PULL_THR_IN==0)
				 {
     		         HOLD();
				 }
	         }
		     if(AB==0)
		     {
			     if(NO_JUGHT==0)
				 {
		             if(S_NO==0)
			         {
					     NO_JUGHT=1;
		                 HOLD();
		             }
				 }
				 if(NO_JUGHT==1)
				 {
				     if(S_NO==1)
					 {
					     NO_JUGHT=0;
						 HOLD();
					 }
				 }
		     }
		     if(A==0)
		     {
			     if(NO_JUGHT==0)
				 {
		             if(S_NO==0)
			         {
					     NO_JUGHT=1;
		                 HOLD();
		             }
				 }
				 if(NO_JUGHT==1)
				 {
				     if(S_NO==1)
					 {
					     NO_JUGHT=0;
					 }
				 }
		     }
		 }
	 }

⌨️ 快捷键说明

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