2012-11-22 79 views
0

當我嘗試使用PICMicro C編譯器編譯PIC程序的代碼時,出現中斷服務程序部分的錯誤「不完整類型不允許」驗證碼:PIC的中斷服務程序「不完整類型不允許」用於PIC

char chB = 0; 
int clicks = 0; 
void interrupt ISR(void) //incomplete type is not allowed 
{ 
    if(RBIF == 1) 
    { 
     clicks++; 
     chB = PORTB; 
     RBIF = 0; 
    } 
} 

檢查多個來源後,我仍然沒有看到如何服務程序不正確地寫入..

編輯: 感謝您的幫助,我已經找到了解決辦法:

char chB = 0; 
int clicks = 0; 
#pragma vector = 0x04 
__interrupt void isr(void) 
{ 
    if(RBIF == 1) 
    { 
     clicks++; 
     chB = PORTB; 
     RBIF = 0; 
    } 
} 
+0

如果你使用的GCC,嘗試用'無效__attribute__((中斷))ISR(無效)' – Jigsore

+0

我懷疑'ISR'標識符是需要ISR名稱的宏... – 2012-11-22 05:44:03

+0

@ H2CO3 ISR標識符是一個隨機函數名稱。我更改爲其他名稱,它仍然不工作.. – staca

回答

1

「中斷ISR」不是有效的名稱,因爲它有一個空格。 void interrupt_isr(void)應該沒問題。

+0

中斷關鍵字需要將該功能標識爲中斷服務程序,否則將被視爲正常功能,並且中斷可能無法按要求運行。 – staca

0

對於PIC16xxx系列MCU採用這種形式:

void interrupt() { 

    } // end interrupt