mi problema es que no puedo hacer que aparescan las letras en el lcd solo puedo lograr inicializarlo
pero cuando se supone que llega a la parte de mandar las letras pues como que se vuelve loca la pantalla y por mas que le busco no encuentro el error para no tener problemas con el tiempo de los comandos le dejo como medio segundo entre las intrucciones y aun asi no pitufa

que podra ser les dejo el codigo espero alguine me pueda ayudar con esto gracias en este despues de iniciarlo solo mando una "A"
; ************ ENCABEZADO ***********
#INCLUDE <P16F877A.INC>
__CONFIG _WDT_OFF & _CP_OFF & _CPD_OFF & _LVP_OFF & _XT_OSC
LIST P=16F877A
PORTE EQU 09h;BANCO 0
TRISE EQU 89h;BANCO 1
PORTB EQU 06h;BANCO 0
TRISB EQU 86h;BANCO 1
PORTD EQU 08H
TRISD EQU 88H
PORTC EQU 07H
TRISC EQU 87H
STATUS EQU 03h;BANCO 0
RP0 EQU 05h;
;RET EQU 20h;
;*********CONFIURAR PUERTOS************
BSF STATUS,RP0
MOVLW 00h
MOVWF TRISB;TODOS SALIDA
CLRF TRISE;TODOS SALIDA
MOVLW 0XFF
MOVWF TRISD
MOVWF TRISC
BCF STATUS,RP0
CLRF PORTB
CLRF PORTE
CLRF PORTC
CLRF PORTD
;******************************
;PORTE 0 para el R/W
;PORTE 1 PARA EL RS
;PUERTO B PARA LOS DATOS
; CALL RET;
CALL INI
INICIO BSF PORTE,0
MOVLW 41H
MOVWF PORTB
CALL MAN
CALL RET
GOTO INICIO
BSF PORTE,1
INI BCF PORTE,0
MOVLW 38H
MOVWF PORTB
CALL RETARDO
CALL MAN
CALL RETARDO
MOVLW 0FH
MOVWF PORTB
CALL RETARDO
call MAN
CALL RETARDO
BSF PORTE,0
goto FIN
;***********************************
RETARDO MOVLW 0XE0
MOVWF 20h
CLRF 21h
CLRF 22H
CLRF 23H
LEAP1 INCFSZ 20h
GOTO LEAP2
RETURN
LEAP2 INCFSZ 21h
GOTO LEAP2
GOTO LEAP3
LEAP3 INCFSZ 21h
GOTO LEAP3
GOTO LEAP4
LEAP4 INCFSZ 21h
GOTO LEAP4
GOTO LEAP1
;**********************
RET CLRF 20h
LE1 INCFSZ 20h
GOTO LE1
RETURN
;****************************
MAN BCF PORTE,1
CALL RETARDO
BSF PORTE,1
RETURN
FIN
END