最近在使用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 编辑 ]
|