常驻嘉宾
- 积分
- 3454
- 威望
- 1708
- 贡献
- 1098
- 兑换币
- 1135
- 注册时间
- 2013-6-18
- 在线时间
- 324 小时
|
三两阳光 发表于 2014-7-16 00:25
恩恩,这个是对的。。
要不我把代码发给你,你看看行吗?就是单个检测舵机的。
给你一个 我测试的
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
//#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
//=======================================================================================
//***************时钟初始化/锁相环***************//
void PLL_Init(void) //40M
{
CLKSEL=0X00;
PLLCTL_PLLON=1;
SYNR=0xc0 | 0x04;
REFDV=0x80 | 0x01;
POSTDIV=0x00;
_asm(nop);
_asm(nop);
while(!(CRGFLG_LOCK==1));
CLKSEL_PLLSEL =1;
}
//****************PWM初始化*********************//
void PWM_Init(void)
{
PWME=0x00; //关闭PWM使能
PWMCTL=0x10; //通道连级
PWMCAE=0x00; //选择输出模式为左对齐输出模式
PWMPOL=0xFF; //PWM输出起始电平为高电平
PWMPRCLK=0x22; //A,B时钟均为总线的4分频,10MHZ ******* 换通道是一定要注意这个寄存器*******
PWMSCLA=5; //clockSA=clockA/(2*PWMSCLA) =1MHZ
PWMCLK=0x02; //01选SA 作为时钟源
PWMPER01=20000; //PWM通道3周期为20ms 50HZ 1MHZ/20000 =50HZ 1/50HZ=20ms
// PWMDTY01=1525; //占空比舵机在中间 2014 年新车
PWME=0x02; //使能pwm_1
}
//********************延时****************//
void delay(int x)
{
int i,j;
for(i=x;i>0;i--)
{
for(j=5000;j>0;j--) ;
}
}
//********************主函数*****************//
void main(void)
{
PLL_Init();
PWM_Init();
for(;;)
{
PWMDTY01= 1560;
delay(2000);
PWMDTY01 = 1780; //向左最大角度
delay(2000);
PWMDTY01= 1560;
delay(2000);
PWMDTY01= 1370; //最大角度
delay(2000);
}
}
|
|