求助:请帮我看看这个 PWM 问题(占空比计算),好吗?

[复制链接]
1359|2
手机看帖
扫描二维码
随时随地手机跟帖
npsgsys|  楼主 | 2009-2-23 11:41 | 显示全部楼层 |阅读模式
请教:
MCU:STC12C5A60S2
sfr AUXR1     = 0xA2; //切换 PCA /PWM 口寄存器
sfr CCON      = 0xD8; //
sfr CMOD      = 0xD9; //
sfr CCAPM0    = 0xDA; //
sfr CCAPM1    = 0xDB; //
sfr CL        = 0xE9; //
sfr CH        = 0xF9; //
sfr CCAP0L    = 0xEA; //
sfr CCAP0H    = 0xFA; //
sfr CCAP1L    = 0xEB; //
sfr CCAP1H    = 0xFB; //
sfr PCA_PWM0  = 0xF2; //
sfr PCA_PWM1  = 0xF3; //


void main()
{
    P1M0 = 0x00;            //P1口用传统51准双向口模式
  P1M1 = 0x00;
  
  CMOD = 0x10;            //空闲模式下,PCA 计数器停止工作
                          //PCA 时钟源为系统时钟 Fosc/12
  CCON = 0x00;            //初始化 CCON
  CH = 0x00;              //PCA计数器初始值高8位
  CL = 0x00;              //PCA计数器初始值低8位
  CCAPM0 = 0x42;          //8 位 PWM,无中断,使能 CEXn 脚作脉宽调节输出
  CCON |= 0x40;           //CR = 1 启动 PCA 计数器 
  CCAP0H = 0x00; 
  CCAP0L = 0x00;          //当出现捕获或比较时,它们用来保存16 位的计数值。
                          // 当PCA 模块用在PWM 模式中时,它们用来控制输出的
                          //占空比。CCAP0H.CCAP0L分别为高低8位,组合使用 
  
  while(1)
  {
      ;
  }
                          
}

1:
如果我希望占空比为 20% 
那么 CCAP0H,CCAP0L 的值要设置为多少?

2:
资料上一个例子:
CCAP0L = 0x00;  //Set the initial value same as CCAP0H
CCAP0H = 0xc0;  //25% Duty Cycle
这个 25% 是怎么算出来的?

3:
我只要设置了 CCAP0H,CCAP0L,并且启动 CR(PCA 计数器启动)
那么就可以自动输出 PWM 了,是不?

4:
如果我想调整占空比,那么只要重新设置 CCAP0H,CCAP0L,
是吗?

谢谢!

相关帖子

lyjian| | 2009-2-23 12:40 | 显示全部楼层

看规格书

使用特权

评论回复
lyjian| | 2009-2-23 13:01 | 显示全部楼层

51 PCA

8位PWM占空比
占空比=(256-PCA0CPHn)/256

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
ttl_web + 3 很给力!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

12

帖子

0

粉丝