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

📄 motor.c.bak

📁 步进电机控制程序
💻 BAK
📖 第 1 页 / 共 5 页
字号:
   	     	Needle[u_a].X_Reference = Needle[u_a-1].X_Reference;	
   	     	Needle[u_a].Y_Reference = Needle[u_a-1].Y_Reference;	
   	     	Needle[u_a].Work_State  = Needle[u_a-1].Work_State;
   	     	Needle[u_a].Embroider_Mode = Needle[u_a-1].Embroider_Mode;
   	     	Needle[u_a].Sequence  = Needle[u_a-1].Sequence;
   	    	}
   	     Needle[0].Work_State  = 0;
   	     Needle[0].Sequence  = Needle[1].Sequence - 1;
   	     --u_File_Point_Front;
   	     Needle[0].Embroider_Mode = NORMAL;
   	     Needle[0].Y_Reference = *(horse + u_File_Point_Front);
   	     --u_File_Point_Front;
   	     Needle[0].X_Reference = *(horse + u_File_Point_Front);
   	     if(u_File_Point_Front > 0)
   	     {
   	      if(*(horse + u_File_Point_Front -2) == 0x80)
   	        {
   	       	 --u_File_Point_Front;
   	       	 --u_File_Point_Front;
   	       	 if((*(horse + u_File_Point_Front) == 02) ||(*(horse + u_File_Point_Front) == 04))
   	       	     Needle[0].Embroider_Mode = JUMP_NEEDLE;
   	       	 if(*(horse + u_File_Point_Front) == 01)
   	       	     Needle[0].Embroider_Mode = CHANGE_COLOR;
   	       	 
   	       	}
   	     }
   	    if(*(horse + u_File_Point - 4) == 0x80)
           {
           	u_File_Point-=4;
           	--u_Jump_num;
           }
        else
            u_File_Point-=2;
   	      ++u_Buffer_Index;
   	  }
     }
  } 
}

//================================================================================                                         
//Sub-Routine Name:void Cal_Speed_Limit(void)                                                            
//Description:
//            
//                                                                                          
//Input:                                                                                     
//Output:                                                                               
//Modified:                                                            
//=================================================================================
void Cal_Speed_Limit(void)
 {
 signed char s_a,s_b;
 unsigned int u_x;	
 s_a = Needle[u_Buffer_Index].X_Reference;
 s_a = abs(s_a);	
 s_b = Needle[u_Buffer_Index].Y_Reference;
 s_b = abs(s_b);
 u_x = s_a > s_b ? s_a : s_b;
 s_a = Needle[u_Buffer_Index+1].X_Reference;
 s_a = abs(s_a);	
 s_b = Needle[u_Buffer_Index+1].Y_Reference;
 s_b = abs(s_b);
 s_a = s_a > s_b ? s_a : s_b;
 u_x = u_x > s_a ? u_x : s_a;
 if(u_x > 62)
 {
  Max_Speed_Limit = 1058;
  Max_Speed_Limit *=600;
  Max_Speed_Limit /=u_x;			
 } 
else
  {
   Max_Speed_Limit = 10000;	
  }
}

unsigned short Draw_String_Flag = 0;
unsigned short u_Draw_Count = 0;
//================================================================================                                         
//Sub-Routine Name:unsigned short Draw_String_Control(void)                                                            
//Description:
//            
//                                                                                          
//Input:                                                                                     
//Output:                                                                               
//Modified:                                                            
//=================================================================================
unsigned short Draw_String_Set(void)
{
 if( Draw_String_Flag ==1 )
  return (0);
 else
  {
  	Draw_String_Flag = 1;
  	u_Draw_Count = 1400;
  	return (1);
  }
}
//================================================================================                                         
//Sub-Routine Name:unsigned short Draw_String_Control(void)                                                            
//Description:
//            
//                                                                                          
//Input:                                                                                     
//Output:                                                                               
//Modified:                                                            
//=================================================================================
unsigned short Draw_String_Control(void)
{
if(Draw_String_Flag == 0)return(1);
if(u_Draw_Count > 0)
   {
   	--u_Draw_Count;
   	u_OUT_IO|= Draw_String;
   	Out_01 = u_OUT_IO;
   	return(0);
   }
else
  {
 	u_OUT_IO&=~Draw_String;
 	Out_01 = u_OUT_IO;
 	Draw_String_Flag = 0;
 	return(1);
  }	
}

