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

📄 check._c

📁 avr单片机ATMega16对三相异步电机的智能控制源码
💻 _C
字号:

///////////////////////////////////////////////////////////////
/**************************************************************

	公司名称:	 扬州恒博科技
	模块名	:	 点动型STQ执行机构主控程序 
	创建人	:	 章俭文                                         
	日期	:	 2008/08/19	                                         
	功能描述:   完成对本地旋钮和远程开关量的控制功能                                
	其它说明:   编译环境为ICCAVR V6.31A                                            
	版本	:	 V1.0

**************************************************************/
///////////////////////////////////////////////////////////////

#define CHECK_GLOBAL
#include "check.h"

void check(void)  		//电机参数检测任务,只上电时执行一次
{
 limit_direction = 0;
 
 if(GetLimit1())		//限位1正常为关限位
 {
 LIMIT1:
  OpenMotor();
  MotorDelayTime = 0;
  while((MotorDelayTime<200)&&GetLimit());
  if(GetLimit1())limit_direction = 0;
  else limit_direction = 1;
  	   				   
  CloseMotor();		   //复位电机
  MotorDelayTime = 0;
  while((MotorDelayTime<200)&&!GetLimit());
  StopMotor();	
  
  return;
 }
 
 
 else if(GetLimit2())        //限位2正常为开限位
 {
 LIMIT2:
  CloseMotor();
  MotorDelayTime = 0;
  while((MotorDelayTime<200)&&GetLimit());
  if(GetLimit2())limit_direction = 0;
  else limit_direction = 1;
  
  OpenMotor();
  MotorDelayTime = 0;
  while((MotorDelayTime<200)&&GetLimit());
  StopMotor();	
   
  return;
 }
 
 
 else  	   	//在中间位置时尝试使电机动作到限位
 {
  OpenMotor();
  MotorDelayTime = 0;
  while((MotorDelayTime<200)&&!GetLimit());
  if(GetLimit1())goto LIMIT1;
  if(GetLimit2())goto LIMIT2;
  
  if(!GetLimit())
  {
   CloseMotor();
   MotorDelayTime = 0;
   while((MotorDelayTime<250)&&!GetLimit());
   if(GetLimit1())goto LIMIT1;
   if(GetLimit2())goto LIMIT2;
   
   if(!GetLimit())
   {
    MotorDelayTime = 0;
    while((MotorDelayTime<400UL)&&!GetLimit());
	if(GetLimit1())goto LIMIT1;
    if(GetLimit2())goto LIMIT2;
   }
   
   StopMotor();
   if(GetLimit1())goto LIMIT1;
   if(GetLimit2())goto LIMIT2;
  }
  
  if(!GetLimit())	   //失败之后让程序定位在这里
  {
   while(1) 		       
   {
    ClrLocalLed();
    ClrRemoteLed();
   }
  } 
 }
 
}//end of  check

⌨️ 快捷键说明

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