关于STC12C5A60S2单片机的PWM程序咨询

mokedeng 2013-08-24 09:57:32
#include"STC12C5A.h"

void delay(unsigned int cnt) //延时函数
{
unsigned char i;
for(;cnt>0;cnt--)
for(i=0;i<250;i++);
}

void main()
{
CCON=0; //PCA初始化
CL=0; //PCA的16位计数器低八位
CH=0; //PCA的16位计数器高八位
CMOD=0x0a; //选择 系统时钟/4 为计数脉冲,则PWM的频率f=sysclk/256/4;

CCAP0H=0x80; // 占空比控制
CCAP0L=0x80;
PCA_PWM0=0x00; //控制占空比的第九位为0

CCAPM0=0x42; //允许P13作为PWM输出

CR=1; //启动PCA计数器
while(1)
{
if(P10==0)
{
delay(200);
while(P10==0);
CCAP0H+=10; //占空比调节
CCAP0L+=10;
}
}
}


这个是我在网上查看到的一个产生PWM波的程序。我正想做一个PWM控制电机转数的一个程序。有几个问题想要咨询一下大家。
1、假如我的晶振是20M是,那是不是产生的PWM的频率是19.5k hz. 这里我把系统时钟理解成了20m不知错了 没有。
2、 那个占空比的控制 CCAP0H=0x80; CCAP0L=0x80; 这个是代表占空比是50% 是不是高地位的数值必须是一样的。 但是这一句: PCA_PWM0=0x00; //控制占空比的第九位为0 我没有理解不知道是什么意思。
3、这个单片机是8位的,他就是把分为了256份, 是不是电机转数在10000转的时候每条一次占空比电机的转数浮动是10000/256转。 要是的话在程序的哪里可以看出来。
暂时就这三个问题,谢谢了。
...全文
257 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mokedeng 2013-08-25
  • 打赏
  • 举报
回复

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