PIC單片機(jī)增強(qiáng)型開發(fā)板產(chǎn)生兩路PWM
//*************************************************************
// |-| |-| |-|
// | | | | | |
// __| |________| |_______|_|_____------>PWM1
//
// |----| |----| |----|
// | | | | | |
// __| |_____| |____| |_------>PWM2
//本實(shí)驗(yàn)利用PIC單片機(jī)的CCP模塊功能產(chǎn)生PWM功能,PWM的周期為:
//(PR2+1)*4TOSC*(TMR2預(yù)分頻值)
//了解CCP模塊的CCP1CON寄存器功能,
//了解TMR2與CCP模塊的之間關(guān)系,
//掌握對(duì)CCP模塊的相關(guān)寄存器的初始化及設(shè)置
//軟件平臺(tái): HT-PICC編程器與MPLAB集成開發(fā)環(huán)境
//作者: 孫安青(Sun An-qing)
//利用CCP1模塊產(chǎn)生的PWM信號(hào)由RC2引腳輸出,
//同時(shí)利用CCP2模塊產(chǎn)生的PWM信號(hào)由RC1引腳輸出,兩者都可用示波器即可
//觀察到該P(yáng)WM波形.
修改者:Leo
時(shí)間:20101223
顯示效果讓LED燈顯示效果由亮到滅, 再到亮,再到滅。
代碼
#include
__CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);//對(duì)熔絲位進(jìn)行設(shè)置
#define uint unsigned int
uint num = 0;
void delay1ms(uint DelayTime)
{
uint temp;
for(;DelayTime>0;DelayTime--)
{
for(temp=0;temp<270;temp++)
{;}
}
}
void main(void)
{
//***********************************************************
CCP1M3=1;//Enable CPP1 Work as PWM mode
CCP1M2=1;
CCP1M1=1;
CCP1M0=1;
TRISC2=0;//Enable RC2 work as output
CCPR1L=0x10;//PWM脈寬值,改變PWM的脈寬,只需改變CCPR1L中的值
CCP1X=0;//以及CCP1CON中的CCP1X和CCP1Y這兩個(gè)位的值
CCP1Y=0;
//***********************************************************
CCP2M3=1;//Enable CPP2 Work as PWM mode
CCP2M2=1;
CCP2M1=1;
CCP2M0=1;
TRISC1=0;//Enable RC0 work as output
CCPR2L=0x20;//PWM脈寬值,改變PWM的脈寬,只需改變CCPR2L中的值
CCP2X=0;//以及CCP2CON中的CCP2X和CCP2Y這兩個(gè)位的值
CCP2Y=0;
//***********************************************************
TOUTPS3=0;//Enable TMR2--->1:1
TOUTPS2=0;
TOUTPS1=0;
TOUTPS0=0;
T2CKPS1=1;//Enable TMR2--->1:16
T2CKPS0=1;
TMR2ON=1;//Enable TMR2 Working
TMR2=0;
while(1)
{
for(;num <= 1023; num++)
{
PR2=num;//PWM周期,改變PWM的周期,只需改變PR2中的值即可
delay1ms(10);
}
}
}