📄 motor.c
字号:
#include "includes.h"
INT8S SmartSpeedtemp=1;
INT8U SmartOver=OFF;
/**************************************************************************/
void Motor_Func(void)
{
INT8U LcdMotor[] = {"LcdMotor "};
INT8U MotorSpeed = 0;
INT8U MotoLevel = 0;
LcdWriteAll(LcdMotor);
InitPWM7();
InitPWM6();
InitPA();
InitTOF();
ClearPA();
StartPA();
InitTC1(); //初始化TC1,用来计算当前所运行的时间
StartTC1(); //开始计时间
InitTC3(); //初始化TC3,用来计算当前所运行的时间
StartTC3(); //开始计时间
for (;;)
{
while (KeyFlag == ON)
{
KeyFlag = OFF;
if (ValueKey == Enter)
{
if (MotorSpeed > 40)
{
MotorSpeed = 0;
}
Moto(++MotorSpeed);
MotoLevel = (MotorSpeed/10);
LcdWriteOne(0xC0,&MotoLevel,1);
MotoLevel = (MotorSpeed - MotoLevel*10);
LcdWriteOne(0xC1,&MotoLevel,1);
}
else if (ValueKey == 0x0D)
{
Moto(0);
}
else if (ValueKey == Exit) return; //if have exit key,go back
}
}
/*for(;;) {
while (KeyFlag == ON) {
KeyFlag = OFF;
if (ValueKey == Enter){InitPWM45();SetPWM45(60000,20000);StartPWM45();}
else if (ValueKey == Exit) return; //if have exit key,go back
}
} */
/* PORTB = 0x55;
InitPWM6();
SetPWM6(250,62);
StartPWM6();
InitPWM7();
SetPWM7(250,62);
StartPWM7();
InitPWM45();
StartPWM45();
SetPWM45(60000,20000); */
}
/**************************************************/
void Moto(INT8S Spd)
{ //前进 0-50 0:stop 50:max speed
// static char Spdtemp=0;
// if(Spdtemp==Spd) {return;}
// else { Spdtemp=Spd;}
if ((Spd)>0)
{
StopPWM6();
SetPWM7(250,250 - 5 * Spd);
StartPWM7();
}
else if (Spd<0)
{
StopPWM7();
SetPWM6(250,250 + 5 * Spd);
StartPWM6();
}
else
{
StopMoto();
}
}
/**************************************************/
void RMoto(INT8U Strength) //倒车
{
StopPWM7();
SetPWM6(250,250 - 5 * Strength);
StartPWM6();
}
void SmartMoto(INT8S SmartSpeed)
{
SmartOver=OFF;
if (SmartSpeed>0)
{
while (SmartSpeed<= 50 && CarStop==ON)
{
SmartSpeedtemp=++SmartSpeed ;
Moto(SmartSpeedtemp);
Delay(5);
}
}
else if (SmartSpeed<0)
{
while (SmartSpeed>= -50 && CarStop==ON)
{
SmartSpeedtemp=--SmartSpeed;
Moto(SmartSpeedtemp);
Delay(5);
}
}
else
{
if (SmartSpeedtemp>0 )
{
while (SmartSpeedtemp<=50 && CarStop==ON)
{
Moto(++SmartSpeedtemp);
Delay(5);
}
}
else if (SmartSpeedtemp<0 )
{
while (SmartSpeedtemp>=-50 && CarStop==ON)
{
Moto(--SmartSpeedtemp);
Delay(5);
}
}
}
SmartOver=ON;
}
/***************************************************
void SmartMotoCheck(INT8S *pSmartSpeed)
{
while((*pSmartSpeed>=0 || *pSmartSpeed<40) && (CarStop==ON))
{
(*pSmartSpeed)++;
Moto(*pSmartSpeed);
}
while((*pSmartSpeed<=0 || *pSmartSpeed>-40) && (CarStop==ON))
{
(*pSmartSpeed)--;
Moto(*pSmartSpeed);
}
}
*****************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -