新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > stc單片機(jī)IO配置與PWM

stc單片機(jī)IO配置與PWM

作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏

所有PCA模塊都可用作PWM輸出(上圖)。輸出頻率取決于決于PCA定時器的時鐘源。

由于所有模塊共用僅有的PCA定時器,所有它們的輸出頻率相同。各個模塊的輸出占空

是獨(dú)立變化的,與使用的捕獲寄存器[EPCnL,CCAPnL]有關(guān)。當(dāng)寄存器寄存器CL的值小于[EPCnL,CCAPnL]時,輸出為低;當(dāng)寄存器CL的值等于或大于[EPCnL,CCAPnL]時,輸出為高。當(dāng)CL的值由FF變?yōu)?0溢出時,[EPCnH,CCAPnH]的內(nèi)容裝載到[EPCnL,CCAPnL]中。這樣就可實現(xiàn)無干擾地更新PWM。要使能PWM模式,模塊CCAPMn寄存器的PWMn和ECOMn位必須置位。由于PWM是8位的,所以:PWM的頻率=:PCA時鐘輸入源頻率/256PCA時鐘輸入源可以從以下8種中選擇一種:SYSclk,SYSclk/2,SYSclk/4,SYSclk/6,SYSclk/8,SYSclk/ 2,定時器0的溢出,ECI/P3.4輸入。。

舉例:要求PWM輸出頻率為38KHz,選SYSclk為PCA/PWM時鐘輸入源,求出SYSclk的值

由計算公式38000=SYSclk/256,得到外部時鐘頻率SYSclk=38000 x 256 x=9,728,000

如果要實現(xiàn)可調(diào)頻率的PWM輸出,可選擇定時器0的溢出率或者ECI腳的輸入作為PCA/PWM的時鐘輸入源

當(dāng)EPCnL = 0及CCAPnL=0x00H時,PWM固定輸出高

當(dāng)EPCnL = 1及CCAPnL=0xFFH時,PWM固定輸出低

例:

#definePCA_IDLE_DISABLE0//1:MCU在IDLE模式時禁止PCA工作。0:MCU在IDLE模式時允許PCA工作。

#definePCA_SOURCE_SELECT1//選擇PCA的基準(zhǔn)時鐘源。

//0:系統(tǒng)時鐘Fosc/12。

//1:系統(tǒng)時鐘Fosc/2。

//2:定時器0的溢出。

//3:ECI/P3.4腳的外部時鐘輸入(最大=Fosc/2)。

//4:系統(tǒng)時鐘Fosc。

//5:系統(tǒng)時鐘Fosc/4。

//6:系統(tǒng)時鐘Fosc/6。

//7:系統(tǒng)時鐘Fosc/8。

voiden_PCA(void)

{

CMOD= (PCA_IDLE_DISABLE << 7) | (PCA_SOURCE_SELECT << 1);//初始化PCA模式寄存器。

CL= 0x00;//清除PCA計數(shù)機(jī)

CH= 0x00;

CR= 1;//啟動PCA計數(shù)機(jī) CL 00->FF

}

void initPWM()

{

PWM=0x00;

PCA_PWM0=0x02;//初始化輸出0

CCAP0H= 0xFF;//初始化輸出0

CCAPM0= 0x42;//設(shè)置PCA模塊0工作在PWM模式.......................

PCA_PWM1=0x02;//初始化輸出0

CCAP1H= 0xFF;//初始化輸出0

CCAPM1= 0x42;//設(shè)置PCA模塊1工作在PWM模式

en_PCA();//打開PMW

}

DALE R01F采樣電阻,阻值是0.01歐

RXD為接收數(shù)據(jù)的引腳,TXD為發(fā)送數(shù)據(jù)的引腳

PMW0 輸出全1

PCA_PWM0=0x00;
CCAP0H = 0x00;


PMW0輸出全0
PCA_PWM0=0x00;
CCAP0H = 0x00;//set PWM wide


上一頁 1 2 下一頁

關(guān)鍵詞: stc單片機(jī)IO配置PW

評論


技術(shù)專區(qū)

關(guān)閉