最近在使用stc12c5410ad的PWM模塊功能,輸出固定頻率可調占空比的PWM波,下面是我寫的程序,產生25%和50%占空比的PWM波:
/****************************************************************************** 功能:固定頻率39kHz的可調脈寬的PWM 系統時鐘 :20MH
********************************************************************************/ #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%的脈沖信號,請高手幫我看看程序是不是有什么問題,感覺問題出現在PWM占空比的賦值上,但又不知道具體是什么。
|