Suponiendo que sea una UART por hardware:
El problema es que la PICs gamas bajas solo tiene espacio para un caracter.
Si llegan 2, el modulo de la UART procede a bloquearse manteniendo el valor del primer caracter que llego, y avisa con una de las flags que ocurrio un OVERRUN, La forma de salir de este estado esta explicado en el datasheet, y es desactivar y volver a activar la recepcion. En el caso de CCS, creo que poniendo en la directiva ERRORS hace que el compilador agregue codigo para el manejo de esos errores y asi no se bloquee.
El problema esta en que ya los caracteres los perdiste.
Otras gamas de PIC posee buffers mas grandes. Pero esa es la desventaja que posee hacer la recepcion sin interrupcion, por eso lo mejor siempre es interrupcion en la recepcion.