最近在使用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占空比的賦值上,但又不知道具體是什么。
程序很簡單,應該沒錯。我建議你加個led燈來判斷一下 執行的步驟問題。
我懷疑你的STC芯片自己復位了。我遇到過自己復位的情況。 你在while(1) 上面加一個開機LED的閃爍 看看啥情況。
歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |