最近在使用stc12c5410ad的PWM模塊功能,輸出固定頻率可調(diào)占空比的PWM波,下面是我寫的程序,產(chǎn)生25%和50%占空比的PWM波:
/****************************************************************************** 功能:固定頻率39kHz的可調(diào)脈寬的PWM 系統(tǒng)時(shí)鐘 :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時(shí)鐘源來自系統(tǒng)時(shí)鐘 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%……循環(huán)下去;(百分比為PWM的占空比,代表一個(gè)波形,波形就不畫了)
可是我用示波器觀察輸出結(jié)果,波形輸出順序:25%,50%,25%,50%,50%,50%,25%,50%,25%,50%,50%,50%,25%……。多出了兩個(gè)占空比50%的脈沖信號(hào),請(qǐng)高手幫我看看程序是不是有什么問題,感覺問題出現(xiàn)在PWM占空比的賦值上,但又不知道具體是什么。
|