Documentos de Académico
Documentos de Profesional
Documentos de Cultura
list p=16F84A
#include P16F84A.inc
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;**** Definicion de variables ****
NTecla equ 0x0C ; Seleccionamos posici�n en la memoria RAM (GPR) para
guardar
W_Temp equ 0x0D ; Registro para guardar temporalmente W.-
STATUS_Temp equ 0x0E ; Registro para guardar temporalmete STATUS
;---> Aqui haremos copia de respaldo para mostrar como se hace aunque no es
; necesario ya que el micro no hace otra tarea mientras tanto <---
Ultima_tecla
btfss PORTB,3 ; Ya se revisaron todas las filas?
goto Null_tecla ; Si, Falsa alarma, no se ha presionado ninguna.-
bsf STATUS,C ; No, seguimos con la siguiente.Pone a 1 Bit C
rlf PORTB,1 ; asi la Fila 1 pasa a 1 con la rotaci�n a izqda.
goto Test_Columnas
Null_tecla
clrf NTecla ; Coloca variable Tecla a 0 (Ninguna)
bcf INTCON,RBIF ; Borramos bandera de Interrupcion.-
clrf PORTB ; Dejamos Puerto para recibir otra tecla.-
return ; y regresa.
Suelta_tecla
; Ahora se espera a que la tecla sea soltada para evitar rebotes
; y reactivaciones de tecla
Espera1
btfss PORTB,4 ; Si no se suelta la tecla FILA 1
goto Espera1 ; vuelve a esperar.
Espera2
btfss PORTB,5 ; Si no se suelta la tecla FILA 2
goto Espera2 ; vuelve a esperar.
Espera3
btfss PORTB,6 ; Si no se suelta la tecla FILA 3
goto Espera3 ; vuelve a esperar.
Espera4
btfss PORTB,7 ; Si no se suelta la tecla FILA 4
goto Espera4 ; vuelve a esperar.