snail_dongbin 发表于 2011-6-11 16:35:34

stc的pwm控制舵机

最近想控制舵机玩玩!51两个定时器控制多个没办法!精度也提不上去
发现stc有块12c5608ad里面有4个pwm生成
但调成周期是20ms脉宽可变的程序不知怎么弄
现在调成21khz的
   CMOD = 0x02; // 计数脉冲源选择= 0 1   f/2 。 11.0592M/2/256=21.6KHz
   CL = 0x00;
   CH = 0x00;
   CCAP0L = plus;//改变脉宽
   CCAP0H = plus;//
   CCAPM0 = 0x42;//0100,0010 Setup PCA module 0 in PWM mode
   CR = 1;
不知怎么修改?

tiexin740 发表于 2011-6-11 17:24:21

在stc12c5a08s2中是这样的,不知道你这个一样不一样。具体要看datasheet。
void PWM()
{
CMOD = 0x04; // 设置模式,
TMOD=0x02;
TH0=251;
TL0=251;
TR0=1;//也可以用这个加到程序上,用这个可以自己调的频率的PWM输出*/
CCAPM0 = 0x42; //输入使能,和输出使能
CCAPM1 = 0x42; //输入使能,和输出使能
CR = 1; //启动 PCA 定时器.
}
通过调节TH0=251;TL0=251;就可以得到想要的频率了

zbb8637 发表于 2011-6-11 19:35:14

关注

snail_dongbin 发表于 2011-6-13 12:39:17

1楼您说的方法是用一个定时器0做时钟源是吧!
改变定时器的定时长来改变频率,哪是不是占空比是50%,
要想脉宽可调怎么办?

hy8649241 发表于 2011-6-14 23:35:32

CCAPM0 = 0x42; //输入使能,和输出使能
CCAPM1 = 0x42; //输入使能,和输出使能
手册上有写,调占空比
页: [1]
查看完整版本: stc的pwm控制舵机