A ver si es de prueba y a menos que no lo necesites yo no implementaria el perro... (watchdog). Bastantes fuentes de problemas tenemos siempre en electronica para unir uno mas. Usalo para depurar y si quieres en la fase final del programa. Ademas en el codigo que presentas tienes el watchdog desconectado por fuse y luego lo reseteas...
Otra cosa es que no se porque vuelves a escribir en el loop lo que debe mostrar el lcd, date cuenta que el lcd tiene su propio micro y memoria... no hace falta que lo refresques para nada si no es para escribir nada nuevo. Por eso debe parpadear.
Aqui tienes el codigo que yo propondira.
Codigo:
# include <16F876a.h>
# use delay(clock=4000000)
# fuses XT,NOWDT,NOPROTECT,NOLVP
# define use_portb_lcd TRUE
# include <lcd.c>
# USE FAST_IO(A)
# USE FAST_IO(B)
# USE FAST_IO(C)
void main(){
lcd_init();
printf(lcd_putc," Salida: ");
}