gracias por responder, no se que sucede pienso que la forma como estructuro la rutina no es muy compatible con el algoritmo de proteus, o quiza la forma como se inicializa el display, acá te presento parte del código
RUTINA DEL DISPLAY
display_4b movlw b'00101000' ;CODIGO PARA DISPLAY A 4 BITS
call c_display_4b
;movlw b'00111000' ;CODIGO PARA DISPLAY A 8 BITS
;call c_display_4b
;==================
movlw b'00001100' ;CODIGO QUE ACTIVA EL DISPLAY
call c_display_4b
movlw b'00000110' ;CODIGO QUE DEFINE EL CURSOR PARA
call c_display_4b ;QUE SE DESPLACE HACIA LA DERECHA
;movlw b'00000111' ;CODIGO QUE DEFINE EL CURSOR PARA
;call c_display_4b ;QUE DESPLACE HACIA LA IZQUIERDA
;TODO EL MENSAJE
movlw 0x01 ;LIMPIA EL DISPLAY
call c_display_4b
;======================================
movlw h'80' ;DIRECCION DONDE SE VA A EMPEZAR A
call c_display_4b ;ESCRIBIR EL MENSAJE " HOLA "
movlw "H" ;SE CARGA EL CARACTER Y SE ENVIA
call d_display_4b ;AL LCD
movlw "O"
call d_display_4b
movlw "L"
call d_display_4b
movlw "A"
call d_display_4b
nop
goto $-1
;====================================================================
c_display_4b bcf porta,rs ;RUTINA DE DISPLAY LCD
goto $+2 ;PARA TRABAJAR A CUATRO BITS
d_display_4b bsf porta,rs
bsf porta,e
call tiempo_d
movwf portb
call nop_10
bcf porta,e
bsf porta,e
call tiempo_d
swapf portb,f
call nop_10
bcf porta,e
call tiempo_d
return
;====================================================================
nop_10 nop ;RETARDO DE 10 Ms PARA ACTIVAR EL
nop ;ENABLE DEL LCD
nop
nop
nop
nop
return
;====================================================================
tiempo_d nop ;RETARDO DE 2048 Ms TIEMPO QUE DEBE
nop ;ESPERAR ANTES DE ENVIAR OTRO DATO
nop ;AL LCD
nop
nop
decfsz conta1,f
goto tiempo_d
return