После AVR кажется уж очень утомительным PIC18F2585

Подскажите плиз, кто пользовал Port Change Interrupt: как его заставить работать?
Среда MPLAB, компилятор MCC18, отладчик ICD2.
Делаю следующее:
Код
void IO_Init( void )
{
TRISBbits.TRISB5 = 1; // Input 0
TRISBbits.TRISB4 = 1; // Input 1
INTCONbits.RBIF = 0; // Clear RB Port Change Interrupt Flag bit
INTCONbits.RBIE = 1; // Enables the RB port change interrupt
}
void RBPortChangeInt_ISR( void )
{
if ( INTCONbits.RBIF ){
Nop();
INTCONbits.RBIF = 0; // Clear RB Port Change Interrupt Flag bit
}
}
На "нопе" ставлю breakpoint, но при отладке прерывание не происходит.{
TRISBbits.TRISB5 = 1; // Input 0
TRISBbits.TRISB4 = 1; // Input 1
INTCONbits.RBIF = 0; // Clear RB Port Change Interrupt Flag bit
INTCONbits.RBIE = 1; // Enables the RB port change interrupt
}
void RBPortChangeInt_ISR( void )
{
if ( INTCONbits.RBIF ){
Nop();
INTCONbits.RBIF = 0; // Clear RB Port Change Interrupt Flag bit
}
}
Остальные прерывания работают (UART,SPI,ExtInt0,ExtInt1,Timer0).
Что не так делаю? Может что нужное не делаю?
Спасибо.
-----------------
Как удалить пост не нашёл, поэтому пишу решение вопроса: я забыл добавить вызов обработчика прерывания RB Port Change Interrupt в глобальный обработчик низкоприоритетного прерывания:
Код
#pragma interruptlow MyLowISR
void MyLowISR(void)
{
// Handle low priority interrupts.
Timer0_ISR();
ExtInt0_ISR();
ExtInt1_ISR();
RBPortChangeInt_ISR(); // Эта строка
SPI_ISR();
UART_ISR();
}
#pragma code LowVector = 0x18
void LowVector (void)
{
_asm goto MyLowISR _endasm
}
#pragma code //# return to default code section #//
void MyLowISR(void)
{
// Handle low priority interrupts.
Timer0_ISR();
ExtInt0_ISR();
ExtInt1_ISR();
RBPortChangeInt_ISR(); // Эта строка
SPI_ISR();
UART_ISR();
}
#pragma code LowVector = 0x18
void LowVector (void)
{
_asm goto MyLowISR _endasm
}
#pragma code //# return to default code section #//