;
;
;
;
;
;
;
;
******************************************************************************
*** OPTION.7 = 0 Resistencias de polarización deshabilitadas
***
*** OPTION.6 = 0 Interrupción externa por flanco bajada (no se usa) **
*** OPTION.5 = 0 Fuente de reloj interna
***
*** OPTION.4 = 0 Flanco de señal externa (no lo usamos)
***
*** OPTION.3 = 0 Divisor asignado al TMR0
***
*** OPTION.2 = 1 OPTION.1= 1 OPTION.0= 0 División por 128
***
******************************************************************************
CLRF TRISB
; La puerta B es toda de salida
BCF estado,banco
; Volvemos a la página 0
CLRF portb
; Borramos todos los LEDS
CLRF contador
; Contador = 0
MOVLW 0xB2
; Cargamos el timer con 78 decimal (0xB2)
MOVWF tmr0
MOVLW 0xA0
; 1010 0000 en binario
MOVWF intcon; Habilitamos GIE y T0IE (interrupción del timer0)
;************************** Cuerpo principal ****************************
; ****************** Mira si hay 20 cuentas de 10 ms ******************
; ********************* Y, si las hay, cambia el LED ********************
Bucle MOVF contador,w
XORLW 0x14
BTFSS estado,Z
GOTO Bucle
CLRF contador
BTFSS portb,1
GOTO Encien
Apaga BCF portb,1
GOTO Bucle
Encien BSF portb,1
GOTO Bucle
;
;
;
;
;
;
;
Se incrementa cada 10 ms en uno al
producirse la interrupción
Ha llegado a 200 ms si llevamos 20 (0x14) cuentas
Si es así, salta para cambiar el LED
Si no es así, prueba otra vez
El contador vuelve a 0 para iniciar el nuevo ciclo
Está encendido ? Si sí, apaga
; Apaga el LED
; Enciende el LED
; ****************** RSI: Rutina de servicio de interrupción ******************
; ****** Salta al desbordarse el TMR0, cada 10 ms **************************
RSI
BTFSS intcon,t0if
RETFIE
INCF contador,f
MOVLW 0xB2
MOVWF tmr0
BCF intcon,t0if
BSF INTCON,t0ie
RETFIE
;
;
;
;
;
Salta si la interrupción es TMR0
Interrupción desconocida, regresar
(es un mecanismo de seguridad).
El contador es incrementado cada 10 ms
Recarga el valor inicial del TMR0
; Borra la bandera de interrupción
; Habilita de nuevo la interrupción
END
5.3.6 Manejo de una pantalla LCD. Creación de una librería.
INTRODUCCIÓN
Una LCD estándar es una pantalla de cristal líquido con una matriz de 16, 32, 40 u
80 caracteres de 5x7 pixeles,
contando, además, con un microcontrolador
(generalmente el Hitachi 44780) que lo gobierna. Normalmente cada línea contiene
entre 8 y 80 caracteres, y suelen ser capaces de mostrar caracteres ASCII, japoneses,
griegos...; o símbolos matemáticos. Su bus de conexión puede ser de 4 u 8 bits.
67