Ejemplo de la decodificación de un teclado lineal

Anuncio
Microcontroladores
Teclados
Teclados
Ejemplo de la decodificación de un
teclado lineal
4.7 kΩ x 8
0
P1.0
P3.0
P1.1
P3.1
P1.2
P3.2
P1.3
P3.3
1
2
220Ω x 7
a
f
3
4
P1.4
80C51
80C51
5
6
e
74LS244
74LS244
b
c
d
P3.4
P1.5
P3.5
P1.6
P3.6
P1.7
P3.7
7
g
E
Carlos E. Canto Quintal
4.7 kΩ
10kΩ x 4
Derecha
P3.0
P1.0
P3.1
P1.1
P3.2
P1.2
P3.3
P1.3
Izquierda
Up
Down
E1
P3.4
89C52
89C52
a
1
b
2
c
3
d
4
P1.4
P3.5
P1.5
P3.6
P1.6
P3.7
P1.7
L293B
E2
Carlos E. Canto Quintal
Microcontroladores
Teclados
Teclados
EL PATR
ÓN OBTENIDO SEG
ÚN LA TECLA OPRIMIDA
PATRÓN
SEGÚN
P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
Tecla 0
11 11 11 11 11 11 11 00
FEH
Tecla 1
11 11 11 11 11 11 00 11
FDH
Tecla 2
11 11 11 11 11 00 11 11
FBH
Tecla 3
11 11 11 11 00 11 11 11
F7H
Tecla 4
11 11 11 00 11 11 11 11
EFH
Tecla 5
11 11 00 11 11 11 11 11
DFH
Tecla 6
11 00 11 11 11 11 11 11
BFH
Tecla 7
00 11 11 11 11 11 11 11
7FH
Carlos E. Canto Quintal
Microprocesadores
Tabla de códigos de siete segmentos
Puerto3
Puerto3
a
a
f
g
e
f
b
c
c
d
d
a
a
b f
b
g
g
d
d
b
g
c
g
c
d
e
a
b
f
f
c
ef a
a
g
g
c
c
d
d
pd
g
f
e
d
c
b
a
número
a
0
0
1
1
1
1
1
1
0
3Fh
b
0
0
0
0
0
1
1
0
1
06h
c
0
1
0
1
1
0
1
1
2
5Bh
d
0
1
0
0
1
1
1
1
3
4Fh
e
0
1
1
0
0
1
1
0
4
66h
f
0
1
1
0
1
1
0
1
5
6Dh
0
1
1
1
1
1
0
1
6
7Dh
0
0
0
0
0
1
1
1
7
07h
0
1
1
1
1
0
0
1
E
79h
g
Cátodo común
b
b
e
c
a
código
Carlos Canto Quintal
Microprocesadores
códigos de 7 segs cátodo común
NC g
0
0
1
0
2
1
1
3
1
4
1
5
1
6
0
7
Error
1
f
1
0
0
0
1
1
1
0
1
e
1
0
1
0
0
0
0
0
1
d
1
0
1
1
0
1
1
0
1
c
1
1
0
1
1
1
1
1
0
b
1
1
1
1
1
0
0
1
0
Se podría cargar esta tabla en la memoria,
por ejemplo a partir de la localidad 200H
a
1
0
1
1
0
1
1
1
1
memoria de programa
3Fh
3Fh
06h
06h
5Bh
5Bh
4Fh
4Fh
66h
66h
6Dh
6Dh
7Dh
7Dh
07h
07h
79h
79h
200h
201h
202h
203h
204h
205h
206h
207h
208h
Carlos Canto Quintal
Microcontroladores
Teclados
Teclados
P3Å00
P3Å00
P1ÅFF
P1ÅFF
SI
Diagrama de flujo para el programa del teclado
lineal sin usar lectura a memoria de ccódigo
ódigo
AÅP1
AÅP1
DELAY
DELAY
A=FF?
A=FF?
P3ÅA
P3ÅA
no
A=FE?
A=FE?
no
A=FD?
A=FD?
A=FB?
A=FB?
A=F7?
A=F7?
A=EF?
A=EF?
A=DF?
A=DF?
A=BF?
A=BF?
A=7F=?
A=7F=?
no
SI
AÅ3Fh
AÅ3Fh
SI
AÅ06h
AÅ06h
SI
AÅ5Bh
AÅ5Bh
SI
SI
SI
SI
AÅ4Fh
AÅ4Fh
AÅ66h
AÅ66h
AÅ65h
AÅ65h
AÅ7Dh
AÅ7Dh
SI
AÅ06h
AÅ06h
AÅF9h
AÅF9h
Carlos E. Canto Quintal
Microcontroladores
Teclados
Teclados
P3Å00
P3Å00
Diagrama de flujo para el programa del teclado
lineal usando lectura a memoria de ccódigo
ódigo
P1ÅFF
P1ÅFF
DELAY
DELAY
DPTRÅ200H
DPTRÅ200H
P3ÅA
P3ÅA
AÅP1
AÅP1
SI
A=FF?
A=FF?
no
A=FE?
A=FE?
no
A=FD?
A=FD?
A=FB?
A=FB?
A=F7?
A=F7?
A=EF?
A=EF?
A=DF?
A=DF?
A=BF?
A=BF?
AÅ@A+DPTR
AÅ@A+DPTR
SI
AÅ0
AÅ0
SI
AÅ1
AÅ1
SI
AÅ2
AÅ2
SI
SI
SI
SI
AÅ3
AÅ3
AÅ4
AÅ4
AÅ5
AÅ5
AÅ6
AÅ6
SI
A=7F=?
A=7F=?
no
AÅ7
AÅ7
AÅ8
AÅ8
Carlos E. Canto Quintal
Microcontroladores
Teclados
Teclados
0000h
LJMP
LJMP
01
01
00
00
Inicio del
programa
Interrupciones
Interrupciones
0100h
MOV
MOVP3,00
P3,00
Mapa de memoria para el
ejemplo
PROGRAMA
Sin
Sinusar
usar
0200h
3F
3F
Códigos de 7
segmentos
79
79
Carlos E. Canto Quintal
Microcontroladores
Programa fuente
TABLA
EQU
200H
RETARDO EQU
02 h
LJMP 100H
ORG 100H
INICIO: MOV DPTR,#TABLA
MOV P3,#00
MOV P1,#0FFH
OTRO: MOV A,P1
CJNE A,#0FFH,TECLA0
SJMP OTRO
TECLA0: CJNE A,#0FEH,TECLA1
MOV A,#0
SJMP LEE
TECLA1: CJNE A,#0FDH,TECLA2
MOV A,#01
SJMP LEE
TECLA2: CJNE A,#0FBH,TECLA3
MOV A,#02
SJMP LEE
TECLA3: CJNE A,#0F7H,TECLA4
MOV A,#03
SJMP LEE
TECLA4: CJNE A,#0EFH,TECLA5
MOV A,#04
SJMP LEE
Teclados
Teclados
TECLA5:
CJNE A,#0DFH,TECLA6
MOV A,#05
SJMP LEE
TECLA6: CJNE A,#0BFH,TECLA7
MOV A,#06
SJMP LEE
TECLA7: CJNE A,#07FH,ERROR
MOV A,#07
SJMP LEE
ERROR: MOV A,#08
SJMP LEE
LEE:
MOVC A,@A+DPTR
MOV P3,A
LCALL DELAY
SJMP OTRO
DELAY:
MOV R0,#RETARDO
AQUI:
DJNZ R0,AQUI
RET
ORG TABLA
DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0F9H
END
Carlos E. Canto Quintal
Descargar