#include #include #include #include void rx_handler (void); #define BUF_SIZE 25 #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; c = ReadUSART(); if ( c == 's' ) { PORTB=0x00; } else if ( c == 'x' ) { PORTB=0xff; } /* Clear the interrupt flag */ PIR1bits.RCIF = 0; } void main (void) { TRISB = 0; OpenTimer2(TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_8); OpenPWM1(0xff); OpenPWM2(0xff); OpenUSART (USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 103); /* 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) ; }