stc12c5a60s2产生PWM波的程序

2019-07-15 22:03发布

这是小弟写的一个用stc12c5a60s2产生PWM波的程序,但不知道为什么PCA/PWM的计数器一直不计数,导致CL的值一直是0,无法与CCAP0L的值进行比较产生PWM波,希望各位高手不吝赐教

#include<STC12C5A60S2.H>
#define uint unsigned int
#define uchar unsigned char
#define SYSCLK  11059200L
sbit PWM=P1^3;

uchar b=0,aa,c=0,d,e,i;

void init()
{
        CCON=0;
        CL=0;
        CH=0;
        CMOD=0x0a;
        CCAPM0=0x42;        
          IPH=0x08;
        IP=0x08;
        AUXR=0x01;
        CR=1;
}


void main()
{
        init();
        
        while(1)
        {        
                CCAP0H=CCAP0L=0xcc;            
                if(CL!=0xff)
                {
                     if(CL<CCAP0L)            
                           PWM=0;
                     else
                           PWM=1;
                                
                }
                else
                {
                        CL=0;
                        CCAP0L=CCAP0H;
                }
               
        }

}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
moxigua
1楼-- · 2019-07-15 23:00
你把P1.3口赋值为强上拉试试
cylyxq
2楼-- · 2019-07-16 01:00
 精彩回答 2  元偷偷看……
moxigua
3楼-- · 2019-07-16 04:06
手册里面的,多看看手册啥的。
RO4EY15SBWT_07N(DPCJBS0.jpg
cylyxq
4楼-- · 2019-07-16 04:49
moxigua 发表于 2013-10-20 21:34
手册里面的,多看看手册啥的。

首先多谢你的指点!!
但我试了一下,我将P1M1=0;将P1M0=0x08,但PCA计数器还是不工作,不知道是我设置错误还是什么原因?
moxigua
5楼-- · 2019-07-16 07:09
  if(CL!=0xff)
                {
                     if(CL<CCAP0L)            
                           PWM=0;
                     else
                           PWM=1;
                                
                }
                else
                {
                        CL=0;
                        CCAP0L=CCAP0H;
                }

仔细看了下,既然要产生pwm,硬件就可以实现,为什么要加上这段呢???手册上面写的,当cl<CCAPnl的时候为高,而你在自己的程序中又加了个 "if(CL<CCAP0L)            PWM=0;",这是问题所在吧。。
个人意见,仅供参考。
EGL5{SZ2XG`3QASAU2ATT_1.jpg
111111111111.jpg
cylyxq
6楼-- · 2019-07-16 10:04
moxigua 发表于 2013-10-21 21:10
if(CL!=0xff)
                {
                     if(CL

抱歉,这几天实验室断网了,所以几天没上论坛了。我后来用示波器检测了输出的引脚,发现可以输出方波,占空比也根设置的一致,看来是我理解错了,
我以为是要靠编程来实现,现在才明白它是硬件PWM波,总之谢谢了!!

一周热门 更多>