PIC入門2,看門狗和PWM波產(chǎn)生實(shí)驗(yàn)
我使用的是愛(ài)晶3ePIC實(shí)驗(yàn)板,以下都是自己寫的程序,調(diào)試都是成功的,只是為了紀(jì)念和學(xué)習(xí)交流使用,別無(wú)它意。在我的
相冊(cè)里有板子的原理圖。
啟動(dòng)看門狗后,系統(tǒng)會(huì)在一定的時(shí)間內(nèi)重啟,當(dāng)遇到死循環(huán)的時(shí)候重啟系統(tǒng),在調(diào)試的時(shí)候ICD2配置字要求關(guān)掉看門狗,所以用ICD2把程序直接下載到芯片里執(zhí)行。
程序:
//適合3ePIC實(shí)驗(yàn)板,看門狗實(shí)驗(yàn)
#include
unsigned long i;
//初始化
void initial()
{
OPTION=0x0F;//把前分頻給WTD,且分頻倍率為1:128
TRISD=0x00;//D口輸出口,點(diǎn)亮LED
TRISE=0x00;//LED使能段
}
//延遲
void DELAY()
{
for(i=0;i<50000;i++)
continue;
}
//主函數(shù)
main()
{
initial();
RE0=0;
PORTD=0xFF;
DELAY();
PORTD=0x00;
while(1)
{
;//死循環(huán)
}
}
PWM波產(chǎn)生:
//該程序適合3EPIC實(shí)驗(yàn)板,用于使CCP1模塊產(chǎn)生10bit的PWM波,占空比為50%
#include
//CPP1初始化
void CCP1INIT()
{
CCPR1L=0x7F;//循環(huán)高8位為01111111=7F
CCP1CON=0x3C;//設(shè)置CPP1為PWM工作方式,工作循環(huán)低2位為11
INTCON=0x00;//禁止總中斷和外圍中斷
PR2=0xFF;//設(shè)置PWM波的周期
TRISC=0xFB;//設(shè)置CCP1的引腳為輸出模式
}
//主函數(shù)
main()
{
CCP1INIT();
T2CON=0x04;//打開TMR2,使其后分頻為1,
do//開始PWM波形
{
;
}while(1);//系統(tǒng)輸出PWM波形,如果系統(tǒng)是多任務(wù),不影響其它任務(wù)
}
第17腳RC2/CCP1為PWM輸出腳。