Sdcc中定義中斷服務程序(ISR)時,中斷函數的格式
void interrupt_identifier(void) __interrupt interrupt_number using bank_number
{
}
另外一點就是ISR必須要在頭文件中申明,不然ISR的地址不會被鏈接程序放入對應的中斷向量表中。
導致中斷無法正確運行。
吐槽一下:
Keil沒有強制要求提前申明ISR,SDCC卻必須要這麼做,而且也沒有明確說明。
開源軟件好是好,但還不夠人性化,爲何一定要申明ISR呢,沒有任何道理。
這個問題困擾了好兩週時間,後來無意中發現中斷向量表中竟然沒有加入ISR。
下面的鏈接也是遇到了同樣的問題,供參考
http://blog.csdn.net/mcgrady_tracy/article/details/22729055