pic Jul. 2016 | Page 69

; ; ; ; ; ; ; ; ****************************************************************************** *** 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