void sio_setup(void)
{
#define BAUD 19200
//#define SPBRG_VALUE ((PIC_CLK/(16UL * BAUD) -1))
#define SPBRG_VALUE ((PIC_CLK/(16UL * BAUD) -1))
#define BRGH_VALUE 1
SPBRG=SPBRG_VALUE;
SPBRGH=BRGH_VALUE; //data rate for sending (see 16F876 manual under 'USART')
BAUDCONbits.BRG16 = 0;
TXSTAbits.SYNC=0; //asynchronous
RCSTAbits.SPEN=1; //enable serial port pins
RCSTAbits.CREN=1; //enable reception
RCSTAbits.SREN=0; //no effect
PIE1bits.TXIE=0; //disable tx interrupts
PIE1bits.RCIE=1; //enable rx interrupts
RCONbits.IPEN=1; //enable interrupt priority
IPR1bits.RCIP=1; //make receive interrupt high priority
INTCONbits.GIEH=1; //enable all high priority interrupts
TXSTAbits.TX9D=0; //8-bit transmission
RCSTAbits.RX9=0; //8-bit reception
TXSTAbits.TXEN=0; //reset transmitter
TXSTAbits.TXEN=1; //enable the transmitter
//
rx_flagsbits.DataAvailable = 0;
rx_ptr=0;
}