stc12c5410ad的PWM波形输出

2019-03-24 20:07发布

最近在使用stc12c5410ad的PWM模块功能,输出固定频率可调占空比的PWM波,下面是我写的程序,产生25%和50%占空比的PWM波:    /******************************************************************************
  功能:固定频率39kHz的可调脉宽的PWM
  系统时钟 :20MHz      ********************************************************************************/
 #include <stc12c5410ad.h>
 #define uchar unsigned char
 #define uint unsigned int  uchar code table[]={0xc0,0x80};  //占空比 分别为 25%,50%
 uchar i;  void main()
 {
  CCON=0;     //初始化PCA寄存器
 CL=0;
 CH=0;
 CMOD=0x02;   //PCA时钟源来自系统时钟 f/2
 CCAPM0=0x42;  //PCA工作在PWM模式
 CR=1;         //开启PCA timer
 while(1)
 {
  for(i=0;i<2;i++)
  {
   CCAP0H=CCAP0L=table;
   while(CL!=0xff);
  }
 }  }   我想得到波形输出顺序:25%,50%,25%,50%,25%,50%……循环下去;(百分比为PWM的占空比,代表一个波形,波形就不画了) 可是我用示波器观察输出结果,波形输出顺序:25%,50%,25%,50%,50%,50%,25%,50%,25%,50%,50%,50%,25%……。多出了两个占空比50%的脉冲信号,请高手帮我看看程序是不是有什么问题,感觉问题出现在占空比的赋值上,但又不知道具体是什么。
[ 本帖最后由 coney 于 2010-12-21 18:13 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
leang521
2019-03-25 02:25

  for(i=0;i<2;i++)
  {
   CCAP0H=CCAP0L=table;
   while(CL!=0xff);
  }

这句话能跑就已经很让我惊奇了。你的i是做啥么用呢?table地址在哪?哎呀,我真是。。。

[ 本帖最后由 leang521 于 2010-12-22 13:16 编辑 ]

一周热门 更多>