PIC16F877A最小系統(tǒng)原理圖+定時(shí)器控制LED
掃描二維碼
隨時(shí)隨地手機(jī)看文章
利用周末完成對(duì)PIC的入門,交上一份小作業(yè),寫下一點(diǎn)小經(jīng)驗(yàn),給后來者做為參考。
隨便時(shí)間推移,PIC也出現(xiàn)了許多廉價(jià)編程器,我使用的是K149-BC,帶編程鎖緊座,也可ICSP用。官網(wǎng)(http://www.kitsrus.com/)有制作資料可供參考,我買的是成品,¥100元不到,USB轉(zhuǎn)UART使用的是PL2303,相信比FT232差,但似乎不影響這款編程器使用。源程序在MPLAB 7.6+PICC 8.05測(cè)試通過。
原理圖與源程序都比較簡(jiǎn)單,值得注意的地方有:
1. 我們一般只使用12V高壓編程,PIC的低壓編程引腳必須下拉,或者在CONFIG中使低壓編程失效,否則MCU無(wú)法正常運(yùn)行。
2. 因?yàn)榫幊唐鞯腣PP為12V高壓,使用中要注意不可接入其他引腳,同時(shí)MCU的VPP也作為復(fù)位腳,要接入復(fù)位電路,這里我直接上拉。要注意的時(shí)編程器不動(dòng)作時(shí)可能有較強(qiáng)的拉電流能力,如果接上編程器后測(cè)得VPP電壓過低,要適當(dāng)減小上拉電阻。
3. 定時(shí)器0的“內(nèi)部時(shí)鐘”指的是使用“系統(tǒng)時(shí)鐘”而非“內(nèi)部振蕩”,(16F877A也沒有內(nèi)部振蕩)。
#include
__CONFIG(HS & PWRTEN & LVPDIS & WDTDIS & BOREN);
//高速晶振,上電延時(shí)有效,低壓編程無(wú)效,看門狗無(wú)效,掉電檢測(cè)有效
void timer0_init()//Timer0初始化設(shè)置
{
PSA=0 ;//Timer0 使用預(yù)分頻器
PS0=0 ;//Timer0選擇分頻率為1:128
PS1=1 ;
PS2=1 ;
T0CS=0 ;//內(nèi)部時(shí)鐘(即系統(tǒng)時(shí)鐘)
TMR0=0xD5 ;
}
void port_init(void)//端口初始化
{
TRISA=0xfe;//RA0配置為輸出
}
void device_init(void)
{
port_init();
timer0_init();
T0IE=1 ;//Tiemr0中斷允許
GIE=1 ;//總中斷允許
}
void interrupt IRQ(void)//中斷子程序
{
static unsigned int count=0;
static bit ledonoff=0;
if(T0IF)//Timer0中斷服務(wù)子程序
{
T0IF=0 ;//清定時(shí)器中斷標(biāo)志
TMR0=0xD5 ;//重設(shè)定時(shí)器初值
if(count++>500)
{
count=0;
ledonoff=!ledonoff;
RA0=ledonoff;
}
}
}
int main(void)
{
device_init();
RA0=1;
while(1)
{
;
}
return 0;
}