Viết như sau (lấy ví dụ xử lý UART và ngắt INT1 ở phần low priority, thứ tự xét là UART rồi đến INT1):
Code:
void dclk_handler( void ); //RB0
void rx_handler( void ); //uart
void reset_button(void); //RB1
#pragma code dclk_interrupt = 0x08
void high_vector( void )
{
_asm goto dclk_handler _endasm
}
#pragma code low_interrupt = 0x18
#pragma interruptlow low_vector
void low_vector(void)
{
//code gọi các hàm xử lý các ngắt low priority
if (PIR1bits.RCIF) rx_handler();
if (INTCON3bits.INT1IF) reset_button();
}
#pragma code
#pragma interrupt dclk_handler
void dclk_handler(void) {
//code của phần high priority
}
void rx_handler(void) {
//code cho xử lý ngắt UART
}
void reset_button(void) {
//code cho xử lý ngắt INT1
}
Chú ý: code vừa được chỉnh lại.
Thân,