Chapter 13
void receive_serial_data(void)
{
// Process received bytes.
if (DataRdyUSART())
{
// The serial port has received a byte.
// Read a received character.
if (RCSTAbits.OERR == 1)
{
// Overrun error.
// Clear the error and re-enable the receiver.
RCSTAbits.CREN = 0;
RCSTAbits.CREN = 1;
}
if (RCSTAbits.FERR == 1)
{
// Framing error.
// Reading a byte clears the error.
// Read the byte but don't use it.
serial_in = getcUSART();
}
else
{
// A character was received without a framing error.
serial_in = getcUSART();
switch (serial_in)
{
case 0x0a:
{
// A LF character was received, indicating the end
// of a command.
respond_to_command();
break;
}