inicializa_lcd MOVLW .5 ;carga el tiempo de retardo en w
CALL tiempo_w_x_1_ms ;llama a la subrutina de retardo
MOVLW b'00101000' ;inicializa el LCD
CALL lcd_comando ;datos a 4 bits(b4=0) 2 renglones(b3=1)
MOVLW b'00101000' ;5x7 pixels(b2=0) b1 y b0 no usados
CALL lcd_comando ;envía el comando dos veces
MOVLW b'00001100' ;activa el display(b2=1) cursor apagado(b1=0)
CALL lcd_comando ;parpadeo desactivado (b0=0)
MOVLW b'00000001' ;coloca el cursor en la 1º posición 1º renglón h00
CALL lcd_comando ;y limpia la pantalla
lcd_caracter BSF RS ;Si es un caracter pone en alto el pin RS del display
lcd_comando MOVWF Dato_LCD,0 ;Salva el dato a enviar al LCD
MOVLW 0x0F
ANDWF LCD_Port,F,0 ;Limpia el Nible alto del puerto
MOVLW 0xF0
ANDWF Dato_LCD,W,0 ;Limpia el Nible Bajo del dato y lo guarda en W
IORWF LCD_Port,F,0 ;Saca ese Nible por el puerto
BSF E ;Habilita el Enable
BCF E ;Deshabilita el Enable
MOVLW 0x0F
ANDWF LCD_Port,F,0 ;Limpia el Nible alto del puerto
SWAPF Dato_LCD,W,0 ;Limpia el Nible Alto del dato y lo guarda en W
ANDLW 0xF0
IORWF LCD_Port,F,0 ;Saca ese Nible por el puerto
BSF E ;Habilita el Enable
BCF E ;Deshabilita el Enable
BCF RS ;Pone en bajo el pin RS
MOVLW .2 ;Espera 2mS
CALL tiempo_w_x_1_ms
MOVF Dato_LCD,W,0 ;Recupera el dato en W
RETURN