main.c
来自「这是Mc9sdg128的舵机调试程序,适合进行智能小汽车的调试.」· C语言 代码 · 共 71 行
C
71 行
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#include "PLL.h"
#define RudderDefault 305
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
#define RudderSet PWMDTY67
signed int position;
void PWM_Init(void);
void main(void) {
DisableInterrupts;
PLL_Init();
PWM_Init();
for(;;){
position =25;
RudderSet = RudderDefault + position;
position =20;
RudderSet = RudderDefault + position;
position =15;
RudderSet = RudderDefault + position;
position =10;
RudderSet = RudderDefault + position;
position =5;
RudderSet = RudderDefault + position;
position =0;
RudderSet = RudderDefault + position;
position =-5;
RudderSet = RudderDefault + position;
position =-10;
RudderSet = RudderDefault + position;
position =-15;
RudderSet = RudderDefault + position;
position =-20;
RudderSet = RudderDefault + position;
}
}
void PWM_Init()
{
PWME=0x00; //禁止所有PWM
PWMCTL=0x80; //使6,7路合并为十六位 其余均为八位。
PWMPRCLK=0x00; //不预分频
PWMSCLB=81;
PWMSCLA=7; //使用sa时钟为pmw时钟
PWMCLK=0xB0; //时钟选择
PWMPOL=0xA0; //极性选择
PWMCAE=0x00; //左对齐
PWMPER67=2962;//50Hz //500~2000都可以
//PWMPER67=1480;//100Hz
//PWMPER67=1234;//120Hz
//PWMPER67=1139;//130Hz
//PWMPER67=1057;//140Hz
//PWMPER67=1000;//150Hz
PWMDTY67=300; // 越小,车轮越向右
PWMPER4=200; //10KHz
PWMPER5=200; //10KHz,方向与四相同
PWMDTY4=200;
//如果和5相同则 不制动,制动程度决定于5低点平时 4高点平的占空比
PWMDTY5=200; //越大,速度越快,测试的时候先设小一点
DDRP=0xff; //将PWM端口设为输出
PWMCNT67=0; //开始计数
PWMCNT45=0;
PWME=0xB0; //允许PWM 7 4 5
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?