新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC單片機之中斷程序

PIC單片機之中斷程序

作者: 時間:2013-05-14 來源:網(wǎng)絡 收藏

void init_timer0(void)

{

OPTION_REG=0x87;

}

void interrupt isr(void)//,interrupt是個關鍵字說明該函數(shù),是中斷函數(shù)。

{

LED = ~LED;//改變LED的狀態(tài)

INTCONbits.TMR0IF=0;//清零中斷標志位 如果在離開前沒有清零,程序?qū)⒉煌5闹袛唷?P>TMR0=61;//給TMR0付初始值61 ,開始下一個50ms計時做準備。

//中斷函數(shù)結束 返回主函數(shù)。哪里來回 回那里去,也就是回到主函數(shù)的while(1);處

}

int main(int argc, char** argv)

{

init_fosc();

init_gpio();

init_timer0();

INTCONbits.GIE=1; //開啟總中斷

INTCONbits.TMR0IF=0;//清零TMR0溢出中斷標志位

INTCONbits.TMR0IE=1;//開啟TMR0溢出中斷

TMR0=61;

while(1);//主函數(shù) 在此什么都沒做一直在死循環(huán)。但等到50ms時間到了TMR0將會溢出,程序就會跳到void interrupt isr(void)處執(zhí)行。

}

我?guī)痛蠹依砬逑轮袛喑跏荚O置大致的步驟

1 ,開啟總中斷,開啟外設中斷。INTCONbits.GIE=1; INTCONbits.PEIE=1;其實即使沒用到外設開啟也無妨。

2 ,清楚相應中斷的標志位。如INTCONbits.TMR0IF=0;

3 ,開啟相應中斷。如INTCONbits.TMR0IE=1;

中斷函數(shù)/程序 中要注意的就是 清零相應的中斷標志位 如INTCONbits.TMR0IF=0; 否則單片機會認為中斷未被執(zhí)行 則一直中斷。


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