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