中级会员
- 积分
- 301
- 威望
- 199
- 贡献
- 70
- 兑换币
- 20
- 注册时间
- 2012-9-10
- 在线时间
- 16 小时
|
#include <hidef.h> /* common defines and macros */
#include <mc9s12xs128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
void initpll(void)//40MHz,外部时钟为16MHz
{
CLKSEL_PLLSEL=0;
PLLCTL_PLLON=0;
SYNR=0xc0 | 0x07;//PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1)
REFDV=0x80 | 0x01;
PLLCTL_PLLON=1;
asm NOP;
asm NOP;
asm NOP;
while((CRGFLG&0X08)==0);//时钟校正同步
CLKSEL_PLLSEL=1;
}
void main(void)
{ initpll();
PWME=0x00;
PWMCTL=0X10; //01连起来供给舵机
PWMCAE=0X00;
PWMPOL=0XFF; //先输出高电平
PWMCLK=0X03; //01选择SA时钟,23选择B,45选择A
PWMPRCLK=0X55; //对A时钟进行32分频,B时钟进行32分频 A=2M B=2M
PWMSCLA= 4; //SA=2M/(2*4)=250K
PWMPER01=5000; // 周期为 250K/5000=50HZ 舵机
PWMDTY01=430; // 舵机的中间位置440,增大往右530转差不多40度,减小往左380转差不多 舵机从最左到最右的时间为160MS
PWMPER3=200; // 周期为 2M/200=10KHZ 电机左 正转
PWMPER2=200;
PWMDTY2=50; // 左电机
PWMDTY3=0; //电机左 正转
PWMPER4=200 ;
PWMPER5=200; // 占空比为 0% 左电机
PWMDTY5=0; // 电机右 正转
PWMDTY4=100; ///电机右 反转
//PWMDTY4=0 ;
//占空比为 0% 右电机
PWME=0XFF; //通道使能
EnableInterrupts;
for(;;) {} /* wait forever */
/* please make sure that you never leave this function */
}
|
|