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

📄 fouraxis.c

📁 四轴控制电机驱动的源程序,在编译环境中已通过
💻 C
📖 第 1 页 / 共 5 页
字号:
			 {
               if((input_dig_num==14)&&(repeat_flag==1)) 
                  input_dig_num++;
               read_buff[input_dig_num+3]=0x0D;
               read_buff[input_dig_num+4]='\0';
			   teaching_flag=0;
			 }
            k=y1_position_0+position_num*20;
            external_EEPROM_write(0,k,read_buff);
            transmit1_cmd("405on\r");
         }
     }
    else if(screen_flag==0x42)	
      {
        if(position_flag==1)
          {
            if(xyz_axis_flag==0)
			 {
               if((input_dig_num==14)&&(repeat_flag==1)) 
                  input_dig_num++;
               read_buff[input_dig_num+3]=0x0D;
               read_buff[input_dig_num+4]='\0';
			   teaching_flag=0;
			 }
            k=y2_position_0+position_num*20;
            external_EEPROM_write(0,k,read_buff);
            transmit1_cmd("405on\r");
         }
     }
	input_initial=0; 
	input_dig_num=0;
    repeat_flag=0;
   }
}

void transferhex_to_ascii(long temp_position)
{
   unsigned char i,j,temp,buff[25];
   long k;
   
   k=temp_position;
   for(j=1;j<10&&k!=0;j++)   //temp_position max value 134217727
    {
	  temp=k%10;
	  k=k/10;
	  buff[j]=temp+0x30;
	}
   for(i=3,j=j-1;j>=1;j--,i++)
    {
	  read_buff[i]=buff[j];
	}	
   read_buff[i]=0x0D;
   read_buff[i+1]='\0';	
   read_buff[0]=0x34;
   read_buff[1]=0x30;
   read_buff[2]=0x35;
}

long transferascii_to_hex(unsigned char data[25])
{
   long temp_data;
   unsigned char i;

   temp_data=0;
   for(i=3;data[i]!=0x0D;i++)
     {							
	   if(i==21)
	    {
             temp_data=0;
		     break;
		}
       temp_data=temp_data*10+(data[i]-0x30);
     }
   if(data[i+1]!='\0')  temp_data=0;
   return temp_data;
}

long transferascii_position(unsigned char block_number,unsigned short EEPROM_adrr)
{
   long temp_data;
   unsigned short i;

   if(block_number==0)         //block 0
      PE2_CLEAR();  
   else if(block_number==1)    //block 1
	  PE2_SET();
  
   temp_data=0;
   for(i=EEPROM_adrr;ESTORAGE[i]!=0x0D;i++)
     {							
	   if(i==EEPROM_adrr+18)
	    {
             temp_data=0;
		     break;
		}
       temp_data=temp_data*10+(ESTORAGE[i]-0x30);
     }
   if(ESTORAGE[i+1]!='\0')  temp_data=0;
   return temp_data;
}

unsigned long transferascii_speed(unsigned char block_number,unsigned short EEPROM_adrr)
{
   unsigned long temp_data;
   unsigned short i;

   if(block_number==0)         //block 0
      PE2_CLEAR();  
   else if(block_number==1)    //block 1
	  PE2_SET();
  
   temp_data=0;
   for(i=EEPROM_adrr;ESTORAGE[i]!=0x0D;i++)
     {							
	   if(i==EEPROM_adrr+18)
	    {
             temp_data=0;
		     break;
		}
       temp_data=temp_data*10+(ESTORAGE[i]-0x30);
     }
   if(ESTORAGE[i+1]!='\0')  temp_data=0;
   return temp_data;
}

void clear_save_buff(void)
{
     unsigned char i;

     for(i=0;i<4;i++)
      {
        save_buff[i]=0x0D;
	  }
}

void shift_key(void)
{  
     if((save_buff[0]==0)&&(save_buff[1]==0)&&(save_buff[2]==0x08))
	   { 
         shift_flag=~shift_flag;
		 clear_save_buff();
		 if(shift_flag==0xFF) 
		  {
		    transmit1_cmd("119U\r");
		    transmit1_cmd("119on\r");
		  }
		 if(shift_flag==0X00)
		  {
		    transmit1_cmd("119 \r");
		    transmit1_cmd("119off\r");
		  }
	   }
}

