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

📄 motor.c

📁 AirConditioner project
💻 C
字号:
/*  Include  */
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC68HC908GZ60.h> /* include peripheral declarations */
#include "COMMON.h"
#include "AD.h"
#include "MOTOR.h"
#include "TIM.h"

/* Global Variables */
UINT8 motor_prosition[4];
extern UINT8 target_prosition[4];

/*****************************************************************************
 * Function:        Motor_Service()
 *
 * Description:     when motor_prosition >=target_prosition+4 
 *                                    or <=target_prosition-4
 *                       motor start
 *                  when motor_prosition <=target_prosition+2 
 *                                   and >=target_prosition-2
 *                       motor stop
 *
 * Returns:         none
 *
 * Notes:                (-4)-----(-2)--target_prosition--(2)------(4)     
 *
 *							    start|--->>----|          stop          |----<<---|start
 *
 *                        20%    	 |				  50%           |      80%
 *****************************************************************************/

void Motor_Service(void)
 {
  /////  MIX_MOTOR  /////
 while(MOTOR_MIX == 1)
     { 
       if(motor_prosition[0]>(target_prosition[0]+4))  
          {
           if(T2CH0L!=0xA0){
           Turn_Left(1,0xA0);
           }
           MOTOR_MIX_EN = 1;
          }
       else if(motor_prosition[0]<(target_prosition[0]-4))
            {
              if(T2CH0L!=0x28){
              Turn_Right(1,0x28);
              }
              MOTOR_MIX_EN = 1;
            } 
      
       __RESET_WATCHDOG();
       /////
       if(motor_prosition[0]<=(target_prosition[0]+2) && motor_prosition[0]>=(target_prosition[0]-2)||MOTOR_MIX == 0) 
              {
                MOTOR_MIX_EN=0;
                break;
              }
       }
  /////  CYCLE_MOTOR  /////
 while(MOTOR_CYCLE == 1)
     {    
       if(motor_prosition[1]>=(target_prosition[1]+4))  
          {
           if(T2CH1L!=0xA0){
           Turn_Left(2,0xA0);
           }
           MOTOR_CYCLE_EN = 1;
          }
       else if(motor_prosition[1]<=(target_prosition[1]-4))
            {
              if(T2CH1L!=0x28){
              Turn_Right(2,0x28);
              }
              MOTOR_CYCLE_EN = 1;
            } 
      
      __RESET_WATCHDOG();
       /////
       if(motor_prosition[1]<=(target_prosition[1]+2) && motor_prosition[1]>=(target_prosition[1]-2)||MOTOR_CYCLE == 0) 
              {
                MOTOR_CYCLE_EN=0;
                break;
              }
       }	 
  /////  MODE_MOTOR  /////
  while(MOTOR_MODE == 1)
     {         
       if(motor_prosition[2]>=(target_prosition[2]+4))  
          {
           if(T2CH2L!=0xA0){
           Turn_Left(3,0xA0);
           }
           MOTOR_MODE_EN = 1;
          }
       else if(motor_prosition[2]<=(target_prosition[2]-4))
            {
              if(T2CH2L!=0x28){
              Turn_Right(3,0x28);
              }
              MOTOR_MODE_EN = 1;
            } 
       
       __RESET_WATCHDOG();
       /////
       if(motor_prosition[2]<=(target_prosition[2]+2) && motor_prosition[2]>=(target_prosition[2]-2)||MOTOR_MODE == 0) 
              {
                MOTOR_MODE_EN=0;
                break;
              }
       }	
 
  /////  CENTER_MOTOR  /////
while(MOTOR_CENTER == 1)
     { 
       //motor_prosition[3]=AD_Sample(CENTER_Prosition);
       //target_prosition[3]=AD_Sample(SunLight);        
       
       if(target_prosition[3]<S1){
          target_prosition[3]=S1;
       }else if(target_prosition[3]>S10){
          target_prosition[3]=S10;
       } 
       
       if(motor_prosition[3]>=(target_prosition[3]+4))  
          {
           if(T2CH3L!=0xA0){
           Turn_Left(4,0xA0);
           }
           MOTOR_CENTER_EN = 1;
          }
       else if(motor_prosition[3]<=(target_prosition[3]-4))
            {
              if(T2CH3L!=0x28){
              Turn_Right(4,0x28);
              }
              MOTOR_CENTER_EN = 1;
            } 
      
      __RESET_WATCHDOG();
       /////
       if(motor_prosition[3]<=(target_prosition[3]+2) && motor_prosition[3]>=(target_prosition[3]-2)||MOTOR_CENTER == 0) 
              {
                MOTOR_CENTER_EN=0;
                break;
              }
       }  
 }
  

⌨️ 快捷键说明

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