#include #include 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) { unsigned char c; /* Get the character received from the USART */ c = getcUSART(); while(BusyUSART()); putcUSART(c); while(BusyUSART()); /* Clear the interrupt flag */ PIR1bits.RCIF = 0; } void main (void) { TRISB = 0; TRISCbits.TRISC6 = 0; TRISCbits.TRISC7 = 1; RCSTAbits.SPEN = 1; /* * Open the USART configured as * 8N1, 2400 baud, in polled mode */ OpenUSART (USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_LOW, 64); /* Enable interrupt priority */ RCONbits.IPEN = 1; /* Make receive interrupt high priority */ IPR1bits.RCIP = 1; /* Enable all high priority interrupts */ INTCONbits.GIEH = 1; /* Loop forever */ while (1) ; }