Y como puedo saberlo? en la placa encima del crystal pone JWT20.000.. imagino que de 20MHz no?
Claro, casi seguro que es de 20MHz.
Y como vos habías configurado los bits para que pase directo la señal del cristal hacia el núcleo, tu PIC termina trabajando a 20MHz, entonces por ello es que no te envía bien los datos. Porque habías calculado la velocidad para una frecuencia de 4MHz.
Mirando el diagrama de la página 24 del datasheet del PIC, veo que el oscilador primario puede ser dividido en 4, 3, 2 o 1 (según la configuración de los bits CPUDIV). Así que no se podría hacer que trabaje a 4MHz
Se puede recalcular el TAD para 20MHz y cambiar en el programa PIC_CLK de 4000000 a 20000000. Con eso debería funcionar.
Sino también se puede configurar los CPUDIV para que divida 4, recalcular el TAD para 5MHz y cambiar PIC_CLK 4000000 por PIC_CLK 5000000