;************************************** LCD_05.asm *************************************
;
; ===================================================================
; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
; www.pic16f84a.com
; Editorial Ra-Ma. www.ra-ma.es
; ===================================================================
;
; Cada vez que presiona el pulsador conectado al pin RA4 incrementa un contador
; visualizado en el centro de la primera línea de la pantalla.
; Otro boton lo decresera.
;
; ZONA DE DATOS **********************************************************************
LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CBLOCK 0x0C
Contador ; El contador a visualizar.
ENDC
#DEFINE Pulsador1 PORTA,4 ; Línea donde se conecta el pulsador.
#DEFINE Pulsador2 PORTA,3 ; Segundo Pulsador
; ZONA DE CÓDIGOS ********************************************************************
ORG 0
Inicio
call LCD_Inicializa
bsf STATUS,RP0
bsf Pulsador1 ; Línea del pulsador se configura como entrada.
bcf STATUS,RP0
clrf Contador ; Inicializa contador y los visualiza por 1ª vez,
call Visualiza
Principal
btfss Pulsador1 ; Lee el pulsador.
call Saludo ; displaya "Bienvenido"
call IncrementaVisualiza ; Si pulsa salta a incrementar y visualizar el
goto Principal ; contador
Secundario
btfss Pulsador2 ; Lee el pulsador.
call Despedida ; displaya "Buen dia"
call DecrementaVisualiza ; Si pulsa salta a Decrementar y visualizar el
goto Principal ; contador
; Subrutina "IncrementaVisualiza" -------------------------------------------------------
;
IncrementaVisualiza
call Retardo_20ms ; Espera a que se estabilicen los niveles de tensión.
btfsc Pulsador1 ; Vuelve a leer el pulsador.
goto Fin_Incrementa
incf Contador,F ; Incrementa el contador y después lo visualiza.
DecrementaVisualiza
call Retardo_20ms ; Espera a que se estabilicen los niveles de tensión.
btfsc Pulsador2 ; Vuelve a leer el pulsador.
goto Fin_Incrementa
decf Contador,F ; Decrementa el contador y después lo visualiza.
Saludo
call Retardo_20ms
call LCD_Inicializa
movlw 'B'
call LCD_Caracter
movlw 'i'
call LCD_Caracter
movlw 'e'
call LCD_Caracter
movlw 'n'
call LCD_Caracter
movlw 'v'
call LCD_Caracter
movlw 'e'
call LCD_Caracter
movlw 'n'
call LCD_Caracter
movlw 'i'
call LCD_Caracter
movlw 'd'
call LCD_Caracter
movlw 'o'
goto Fin_Incrementa
Despedida
call Retardo_20ms
call LCD_Inicializa
movlw 'A'
call LCD_Caracter
movlw 'd'
call LCD_Caracter
movlw 'i'
call LCD_Caracter
movlw 'o'
call LCD_Caracter
movlw 's'
goto Fin_Incrementa
Visualiza
movlw .7 ; Se sitúa en el centro de la línea 1.
call LCD_PosicionLinea1
movf Contador,W
call BIN_a_BCD ; Se debe visualizar en decimal.
call LCD_Byte
EsperaDejePulsar
btfss Pulsador1
btfss Pulsador2
goto EsperaDejePulsar
Fin_Incrementa
return
INCLUDE <RETARDOS.INC>
INCLUDE <BIN_BCD.INC>
INCLUDE <LCD_4BIT.INC>
END
; ===================================================================
; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
; E. Palacios, F. Remiro y L. López. www.pic16f84a.com
; Editorial Ra-Ma. www.ra-ma.es
; ===================================================================