Si no me equivoco a las rutinas de delay no podes pasarle como parámetro un número con decimales. Además, con cristal de 4MHz el tiempo por instrucción es de 1 us así que cualquier delay tiene que ser múltiplo de 1us (o sea 1, 2, 5, etc. siempre entero).
Otra cosa es que si mantenés una tecla presionada en el remoto el "bit 3" tiene que ir alternando su valor. Aunque no creo que sea por ésto que no te esté funcionando.
Como en C es muy difícil tener un control del tiempo tendrías que simularlo o bien con el MPLAB o con Proteus para saber cuanto tiempo está demorando cada bit en ser transmitido. Yo me arriesgaría a pensar que el tema viene por ahí...
También te conviene incluir la directiva fast_io para el puerto B.
Posiblemente CCS genere este código asm para hacer "1" tu salida....
bcf STATUS,RP0
bcf STATUS,RP1
bsf PORTB,0
Algo similar ocurriría para hacer "0" la salida
Entonces ya hay tres ciclos de instrucción más por cada cambio de salida así que eso incorpora 3 us de delay (si se usa un cristal de 4MHz)... Así que imaginate a cuanto se te puede ir el delay agregado, además falta sumar el tiempo que insume evaluar el ciclo for... Por ello va a ser necesario que lo simules utilizando breakpoints o haciéndolo paso a paso para saber bien el tiempo que estás tardando.