unsigned char key_vaule(void)
{
   unsigned char temp;
   
   if((save_buff[0]==0x80)&&(save_buff[1]==0)&&(save_buff[2]==0))
     {
 	   clear_save_buff();
	
	   if(shift_flag==0) 
	     return (0x2E);
	   else return (QN);
     }  	
  else if((save_buff[0]==0x40)&&(save_buff[1]==0)&&(save_buff[2]==0))
     {
 	   clear_save_buff();
	
	   if(shift_flag==0) 
	     return (0x33);
	   else return (ZN);
     }  	
  else if((save_buff[0]==0x20)&&(save_buff[1]==0)&&(save_buff[2]==0))
     {
 	   clear_save_buff();
	
	   if(shift_flag==0) 
	     return (0x32);
	   else return (YN);
     }  	
   else if((save_buff[0]==0x10)&&(save_buff[1]==0)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x34);
	  else return (XP);
    }  	
   else if((save_buff[0]==0x08)&&(save_buff[1]==0)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x31);
	  else return (XN);
    }  	
   else if((save_buff[0]==0x04)&&(save_buff[1]==0)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (ENT);
	  else return (ENT);
    }  	
   else if((save_buff[0]==0x02)&&(save_buff[1]==0)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x2C);
	  else return (0x2C);
    }  	
   else if((save_buff[0]==0x01)&&(save_buff[1]==0)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x30);
	  else return (SLOW);
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0x80)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (F1);
	  else return (F1);
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0x40)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (F2);
	  else return (F2);
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0x20)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (F3);
	  else return (F3);
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0x10)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (F4);
	  else return (F4);
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0x08)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (ESC);
	  else return (ESC);
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0x04)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x2D);
	  else return (QP);
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0x02)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x36);
	  else return (ZP);
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0x01)&&(save_buff[2]==0))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x35);
	  else return (YP);
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0)&&(save_buff[2]==0x40))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x49);      //I ASCII character
	  else return (0x4C);   //L ASCII character
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0)&&(save_buff[2]==0x20))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x4D);      //M ASCII character
	  else return (0x52);   //R ASCII character
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0)&&(save_buff[2]==0x10))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x47);      //G ASCII character
	  else return (0x47);  
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0)&&(save_buff[2]==0x04))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x37);      //7 ASCII character
	  else return (0x37);  
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0)&&(save_buff[2]==0x02))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x38);      //8 ASCII character
	  else return (0x38);  
    }  	
   else if((save_buff[0]==0)&&(save_buff[1]==0)&&(save_buff[2]==0x01))
    {
      clear_save_buff();
	
	  if(shift_flag==0) 
	    return (0x39);      //9 ASCII character
	  else return (0x39);  
    }  	
   return (ERROR);          
}
/*---------------------- main program ------------------*/ 
void main(void )
{
    unsigned char i,j,temp;
	unsigned char temp_save[4];
	long RCUNT_position,temp_position;
	unsigned long RCUNT_speed;
		
	pointer11=0;
	pointer12=0;
	pointer0=0;
	counter=0;
	key_flag1=0;
    shift_flag=0;
    key_interrupt_flag=0;
	f1_function=0;
	f3_function=0;
	screen_flag=0;
	input_dig_num=0;
	f2_function=1;
	position_flag=0;
	input_initial=0;
	repeat_flag=0;
	original_flag=0;
	slow_flag=0;
	
	xyz_axis_flag=0;
	teaching_flag=0;
			
	init_devices();
    ini_lcd();
	
    disp_string_1(0,"FMC-4001 Ver 1.0");
	disp_string_2(0,"Initializing....");
	
	setguangbiao_addr(7,1);
	setguangbiao_switch('Y');
	setguangbiao_addr(10,2);
	setguangbiao_switch('N');
	
    LED_SET(); 
	Delay(100);
	LED_CLEAR();
	
	while((PIND&IFB)==0);
	DSPXOTPB=0x00;
	while((PIND&IFB)==0);
    DSPXOTPB=0xFF;   //clear output indicator
	
	while((PIND&IFB)==0);
    DSPUOTPB=0xFF;
	while((PIND&IFB)==0);	
	DSPUOTPB=0xF0;   //all axes servo on
	
	//motion controlling parameter	
	dspmovingchip_initial(X);
	dspmovingchip_initial(Y);
	dspmovingchip_initial(Z);
	dspmovingchip_initial(U);
	
	output_ERC(X);
	output_ERC(Y);
	output_ERC(Z);
	output_ERC(U);
	
	reset_ERC(X);
	reset_ERC(Y);
	reset_ERC(Z);
	reset_ERC(U);
	
	//x axis parameter
    speed_multiplication_setup(X,servo_multiplication_factor);
	RCUNT_speed=500/servo_multiplication_factor;
	RFLorPRFL_setup(X,2,RCUNT_speed);
	RCUNT_speed=transferascii_speed(0,max_speed_x);
	RCUNT_speed=RCUNT_speed/servo_multiplication_factor;
	RFHorPRFH_setup(X,2,RCUNT_speed);
	RCUNT_speed=500/servo_multiplication_factor;
	RFA_setup(X,RCUNT_speed);
	RDRorPRDR_setup(X,2,200);
	RURorPRUR_setup(X,2,200);
	
	//y axis parameter
    speed_multiplication_setup(Y,step_multiplication_factor);
    RCUNT_speed=100/step_multiplication_factor;
	RFLorPRFL_setup(Y,2,RCUNT_speed);
	RCUNT_speed=transferascii_speed(0,max_speed_y1);
	RCUNT_speed=RCUNT_speed/step_multiplication_factor;
	RFHorPRFH_setup(Y,2,RCUNT_speed);
	RCUNT_speed=100/step_multiplication_factor;
	RFA_setup(Y,RCUNT_speed);
	RDRorPRDR_setup(Y,2,180);
	RURorPRUR_setup(Y,2,180);
	
	//z axis parameter
    speed_multiplication_setup(Z,step_multiplication_factor);
	RCUNT_speed=100/step_multiplication_factor;

⌨️ 快捷键说明

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