pic Jul. 2016 | Page 78

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