/* ~~~~ Interrupt Handler ~~~~ */
void rx_handler (void);
#pragma code rx_interrupt = 0x8
void rx_int (void)
{
_asm goto rx_handler _endasm
}
#pragma code
#pragma interrupt rx_handler
void rx_handler (void)
{
PORTBbits.RB5 = ~PORTBbits.RB5;
PIR1bits.RCIF = 0; // Clear Receive Interrupt Flag
}
void main(void)
{
TRISC = 0b11000000;
OpenUSART (
USART_TX_INT_OFF &
USART_RX_INT_ON &
USART_ASYNCH_MODE &
USART_NINE_BIT &
USART_CONT_RX &
USART_BRGH_HIGH, 103
);
RCONbits.IPEN = 1; /* Make receive interrupt high priority */
IPR1bits.RCIP = 1; /* Enable all high priority interrupts */
INTCONbits.GIEH = 1;
while(1);
}