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

📄 fouraxis.c

📁 四轴控制电机驱动的源程序,在编译环境中已通过
💻 C
📖 第 1 页 / 共 5 页
字号:
							 else if(teaching_flag==0)
							  {
                                RCUNT_position=transferascii_to_hex(read_buff);
						        temp_position=read_RCUNT1(Y);
						        RCUNT_position=RCUNT_position-temp_position;
                                in_positioning(STAUD,Y,2,RCUNT_position);
                                while((PIND&IFB)==0);
                                DSPXOTPB=DSPXIOPB&0xFD;//set busy flag
							    while((PINE&BSYy)==0);
                                teaching_flag=1;							  
							  }  							 
						   }
				          break;		  
				  case XP:disp_string_1(0,"XP");
						  transmit2_cmd(temp_save);
						  if((f2_function==0)&&((PINE&BSYX)!=0)&&(screen_flag==0x22)&&(position_flag==1))
						   {
						     if(teaching_flag!=0)
							  {
						        if(slow_flag!=0)
							     {
							       temp_position=500L;
							       in_positioning(STAUD,X,2,temp_position);
							     }
							    else if(slow_flag==0)
							     {
							       temp_position=5L;
							       in_positioning(STAUD,X,2,temp_position);
							     }
							    while((PIND&IFB)==0);
							    DSPXOTPB=DSPXIOPB&0xFE;//set busy flag
						        while((PINE&BSYX)==0);
							 
							    temp_position=read_RCUNT1(X);
							    transferhex_to_ascii(temp_position);
				                transmit1_cmd("400DATA:               \r");
						        transmit1_cmd(read_buff);
								input_initial=1;
								xyz_axis_flag=1;
                              }
							 else if(teaching_flag==0)
							  {
                                RCUNT_position=transferascii_to_hex(read_buff);
						        temp_position=read_RCUNT1(X);
						        RCUNT_position=RCUNT_position-temp_position;
                                in_positioning(STAUD,X,2,RCUNT_position);
                                while((PIND&IFB)==0);
                                DSPXOTPB=DSPXIOPB&0xFE;//set busy flag
							    while((PINE&BSYX)==0);
                                teaching_flag=1;							  
							  }  							 
						   }
				          break;
				  case XN:disp_string_1(0,"XN");
						  transmit2_cmd(temp_save);
						  if((f2_function==0)&&((PINE&BSYX)!=0)&&(screen_flag==0x22)&&(position_flag==1))
						   {
						     if(teaching_flag!=0)
							  {
						        if(slow_flag!=0)
							     {
							       temp_position=-500L;
							       in_positioning(STAUD,X,2,temp_position);
							     }
							    else if(slow_flag==0)
							     {
							       temp_position=-5L;
							       in_positioning(STAUD,X,2,temp_position);
							     }
							    while((PIND&IFB)==0);
							    DSPXOTPB=DSPXIOPB&0xFE;//set busy flag
						        while((PINE&BSYX)==0);
							 
							    temp_position=read_RCUNT1(X);
							    transferhex_to_ascii(temp_position);
				                transmit1_cmd("400DATA:               \r");
						        transmit1_cmd(read_buff);
								input_initial=1;
								xyz_axis_flag=1;
                              }
							 else if(teaching_flag==0)
							  {
                                RCUNT_position=transferascii_to_hex(read_buff);
						        temp_position=read_RCUNT1(X);
						        RCUNT_position=RCUNT_position-temp_position;
                                in_positioning(STAUD,X,2,RCUNT_position);
                                while((PIND&IFB)==0);
                                DSPXOTPB=DSPXIOPB&0xFE;//set busy flag
							    while((PINE&BSYX)==0);
                                teaching_flag=1;							  
							  }  							 
						   }
				          break;
				  case ENT:if(f2_function==0)
				             {
							   save_parameter_data();
							 } 
				          break;
				  case SLOW:disp_string_1(0,"SLOW");
						  transmit2_cmd(temp_save);
						  slow_flag=~slow_flag;
                   		  if(slow_flag==0xFF) 
                   		   {
                   		     transmit1_cmd("119L\r");
                   		     transmit1_cmd("119on\r");
                   		   }
                   		  if(slow_flag==0X00)
                   		   {
                   		     transmit1_cmd("119 \r");
                   		     transmit1_cmd("119off\r");
                   		   }
						  break;		  
				  case ESC:	f1_function=0;
	                      f2_function=1;
	                      f3_function=0;
 			              transmit1_cmd("100AUTO TRIM MACHINE  \r");
	                      transmit1_cmd("200                    \r");
	                      transmit1_cmd("300COLIBRI AUTOMATIION \r");
	                      transmit1_cmd("400   WELCOME   YOU!   \r");
						  transmit1_cmd("100off\r");
  						  break;
				  case QP:disp_string_1(0,"QP");
						  transmit2_cmd(temp_save);

                          original_return1(U,2,1);
                          temp_position=read_RCUNT1(U);//@@@
                		  RCUNT_position=read_RCUNT2(U);//@@@
                		  CLRU_CLEAR();//@@@
                		  CLRU_SET();//@@@
                		  temp_position=read_RCUNT1(U);//@@@
                		  RCUNT_position=read_RCUNT2(U);//@@@
							
  	  					  in_positioning(STAUD,U,2,40000L);

                		  temp_position=read_RCUNT1(U);//@@@
                		  RCUNT_position=read_RCUNT2(U);//@@@
						  
						  while((PINE&BSYU)==0);
				          break;
				  case ZP:disp_string_1(0,"ZP");
						  transmit2_cmd(temp_save);
						  if((f2_function==0)&&((PINE&BSYZ)!=0)&&(screen_flag==0x42)&&(position_flag==1))
						   {
						     if(teaching_flag!=0)
							  {
						        if(slow_flag!=0)
							     {
							       temp_position=320L;
							       in_positioning(STAUD,Z,2,temp_position);
							     }
							    else if(slow_flag==0)
							     {
							       temp_position=3L;
							       in_positioning(STAUD,Z,2,temp_position);
							     }
							    while((PIND&IFB)==0);
							    DSPXOTPB=DSPXIOPB&0xFB;//set busy flag
						        while((PINE&BSYZ)==0);
							 
							    temp_position=read_RCUNT1(Z);
							    transferhex_to_ascii(temp_position);
				                transmit1_cmd("400DATA:               \r");
						        transmit1_cmd(read_buff);
								input_initial=1;
								xyz_axis_flag=1;
                              }
							 else if(teaching_flag==0)
							  {
                                RCUNT_position=transferascii_to_hex(read_buff);
						        temp_position=read_RCUNT1(Z);
						        RCUNT_position=RCUNT_position-temp_position;
                                in_positioning(STAUD,Z,2,RCUNT_position);
                                while((PIND&IFB)==0);
                                DSPXOTPB=DSPXIOPB&0xFB;//set busy flag
							    while((PINE&BSYZ)==0);
                                teaching_flag=1;							  
							  }  							 
						   }
				          break;		  
				  case YP:disp_string_1(0,"YP");
						  transmit2_cmd(temp_save);
						  if((f2_function==0)&&((PINE&BSYy)!=0)&&(screen_flag==0x32)&&(position_flag==1))
						   {
						     if(teaching_flag!=0)
							  {
						        if(slow_flag!=0)
							     {
							       temp_position=320L;
							       in_positioning(STAUD,Y,2,temp_position);
							     }
							    else if(slow_flag==0)
							     {
							       temp_position=3L;
							       in_positioning(STAUD,Y,2,temp_position);
							     }
							    while((PIND&IFB)==0);
							    DSPXOTPB=DSPXIOPB&0xFD;//set busy flag
						        while((PINE&BSYy)==0);
							 
							    temp_position=read_RCUNT1(Y);
							    transferhex_to_ascii(temp_position);
				                transmit1_cmd("400DATA:               \r");
						        transmit1_cmd(read_buff);
								input_initial=1;
								xyz_axis_flag=1;
                              }
							 else if(teaching_flag==0)
							  {
                                RCUNT_position=transferascii_to_hex(read_buff);
						        temp_position=read_RCUNT1(Y);
						        RCUNT_position=RCUNT_position-temp_position;
                                in_positioning(STAUD,Y,2,RCUNT_position);
                                while((PIND&IFB)==0);
                                DSPXOTPB=DSPXIOPB&0xFD;//set busy flag
							    while((PINE&BSYy)==0);
                                teaching_flag=1;							  
							  }  							 
						   }
				          break;
				  default:disp_string_1(0,"default");
						  transmit2_cmd(temp_save);
						  break;
				}
			 }
	   }
	  while((DSPYIOPB&0x80)==0x00)
	   {  
		 Delay(10);
		 if((DSPYIOPB&0x80)!=0x00) break; 
	     key_interrupt_flag=1;
		 switch(~DSPYIOPB&0x70)
		  {
            case 0x10:                  //x axis
			         temp=~DSPYIOPB&0x0F;
					 if(temp==0)
					  {
                        if((DSPXIOPB&0x01)==0x01)
                         {
	                       RCUNT_speed=X_home_speed/servo_multiplication_factor;
	                       RFHorPRFH_setup(X,2,RCUNT_speed);
                           original_return1(X,2,1);
						   original_flag=original_flag|0x01;
                           while((PIND&IFB)==0);
                           DSPXOTPB=DSPXIOPB&0xFE;//set busy flag
						   RCUNT_speed=transferascii_speed(0,max_speed_x);
	                       RCUNT_speed=RCUNT_speed/servo_multiplication_factor;
	                       RFHorPRFH_setup(X,2,RCUNT_speed);
                         }
					  }
					 else if((temp>=1)&&(temp<=15))
					  {
                        k=x_position_0+temp*20;
											  
                        if((DSPXIOPB&0x01)==0x01)
                         {
                           RCUNT_position=transferascii_position(0,k);
						   temp_position=read_RCUNT1(X);
						   RCUNT_position=RCUNT_position-temp_position;
                           in_positioning(STAUD,X,2,RCUNT_position);
						   
						   temp_position=read_RCUNT1(X);//@@@@@
			               RCUNT_position=read_RCUNT2(X);//@@@@@

                           while((PIND&IFB)==0);
                           DSPXOTPB=DSPXIOPB&0xFE;//set busy flag
                         }
					  } 
			         break;
			case 0x20:                  //y1 axis
			         temp=~DSPYIOPB&0x0F;
					 if(temp==0)
					  {
                        if((DSPXIOPB&0x02)==0x02)
                         {
	                       RCUNT_speed=Y1_home_speed/step_multiplication_factor;
	                       RFHorPRFH_setup(Y,2,RCUNT_speed);
                           original_return1(Y,2,1);
						   original_flag=original_flag|0x02;
                           while((PIND&IFB)==0);
                           DSPXOTPB=DSPXIOPB&0xFD;//set busy flag
						   RCUNT_speed=transferascii_speed(0,max_speed_y1);
	                       RCUNT_speed=RCUNT_speed/step_multiplication_factor;
	                       RFHorPRFH_setup(Y,2,RCUNT_speed);
                         }
					  }
					 else if((temp>=1)&&(temp<=15))
					  {
                        k=y1_position_0+temp*20;
											  
                        if((DSPXIOPB&0x02)==0x02)
                         {
                           RCUNT_position=transferascii_position(0,k);
						   temp_position=read_RCUNT1(Y);
						   RCUNT_position=RCUNT_position-temp_position;
                           in_positioning(STAUD,Y,2,RCUNT_position);

						   temp_position=read_RCUNT1(Y);//@@@@@
			               RCUNT_position=read_RCUNT2(Y);//@@@@@

                           while((PIND&IFB)==0);
                           DSPXOTPB=DSPXIOPB&0xFD;//set busy flag
                         }
					  } 
			         break;
			case 0x40:                  //y2 axis
			         temp=~DSPYIOPB&0x0F;
					 if(temp==0)
					  {
                        if((DSPXIOPB&0x04)==0x04)
                         {
	                       RCUNT_speed=Y2_home_speed/step_multiplication_factor;
	                       RFHorPRFH_setup(Z,2,RCUNT_speed);
                           original_return1(Z,2,1);
						   original_flag=original_flag|0x04;
                           while((PIND&IFB)==0);
                           DSPXOTPB=DSPXIOPB&0xFB;//set busy flag
						   RCUNT_speed=transferascii_speed(0,max_speed_y2);
	                       RCUNT_speed=RCUNT_speed/step_multiplication_factor;
	                       RFHorPRFH_setup(Z,2,RCUNT_speed);
                         }
					  }
					 else if((temp>=1)&&(temp<=15))
					  {
                        k=y2_position_0+temp*20;
											  
                        if((DSPXIOPB&0x04)==0x04)
                         {
                           RCUNT_position=transferascii_position(0,k);
						   temp_position=read_RCUNT1(Z);
						   RCUNT_position=RCUNT_position-temp_position;
                           in_positioning(STAUD,Z,2,RCUNT_position);

						   temp_position=read_RCUNT1(Z);//@@@@@
			               RCUNT_position=read_RCUNT2(Z);//@@@@@

                           while((PIND&IFB)==0);
                           DSPXOTPB=DSPXIOPB&0xFB;//set busy flag
                         }
					  } 
			         break;
			case 0x30:                  //x axis and y1 axis
			         break;
			case 0x50:                  //x axis and y2 axis
			         break;
			case 0x60:                  //y1 axis and y2 axis
			         temp=~DSPYIOPB&0x0F;
					 if(temp==0)
					  {
                        if((DSPXIOPB&0x02)==0x02)
                         {
 	                       RCUNT_speed=Y1_home_speed/step_multiplication_factor;
	                       RFHorPRFH_setup(Y,2,RCUNT_speed);
                           original_return1(Y,2,1);
						   original_flag=original_flag|0x02;
                           while((PIND&IFB)==0);
                           DSPXOTPB=DSPXIOPB&0xFD;//set busy flag
						   RCUNT_speed=transferascii_speed(0,max_speed_y1);
	                       RCUNT_speed=RCUNT_speed/step_multiplication_factor;
	                       RFHorPRFH_setup(Y,2,RCUNT_speed);
                         }
                        if((DSPXIOPB&0x04)==0x04)
                         {
 	                       RCUNT_speed=Y2_home_speed/step_multiplication_factor;
	                       RFHorPRFH_setup(Z,2,RCUNT_speed);
                           original_return1(Z,2,1);
						   original_flag=original_flag|0x04;
                           while((PIND&IFB)==0);
                           DSPXOTPB=DSPXIOPB&0xFB;//set busy flag
						   RCUNT_speed=transferascii_speed(0,max_speed_y2);
	                       RCUNT_speed=RCUNT_speed/step_multiplication_factor;
	                       RFHorPRFH_setup(Z,2,RCUNT_speed);
                         }
					  }
					 else if((temp>=1)&&(temp<=15))
					  {
                        k=y1_position_0+temp*20;
											  
                        if((DSPXIOPB&0x02)==0x02)
                         {
                           RCUNT_position=transferascii_position(0,k);
						   temp_position=read_RCUNT1(Y);
						   RCUNT_position=RCUNT_position-temp_position;
                           in_positioning(STAUD,Y,2,RCUNT_position);
                           while((PIND&IFB)==0);
                           DSPXOTPB=DSPXIOPB&0xFD;//set busy flag
                         }
						 
                        k=y2_position_0+temp*20;
											  
                        if((DSPXIOPB&0x04)==0x04)
                         {
                           RCUNT_position=transferascii_position(0,k);
						   temp_position=read_RCUNT1(Z);
						   RCUNT_position=RCUNT_position-temp_position;
                           in_positioning(STAUD,Z,2,RCUNT_position);
                           while((PIND&IFB)==0);
                           DSPXOTPB=DSPXIOPB&0xFB;//set busy flag
                         }
					  } 
			         break;
			case 0x70:                  //x axis, y1 axis and y2 axis
			         switch(~DSPYIOPB&0x0F)
					   {
					     case 0x00:                     //home
                                 if((DSPXIOPB&0x01)==0x01)
								  {

	                                RCUNT_speed=X_home_speed/servo_multiplication_factor;
	                                RFHorPRFH_setup(X,2,RCUNT_speed);
						            original_return1(X,2,1);
									original_flag=original_flag|0x01;
								    while((PIND&IFB)==0);
								    DSPXOTPB=DSPXIOPB&0xFE;//set busy flag
									RCUNT_speed=transferascii_speed(0,max_speed_x);
	                                RCUNT_speed=RCUNT_speed/servo_multiplication_factor;
	                                RFHorPRFH_setup(X,2,RCUNT_speed);
								  }
                                 if((DSPXIOPB&0x02)==0x02)
								  {
	                                RCUNT_speed=Y1_home_speed/step_multiplication_factor;
	                                RFHorPRFH_setup(Y,2,RCUNT_speed);
						            original_return1(Y,2,1);
									original_flag=original_flag|0x02;
								    while((PIND&IFB)==0);
								    DSPXOTPB=DSPXIOPB&0xFD;//set busy flag
									RCUNT_speed=transferascii_speed(0,max_speed_y1);
	                                RCUNT_speed=RCUNT_speed/step_multiplication_factor;
	                                RFHorPRFH_setup(Y,2,RCUNT_speed);
								  }
                                 if((DSPXIOPB&0x04)==0x04)
								  {
	                              

⌨️ 快捷键说明

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