"Teoría es cuando se sabe todo y nada funciona. Práctica es cuando todo funciona y nadie sabe porqué. En este recinto se conjugan Teoría y Práctica: nada funciona y nadie sabe porqué..."

---------------------------------------------------------------


Rutina para leer un Teclado Matricial con MC51

Con esta rutina podras leer un teclado matricial de 16 teclas (4 renglones y 4 columnas). En el puerto P2 del microcontrolador de la familia MC51 se conecta el teclado. El código de la tecla solicitada se regresa en el acumulador (de 00H a 0FH para teclas individuales, 10H si no se oprimio ninguna tecla y 11H si se oprimieron mas de una tecla). Puedes hacer uso del Sistema de Desarrollo mC51. La distribución de las teclas es la siguiente:




;**************************************
; ------- Rutina para detectar una tecla -------
;-----------------------------------------------------
TECLADO:
mov R6,#0EFH ;inicia las columnas (nibble alto)
mov A,R6

CHK_TEC:
mov P2,A ;envia columna
djnz R7,$
mov A,P2 ;lee el renglón
mov R5,A
anl A,#0FH
cjne A,#0FH,TEC_00 ;verifica si hay tecla
mov A,R6
rl A ;siguiente columna
mov R6,A
cjne A,#0FEH,CHK_TEC ;verifica última columna
mov A,#10H ;código de no_tecla
ret
;------------------------------------------------------------

TEC_00:
mov A,R5
cjne A,#7EH,TEC01
mov A,#0FH
ret

TEC_01:
cjne A,#7DH,TEC02
mov A,#0BH
ret

TEC02:
cjne A,#7BH,TEC03
mov A,#00H
ret

TEC03:
cjne A,#77H,TEC04
mov A,#0AH
ret

TEC04:
cjne A,#0BEH,TEC05
mov A,#0EH
ret

TEC05:
cjne A,#0BDH,TEC06
mov A,#09H
ret

TEC06:
cjne A,#0BBH,TEC07
mov A,#08H
ret

TEC07:
cjne A,#0B7H,TEC08
mov A,#07H
ret

TEC08:
cjne A,#0DEH,TEC09
mov A,#0DH
ret

TEC09:
cjne A,#0DDH,TEC0A
mov A,#06H
ret

TEC0A:
cjne A,#0DBH,TEC0B
mov A,#05H
ret

TEC0B:
cjne A,#0D7H,TEC0C
mov A,#04H
ret

TEC0C:
cjne A,#0EEH,TEC0D
mov A,#0CH
ret

TEC0D:
cjne A,#0EDH,TEC0E
mov A,#03H
ret

TEC0E:
cjne A,#0EBH,TEC0F
mov A,#02H
ret

TEC0F:
cjne A,#0E7H,TEC_ERR
mov A,#01H
ret

TEC_ERR:
mov A,#11H ;código de más de una tecla
ret