專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

關(guān)于PIC中斷

作者:姚遠(yuǎn)   來(lái)源:姚遠(yuǎn)   點(diǎn)擊數(shù):  更新時(shí)間:2014年07月03日   【字體:

 

 
 
PIC單片機(jī)有多個(gè)中斷源,16系列只有一個(gè)中斷入口,18系列有兩個(gè)中斷入口,不同編譯器下書(shū)寫格式又不大一樣。網(wǎng)上資源千篇一律,也不夠系統(tǒng),只是簡(jiǎn)單的羅列程序,代碼生存的環(huán)境不一樣也少有說(shuō)明。在此做個(gè)簡(jiǎn)單的總結(jié),因?yàn)橛肿吡藦澛?..
 
1.先說(shuō)18系列(MCC18編譯器下):
 
MPLAB C18不自動(dòng)把中斷服務(wù)程序放在中端向量處。通常將GOTO指令放在中斷向量處,從而把控制權(quán)轉(zhuǎn)交給相應(yīng)中斷服務(wù)程序。
 
void low_isr(void);
void high_isr(void); 
 
*****************************低級(jí)中斷入口及服務(wù)子程序************************************/
 
#pragma code low_vector=0x18//低優(yōu)先級(jí)中斷入口
void interrupt_at_low_vector(void)
{
 _asm  GOTO low_isr  _endasm
}
 
 
 
#pragma interrupt low_isr
#pragma code
void low_isr(void)
{
    //低優(yōu)先級(jí)中斷服務(wù)函數(shù)寫在這里
}
 
*****************************高級(jí)中斷入口及服務(wù)子程序************************************/
 
#pragma code high_vecotr=0x08//高優(yōu)先級(jí)中斷入口
void interrupt_at_high_vector(void)
{
 _asm  GOTO high_isr  _endasm
}
 
 
#pragma code
#pragma interrupt high_isr
void high_isr(void)
{
    //高優(yōu)先級(jí)中斷服務(wù)函數(shù)寫在這里
}
 
2.再說(shuō)18系列(PICC18編譯器下):
 
 
 
//void PIC18F_High_isr(void);
//void PIC18F_Low_isr(void);
 
 
*****************************低級(jí)中斷服務(wù)子程序************************************/
 
#pragma interrupt  lowlow_priority   PIC18F_Low_isr
void PIC18F_Low_isr (void)
{
 
        //低優(yōu)先級(jí)中斷服務(wù)函數(shù)寫在這里
 
}
 
*****************************高級(jí)中斷服務(wù)子程序************************************/
 
#pragma interrupt  PIC18F_High_isr
void PIC18F_High_isr (void)
 
{
 
       //高優(yōu)先級(jí)中斷服務(wù)函數(shù)寫在這里
 
}
 
3.三說(shuō)16系列(PICC編譯器下)(只有一個(gè)中斷入口,無(wú)所謂高了就):
 
void interrupt isr (void)
{
 
      //中斷服務(wù)函數(shù)寫在這里
 
}
 
 
 
 void init_interrupt()
 
{
 
 
      GIE=0;
      PEIE=1;
     IPEN=1;
 
     //TMR1IE=1;
    //TMR1IF=0;
    //TMR1IP=0;
    //TMR1L=61;                    
    //T1CON=0xC7;//set up timer0 - 8bit -prescaler
 
     //TMR0IE=1;
     //TMR0IF=0; 
     //TMR0IP=0;
    //TMR0L=61;                     
    //T0CON=0xC7;//set up timer0 - 8bit -prescaler 1:256 
 
      GIE=1;
 
}
 
就寫到這里吧,留著自己看,不再這再走彎路
 
關(guān)閉窗口

相關(guān)文章