MOVLW LCDFuncion
CALL LCD_Comando ;
CALL Pausa_5ms
MOVLW LCDFuncion
CALL LCD_Comando
CALL Pausa_5ms
;
;
;
;
;
; Carga W con orden inicia LCD
y lo envía a la LCD
; ... y espera
; Repite la operación.
Si desea otra configuración de pantalla habrá de cambiar la siguiente
tanda de órdenes. Aquí encendemos la LCD, quitamos el cursor
y borramos
la pantalla, provocando que con cada carácter el cursor avance hacia la
derecha.
BCF LCD,LCDModo
MOVWF portB
CALL CLD_Chequea
BSF LCD,LCDModo
GOTO LCD_Habilita
;
;
;
;
;
Entramos en modo registro
y envía W a LCD en la puerta B
Explora la bandera de ocupado
Entra en modo ASCII
Envía carácter ASCII
LCD_Comando
; *****************************************************************************
; *** Carga W con una constante software LCD de la tabla anterior ***
; *** y saca el comando a la LCD, pulsando la línea de habilitación ***
; *** con LCD_Habilita para completar el comando
***
; *****************************************************************************
BCF LCD,LCDModo
MOVWF portB
CALL LCD_Chequea
GOTO LCD_Habilita
;
;
;
;
Entra en modo registro
y envía el comando a la puerta B
Chequea la bandera de ocupado
Y envía el comando
LCD_Caracter
; ***************************************************************************
; *** Carga W con el código del carácter ASCII para enviarlo a la ***
; *** LCD. Después activa la LCD con LCD_Habilita para
***
; *** completar el envío
***
; ***************************************************************************
BCF LCD,LCDModo
MOVWF portB
CALL LCD_Chequea
BSF LCD,LCDModo
GOTO LCD_Habilita
;
;
;
;
;
Entra en modo registro
y envía W a la LCD en la puerta B
explora la bandera de LCD ocupado
Entra en modo ASCII
Y envía en carácter ASCII
LCD_Chequea
; ****************************************************************************
; *** Explora el estado de la bandera Busy (ocupado) de la LCD
***
; *** Y espera que termine cualquier comando previo antes de
***
; *** volver a la rutina que le llamó
***
; ****************************************************************************
BSF LCD,LCDModo
BSF estado,banco
MOVLW 0xFF
MOVWF TRISB
BCF estado,banco
BSF LCD,LCDE
NOP
Bucle BTFSC portB,7
GOTO Bucle
BCF LCD,LCDE
BCF estado,banco
CLRF TRISB
BCF estado,banco
BCF LCD,LCDModo
RETURN
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
76
Coloca la LCD en modo Lectura
Coloca la página 1 de registros
Configura como entrada la puerta B
cambiando el trisB
Vuelve a la página 0 para leer el puerto B
Habilita la LCDE
Pausa para a 8 MHz esperar la estabilidad
de salidas LCD
Explora el bit de ocupado LCD y
espera a que valga 1 (si es 0, está ocupado).
Deshabilita la LCD
Coloca la página 1 de registros
Coloca de nuevo el puerto B
como de todo salidas
Y regresa a la página 0
Pone la LCD en modo escritura
Aquí la LCD ya está libre