que tal, he tenido ese problema y por lo que medio averigue es que pueda ser un problema de tiempo tiempo de ejecucion de instrucciones, yo lo solucione colocando un demora. aqui te dejo el codigo para que le eches una revisada, uso el 16f877 pero funciona igual para el 16f84 ya lo he hecho.
#include <16f877.h>
#use delay(clock=4000000,RESTART_WDT)
#include <lcd2.c>
#use fast_io(A)
#use fast_io(B)
main() {
lcd_init(); // Comandos de inicialización del LCD.
while(1)
{
restart_wdt();
lcd_enviar(LCD_COMANDO, LCD_CLEAR);
lcd_enviar(LCD_COMANDO, LCD_HOME);
lcd_putc("APRENDIENDO\n");
lcd_putc("HELLOOOOOO
");
delay_ms(2000);
restart_wdt();
lcd_enviar(LCD_COMANDO, LCD_CLEAR);
lcd_enviar(LCD_COMANDO, LCD_HOME);
lcd_putc("YUPIIIIIIIII
\n");
lcd_putc("YA APRENDIIIIII...)");
delay_ms(2000);
}
}
te dejo para que descargues el include que debes añadir en la carpeta driver del CCS: