📄 speed.c
字号:
//======================================================
// 文件名称: Speed.c
// 功能描述: 速度模拟(PWM波产生控制)程序
// 维护记录: 2006-10-12 v1.0 by lijian
//======================================================
#include "Speed.h"
#define DEFAULT_SPEED 0xffd0 // 默认速度(TimerB的默认计数初值)
#define MAX_SPEED 0xfff0 // 最大速度(TimerB的最大计数初值)
#define MIN_SPEED 0xff00 // 最小速度(TimerB的最小计数初值)
unsigned int uiCurSpeed; // 当前速度(TimerB的当前计数初值)
//=============================================================
// 语法格式: void Speed_Init(void)
// 实现功能: 速度模拟初始化
// 参数: 无
// 返回值: 无
//=============================================================
void Speed_Init(void)
{
uiCurSpeed = 0;
*P_IOB_Dir |= C_Bit9;
*P_IOB_Attrib |= C_Bit9;
*P_IOB_Buffer &= ~C_Bit9;
*P_TimerB_Ctrl = C_TMA1_0 + C_TMA_PWM_OFF;
}
//=============================================================
// 语法格式: void Speed_Start(void)
// 实现功能: 启动速度模拟
// 参数: 无
// 返回值: 无
//=============================================================
void Speed_Start(void)
{
uiCurSpeed = DEFAULT_SPEED;
// *P_TimerB_Data = 65535 - (6144 / Speed_GetFreq(DEFAULT_SPEED)) + 1;
*P_TimerB_Data = uiCurSpeed;
*P_TimerB_Ctrl = C_TMA1_FOSC_256 + C_TMA_PWM_D8;
}
//=============================================================
// 语法格式: void Speed_Stop(void)
// 实现功能: 停止速度模拟
// 参数: 无
// 返回值: 无
//=============================================================
void Speed_Stop(void)
{
*P_TimerB_Ctrl = C_TMA1_0;
}
//=============================================================
// 语法格式: void Speed_Stop(int uiStep)
// 实现功能: 加速
// 参数: uiStep - 速度调整步进
// 返回值: 无
//=============================================================
void Speed_Up(int uiStep)
{
uiCurSpeed += uiStep;
if(uiCurSpeed >= MAX_SPEED)
uiCurSpeed = MAX_SPEED;
// *P_TimerB_Data = 65535 - (6144 / Speed_GetFreq(uiCurSpeed)) + 1;
*P_TimerB_Data = uiCurSpeed;
*P_TimerB_Ctrl = C_TMA1_FOSC_256 + C_TMA_PWM_D8;
}
//=============================================================
// 语法格式: void Speed_Down(int uiStep)
// 实现功能: 减速
// 参数: uiStep - 速度调整步进
// 返回值: 无
//=============================================================
void Speed_Down(int uiStep)
{
uiCurSpeed -= uiStep;
if(uiCurSpeed <= MIN_SPEED)
uiCurSpeed = MIN_SPEED;
if(0 == uiCurSpeed)
{
*P_TimerB_Ctrl = C_TMA1_0;
}
else
{
// *P_TimerB_Data = 65535 - (6144 / Speed_GetFreq(uiCurSpeed)) + 1;
*P_TimerB_Data = uiCurSpeed;
*P_TimerB_Ctrl = C_TMA1_FOSC_256 + C_TMA_PWM_D8;
}
}
//=============================================================
// 语法格式: unsigned int Speed_GetSpeed(void)
// 实现功能: 得到当前速度
// 参数: 无
// 返回值: 速度值
//=============================================================
unsigned int Speed_GetSpeed(void)
{
return uiCurSpeed;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -