📄 motor.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 + -