Uploaded by katymire.96

DEBER 8 Barrido de Teclado Modificado-convertido

advertisement
Escuela Politécnica Nacional
Sistema Microprocesados
Nombre: Correa Defaz Lenin Andrés
Fecha: 18/08/2020
Escribir el programa de barrido de teclado modificado
.def tempo=r16
.def tecla=r17
.def ante=r18
.def columna=r19
.def fila=r20
.def aux=r21
.cseg
ldi
out
ldi
out
out
.org 0x00
tempo,0b0001_1111 ; salida leds PA0 a PA4
ddra,tempo
tempo,0b0000_0000; nada
ddrc,tempo
ddrd,tempo
ldi tempo,0b1110_0000
out porta,tempo
ldi tempo,0b1111_1111
out portc,tempo
out portd,tempo
in tempo,mcucr
andi tempo,0b11101111
out mcucr,tempo
ldi aux,4
ldi ante,16
ldi
out
ldi
out
Lazo_barrido:
tempo,0b1111_0000 ;F salida, C:entradas 0B_C3_C2_C1_C0_F3_F2_F1_F0
ddrb,tempo
tempo,0b0000_1111; F:Salidas 0L C:1L
portb,tempo
ldi columna,16
ldi tempo,0b0000_1111 ; Leo las columnas
out portb,tempo
sbis pinb,0
ldi columna,0
sbis pinb,1
ldi columna,1
sbis pinb,2
ldi columna,2
sbis pinb,3
ldi columna,3
cpi columna,16 ;ninguna tecla presionada
breq tecla_soltada
ldi tempo,0b0000_1111 ;Filas:entrada, Columnas:salida
out ddrb,tempo
ldi tempo, 0b1111_0000 ;pull up
out portb,tempo
sbis pinb,4;leo las Filas
ldi fila,0
sbis pinb,5
ldi fila,1
sbis pinb,6
ldi fila,2
sbis pinb,7
ldi fila,3
mul fila,aux ;Filas =4*Filas
add columna,R0; Columna= 4F+C
clr R0
cp columna,ante ;compara con la tecla anterior
breq lazo_barrido
mov ante,columna
tecla_presionada:
ori columna,0b1111_0000
out porta,columna
rjmp lazo_barrido
tecla_soltada: ;si no presionada nada
ldi tempo,0b1110_0000 ; me manda OL a la salida
out porta,tempo
rjmp lazo_barrido
SIMULACIO
N:
TECLA CERO:
TECLA UNO:
TECLA NUEVE:
TECLA 15:
TECLADO IMPLEMENTANDO
NUMERO = 4* #FILA + #COLUMNA
EJEMPLO: (CUANDO SE LEE COMO ENTRADAS)
SI PB0= 0L, ENTONCES #COLUMNA=0 Y PB6=OL, ENTONCES #FILA= 2
NUMERO = 4*2+0 = 8
Download