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