微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STC15W408AS单片机的PWM问题,求指教。。谢谢

STC15W408AS单片机的PWM问题,求指教。。谢谢

时间:10-02 整理:3721RD 点击:
程序思想:中能对PCA模块0的CCAP0L和CCAP0H寄存器多次赋初值,来实现PWM占空比可调,这样的方法能行通吗?求大神指点。

#include<PWM.h>
unsigned char code PWM[8]={0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x00};//设置PWM占空比数组; 当CCAP0H的值为255时,理论上占空比应该为0
void pwm_init()
{   
    CL=0x00;
    CH=0x00;
   //省略PCA_PWM0=0x00;PCA模块0的PWM工作于8位PWM
       
}
void pwm_set(unsigned char a)
{       
       
        CCAP0L= a; //设置值直接写入CCAP0L
       CCAP0H= a; //设置值直接写入CCAP0H
        CCAPM0=0x42;//PWM0设置PCA工作方式为PWM方式,无PCA中断
        CR=1;
}
void main(void)
{
        pwm_init();//PWM初始化
        CMOD=0x02;//择PCA输入时钟源 CPS2 CPS1 CPS0,无中断使能
        //pwm_set(0xff);//设置PWM占空比为0,全低电平。NMOS管不导通
        while(1)
        {
                if(x<ADget<y)//while(x<ADget<y)具体再选择
                {
                        pwm_init();
                        pwm_set(PWM[0])
                        //delay();
                }
                if(x<ADget<y)
                {
                        pwm_init();
                        pwm_set(PWM[1]);
                        //delay();
                }
               
        }
}

本人没啥积分,,望各位赐教。程序有问题吗

应该可以的,我做过一个变PWM的项目,但是要求设置PWM在一个周期结束的时候更新占空比,就是使用影子寄存器,而不是直接立即更新的方式,看看芯片手册,了解是否支持,如果不支持,那么在跟新占空比的时候可能不是很平滑

影子寄存器,,是什么意思啊?是定义的中间变量吗?

有的芯片是有影子寄存器的,相当于一个中间变量,但是有控制位可以控制使用

能加一下QQ吗?赐教一下,,1319441689。我冒失没见到手册上有影子寄存器。还有一个问题就是怎样更新占空比呢,,我把CL.CH直0算不算呢,,,谢谢拉

你用的芯片型号是什么?

宏晶STC15W401AS单片机,我看了看手册,,没看到影子![qq]1319441689[/qq]

小编现在程序怎么样了。

小编喔加你一下qq问一下这款芯片的pwm配置问题,,嘿嘿谢谢哈

貌似好久没来逛了,,,手册是最好的教科书,看懂手册了基本上就差不多了

PCA用于PWM模块,就是通过改变CCAP0L和CCAP0H寄存器的值来实现调光!
回头来看看走来时的程序,发现这个程序思想差的太远了,程序需要多写多改。实际动手就会发现忽略了很多问题,AD转换不稳定、if(x<ADget<y)判断调光方式不可取、闪烁、平滑、最低亮度、程序过长后的可靠性、执行一条线的流程(中断应避免太长)!

能发我一份手册吗?谢谢!wanmeizy@foxmail.com

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top