; Definición de variables
cont1
cont2
cont3
tecla
EQU
EQU
EQU
EQU
0X0C
0X0D
0X0E
0X0F
;
;
;
;
Contador1 de la pausa
Contador2 de la pausa
Contador3 de la pausa
Número de Tecla
ORG 0X00
;Colocamos el vector de reset
GOTO inicio
; Y saltamos a la dirección 0x05, para evitar
; el vector de interrupción, en 0x04
BSF estado,banco
; Cambio de página para cambiar
;
los TRIS de cada puerto
; El puerto A es todo de salida
ORG 0X05
Inicio
MOVLW 0x00
MOVWF TRISA
MOVLW 0xF0
MOVWF TRISB
BSF opcion,rbpu
BCF estado,banco
borrar
cuerpo
chkcol
BCF leds,pulsada
; Borra que la tecla siga pulsada
CLRF tecla
MOVLW 0x0E
MOVWF teclado
; Tecla actual=0
BTFSS teclado,4
GOTO numtecla
; Chequea la columna 0 en busca de un '0'
; si encuentra un 0 muestra el número
;
de tecla pulsada
; si no encuentra el 0, incrementa el número de tecla
; Carga el retardo de 0.5 segundos
; Saca 0 a la fila 1, para testearla
INCF tecla
; Chequea la columna 1 en busca de un '0'
; si encuentra un 0 muestra el número
;de tecla pulsada
; si no encuentra el 0, incrementa el número de tecla
BTFSS teclado,6
GOTO numtecla
; Chequea la columna 2 en busca de un '0'
; si encuentra un 0 muestra el número de tecla
INCF tecla
; si no encuentra el 0, incrementa el número de tecla
BTFSS teclado,7
GOTO numtecla
; Chequea la columna 3 en busca de un '0'
; si encuentra un 0 muestra el número
;de tecla pulsada
; si no encuentra el 0, incrementa el número de tecla
INCF tecla
MOVLW 0x10
SUBWF tecla,w
BTFSC estado,Z
GOTO cuerpo
BSF estado,C
RLF teclado
GOTO chkcol
numtecla
; Conectamos las resistencias de polarización
; interna del puerto B
; Cambio de página de nuevo al banco 0
; Borra el contador
; Borra el contador
BTFSS teclado,5
GOTO numtecla
UltTec?
Las patillas RB0-RB3 representan las filas del
teclado, y son salidas
Las patillas RB4-RB7 representan las columnas,
y son entradas
CLRF cont1
CLRF cont2
MOVLW 0x08
MOVWF cont3
INCF tecla
pulsada
;
;
;
;
MOVF tecla
MOVWF leds
;
;
;
;
;
;
;
;
Carga W con el número de teclas +1
y lo compara con el valor actual de tecla
Si hemos llegado a Tecla+1 acabamos
el ciclo de filas
y no se habrá pulsado ninguna tecla
Y ponemos a 1 el bit C para...
que la fila 1 pase a ser un 1 en la rotación de pilas,
y el 0 se desplace
; Pasa el valor de la tecla a los LED's
59