unsigned short Buckle_String_Flag = 0;
unsigned short u_Buckle_Count = 0;
//================================================================================                                         
//Sub-Routine Name:unsigned short Buckle_String_Set(void)                                                            
//Description:
//            
//                                                                                          
//Input:                                                                                     
//Output:                                                                               
//Modified:                                                            
//=================================================================================
unsigned short Buckle_String_Set(void)
{
 if( Buckle_String_Flag == 1 )
  return (0);
 else
  {
  	Buckle_String_Flag = 1;
  	u_Buckle_Count = 1800;
  	return (1);
  }
}
//================================================================================                                         
//Sub-Routine Name:unsigned short Buckle_String_Control(void)                                                            
//Description:
//            
//                                                                                          
//Input:                                                                                     
//Output:                                                                               
//Modified:                                                            
//=================================================================================
unsigned short Buckle_String_Control(void)
{
if(Buckle_String_Flag == 0)return(1);
if(u_Buckle_Count > 0)
   {
   	--u_Buckle_Count;
   	u_OUT_IO|= Buckle_String;
   	Out_01 = u_OUT_IO;
   	return(0);
   }
else
  {
 	u_OUT_IO&=~Buckle_String;
 	Out_01 = u_OUT_IO;
 	Buckle_String_Flag = 0;
 	return(1);
  }	
}
unsigned short Cut_String_Flag = 0;
unsigned short u_Cut_Count = 0;
//================================================================================                                         
//Sub-Routine Name:unsigned short Cut_String_Set(void)                                                            
//Description:
//            
//                                                                                          
//Input:                                                                                     
//Output:                                                                               
//Modified:                                                            
//=================================================================================
unsigned short Cut_String_Set(void)
{
 if(Cut_String_Flag == 1)
  return (0);
 else
  {
  	Cut_String_Flag = 1;
  	u_Cut_Count = 1600;
  	return (1);
  }
}
//================================================================================                                         
//Sub-Routine Name:unsigned short Cut_String_Control(void)                                                            
//Description:
//            
//                                                                                          
//Input:                                                                                     
//Output:                                                                               
//Modified:                                                            
//=================================================================================
unsigned short Cut_String_Control(void)
{
if((n_THETA < -733) && (Buckle_Request_Flag == 0))						//196度
  {
  	Buckle_Request_Flag = 1;
  	Buckle_String_Flag = 1;
  	u_OUT_IO |= Buckle_String;        	//扣线
   	Out_01 = u_OUT_IO;
  }
if(((n_THETA < -990)||(n_THETA > -20)) && Buckle_String_Flag)	//剪线
  {
  	Buckle_String_Flag = 0;
  	Cut_String_Flag = 1;
  	u_OUT_IO |= Cut_String;
   	Out_01 = u_OUT_IO;
   	u_Cut_Count = 800;
  }
if(u_Cut_Count > 0)
   	--u_Cut_Count;
else
  {
  if(((n_THETA < -990)||(n_THETA > -20))&& Cut_String_Flag )
    {
 	 u_OUT_IO &= ~Cut_String;                //剪线停止
 	 u_OUT_IO &= ~Buckle_String;        	 //扣线停止
 	 Out_01 = u_OUT_IO;
 	 Cut_String_Flag = 0;
 	 Draw_Request_Flag = 1;					//勾线请求开始
    }	
 }
if(Draw_Request_Flag && (n_THETA < -580) &&(n_THETA > -650))//勾线开始
   {
   	Draw_Request_Flag = 0;
   	Draw_String_Flag = 1;
   	u_Draw_Count = 500;
   	u_OUT_IO |= Draw_String;
   	Out_01 = u_OUT_IO;
   }
if(u_Draw_Count > 0)
   	--u_Draw_Count;
else
  {
  	if(((In_04 & Draw_Flag) == 0)&& Draw_String_Flag)
      {
 	   u_OUT_IO &= ~Draw_String;
 	   Out_01 = u_OUT_IO;
 	   Draw_String_Flag = 0;
 	   Buckle_Request_Flag = 0;
 	   return(1);
 	  }
  }	
 return(0); 
}
//================================================================================                                         
//Sub-Routine Name:unsigned short Change_Color_Control(unsigned short u_Color)                                                            
//Description:
//            
//                                                                                          
//Input:                                                                                     
//Output:                                                                               
//Modified:                                                            
//=================================================================================
unsigned short Change_Color_Control(unsigned short u_Color)
{
 static unsigned short Change_Timer = 0;
 //static unsigned short Change_First_Flag = 1;
 static unsigned short Change_Stop_Flag = 0;
if((In_02 & Needle_Index) == 0 )return(0);
/*if((u_Color == (In_02 & Needle_Index)) && (In_02 & Half_Turn))
   {
   	Change_Stop_Flag = 1;
	}
if (Change_Stop_Flag)*/
if((u_Color == (In_02 & Needle_Index)) && (In_02 & Half_Turn))
   {
   	if(Change_Timer < 60)
   	  {
   	    u_OUT_IO &= ~Change_Color_Start;
   	    u_OUT_IO |= Change_Color_P;
   	    u_OUT_IO |= Change_Color_N;
   	    Out_01 = u_OUT_IO;
   	    Out_02 = u_OUT_IO & 0x10;
   	    ++Change_Timer;
   	   return(0);	
   	  }
   	else
   	 {
   	 	Change_Timer = 0;
   	 	Change_Stop_Flag = 0;
   		u_OUT_IO |= Change_Color_P;
   		u_OUT_IO |= Change_Color_N;
   		u_OUT_IO |= Change_Color_Start;
   		Out_01 = u_OUT_IO;
   		Out_02 = u_OUT_IO & 0x10;
   		return(1);
   	 }
   }
if(u_Color > (In_02 & Needle_Index))
   {
   	u_OUT_IO &= ~Change_Color_P;
   	u_OUT_IO |= Change_Color_N;
   	u_OUT_IO |= Change_Color_Start;
   	Out_01 = u_OUT_IO;
   	Out_02 = u_OUT_IO & 0x10;
   	Change_Timer = 0;
   	return(0);
   }
if(u_Color < (In_02 & Needle_Index))
  {
 	u_OUT_IO &= ~Change_Color_N;
   	u_OUT_IO |= Change_Color_P;
   	u_OUT_IO |= Change_Color_Start;
   	Out_01 = u_OUT_IO;
   	Out_02 = u_OUT_IO & 0x10;
   	Change_Timer = 0;
   	return(0);
  }
return(0);  	
} 

⌨️ 快捷键说明

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