Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
- LIST P=16F84A
- INCLUDE <P16F84A.INC>
- CBLOCK 0x0C
- ContadorTeclasPulsadas
- GuardaValor
- Operando1
- Operando2
- Operando3
- Resultado
- ENDC
- VisualizaHex MACRO Operando,Caracter
- movf GuardaValor,W ; Recupera el valor y lo visualiza.
- movwf Operando ; Lo guarda para sumar después.
- call LCD_Nibble ; Visualiza el valor en la pantalla
- movlw Caracter
- call LCD_Caracter ; Visualiza el signo '+' ó '-' según corresponda.
- incf ContadorTeclasPulsadas,F
- ENDM
- VisualizaDec MACRO Operando,Caracter
- movf Operando,W ; (Operando) -> (W)
- call BIN_a_BCD ; Lo pasa a BCD.
- call LCD_ByteCompleto ; Visualiza en pantalla.
- movlw Caracter ; A continuación signo '+' o '=' según corresponda.
- call LCD_Caracter
- ENDM
- ORG 0
- goto Inicio
- ORG 4
- goto ServicioInterrupcion
- Inicio
- call LCD_Inicializa
- call Teclado_Inicializa
- clrf ContadorTeclasPulsadas ; Resetea este contador.
- movlw b'10001000' ; Habilita la interrupción RBI y la general.
- movwf INTCON
- Principal
- sleep ; Espera en modo bajo consumo que pulse.
- goto Principal
- ServicioInterrupcion
- call Teclado_LeeHex ; Obtiene el valor hexadecimal de la tecla pulsada.
- movwf GuardaValor ; Guarda el valor.
- movf ContadorTeclasPulsadas,W; Según el número de tecla pulsada realiza una
- addwf PCL,F ; función distinta.
- goto PrimeraTeclaPulsada
- goto SegundaTeclaPulsada
- goto TerceraTeclaPulsada
- PrimeraTeclaPulsada
- call LCD_Borra ; Borra la pantalla anterior.
- movlw MensajeHex ; En pantalla el mensaje "Hex:"
- call LCD_Mensaje
- VisualizaHex Operando1,'+'
- goto FinInterrupcion
- SegundaTeclaPulsada
- VisualizaHex Operando2,'+'
- goto FinInterrupcion
- TerceraTeclaPulsada
- VisualizaHex Operando3,'='
- movf Operando1,W ; Procede a la suma de los tres valores.
- addwf Operando2,W
- addwf Operando3,W
- movwf Resultado
- call LCD_Byte ; Visualiza el resultado.
- call LCD_Linea2 ; Ahora visualiza la segunda línea.
- movlw MensajeDec ; En pantalla el mensaje "Dec:"
- call LCD_Mensaje
- VisualizaDec Operando1,'+'
- VisualizaDec Operando2,'+'
- VisualizaDec Operando3,'='
- VisualizaDec Resultado,' '
- clrf ContadorTeclasPulsadas ; Resetea este contador.
- FinInterrupcion
- call Teclado_EsperaDejePulsar; Espera a que levante el dedo.
- bcf INTCON,RBIF
- retfie
- Mensajes
- addwf PCL,F
- MensajeHex
- DT "Hex: ", 0x0
- MensajeDec
- DT "Dec: ", 0x0
- INCLUDE <TECLADO.INC>
- INCLUDE <LCD_4BIT.INC>
- INCLUDE <LCD_MENS.INC>
- INCLUDE <RETARDOS.INC>
- INCLUDE <BIN_BCD.INC>
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement