Sei sulla pagina 1di 6

Universidad Central de Venezuela

Facultad de Ingeniera
Escuela de Elctrica
Departamento de Electrnica, Computacin y Control
Microprocesadores 1
Jhonny Martnez, 20597483
Caracas, 30 de mayo de 2014
Prctica 2
Teclado numrico para el
microcontrolador AT89s52
Introduccin
Hardware
Bases tericas
En el siguiente informe se realiza una amplia explicacin del desarrollo y puesta en marcha de la solucin del problema planteado para la prctica 2 que con-
siste en realizar a travs de un microprocesador 89s52 de Atmel el control de un teclado matricial de 4 x 4 que se comunique serialmente con una computadora.
El informe estar dividido en dos partes principales, Hardware y Software, dentro de cada parte se detallarn los aspectos ms importantes que se tomaron en
cuenta para esta prctica. El objetivo fundamental de esta prctica es la familiarizacin con las rutinas de interrupcin del lenguaje ensamblador y la confguracin
de comunicaciones seriales.
Aqu se tomarn en cuenta los elementos fsicos que se utilizaron para realizar la practica, se presenta un diagrama de bloques general donde se puede obser-
var la interconexin de cada uno de los elementos que conforman el sistema.
Todo el sistema esta centralizado en el microprocesador 89s52 de Atmel, que tiene cuatro puertos identifcados como P0, P1, P2 y P3 cada cual con carac-
tersticas especfcas que se irn mencionando durante la explicacin. Como complemento se tiene una unidad de teclado matricial que consiste en una matriz
de pulsadores que al presionarlos cortocircuitan la fla y la columna que coindide con la tecla presionada. Un circuito lgico para generar una seal que indique
cualquier actividad en el teclado matricial y un cristal de 11 MHz de frecuencia de oscilacin.
Detallando la utilizacin de los puertos de microprocesador tenemos que se utiliz el puerto P2 para la lectura del puerto, desde P2.0 hasta P2.3 se conectaron
las flas, mientras que desde P2.4 hasta P2.7 se conectaron las columnas, adems de esto se realiz un circuito lgico con compuertas or tal como se muestra
en la fgura 2, cuya salida se conecta al puerto P3.2 que corresponde al pin de activacin de la interrupcion externa 0, bajo la cual se program el sistema. El
puerto P3.1 que corresponde a la salida de transmisin para comunicacin serial se conect al driver MAX-232 cuya funcin fundamental es elevar la tensin de
la transmisin del microprocesador de 0 -- 5 V a -10 -- 10 V DC que es el estandar para la comunicacin serial hacia la PC, la utilizacin de este dispositivo es
sencilla, tal como se muestra en la fgura 3 junto con el diagrama circuital del sistema. A continuacin se muestra un diagrama de tiempo donde se esbozan los
diferentes procesos del sistema.
Para acoplar el software al hardware seleccionado se utiliz un software en sistema DOS llamado AEC_ISP (AT89s PC BASED PROGRAMMER V3.00) que se
conecta como se coloca en la fgura 4 y se confgura segn con los parmetros de la fgura 5. Dentro del programa se procede a cargar el archivo .hex generado
por el compilador KEIL C51 donde se realiz la programacin. Seguidamente se programa el microcontrolador con la confguracin establecida.
Como bse terica para realizar esta prctica es pertinente defnir y conocer las caractersticas de un teclado. Un teclado teclado es un perifrico de entrada,
es decir un dispositivo que permite introducir una informacin a un sistema digital, por lo general consta de piezas fsicas que forman parte de cierto circuito elec-
trnico y segn la disposicin que se tenga y la programacin del sistema para interpretar esta informacin, se comportar de una forma particular.
Existen distintos tipos de teclado en la actualidad ya que son uno de los dispositivos de entrada ms funcionales en la actual era informtica. Pero discriminan-
do los teclados fabricados en serie de marcas reconocidas, clasifcaremos los teclados segn el tipo de escaneo que se utiliza para leer las teclas. Los teclados
lineales son aquellos en los que cada pulsador tiene una lnea dedicada para conocer su estado y esta se conecta directamente al microprocesador y los teclados
matriciales son aquellos donde los pulsadores se disponen en flas y columnas, de manera que los pulsadores de la misma fla compartan la lnea que permite
conocer su estado.
Generalizando el proceso de escaneo del teclado hay que tener en cuenta en primer lugar se debe detectar que ha habido pulsacin y esperar a que la pulsa-
cin se estabilice para luego almacenar el patrn de bits que estimula las entradas del teclado y, segn ese cdigo, generar el cdido de la tecla pulsada segn
se necesite. Finalmente la informacin puede ser enviada desde el microprocesador hasta el dispositivo de salida (Pantalla o PC), mediante dos tipos de formas,
transmisin serial o transmisin paralela.
Figura 1 - Diagrama de tiempo generalizado del sistema
P3.2
F1
F2
F3
F4
C1
C2
C3
C4
IE0
TI
Retardo
20 ms
Retardo
0.25 s
Falsa
deteccin
Programa principal
Interrupcin externa 0
Interrupcin serial
Deteccin
Columna
Tecla no
soltada
Tecla
Soltada
Salida
Int. Serial
Deteccin
Fila
Inicio
Int. Serial
Retardo
20 ms
Retardo
0.25 s
Figura 3 - Plano detallado del circuito instalado
Figura 5 - Configuracin del AEC_ISP Figura 4 - Conexin de pines al puerto paralelo
Figura 2 - Diagrama de bloques general
Microprocesador
Atmel 89s52
Xtal
P2
TDX
Int Externa
A B C D
E F G H
I J K L
M N O P
Circuito
Lgico
MAX
232
AL PC
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0/T2
1
P1.1/T2EX
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C52
FILA 1
FILA 2
FILA 3
FILA 4
COL 1
COL 3
COL 4
COL 2
COL 4
COL 3
COL 2
COL 1
FILA 1
FILA 2
FILA 3
FILA 4
U2
AND_4
R1
160
R2
160
R3
160
R4
160
R5
160
R6
160
R7
160
R8
160
T1IN
11
R1OUT
12
T2IN
10
R2OUT
9
T1OUT
14
R1IN
13
T2OUT
7
R2IN
8
C2+
4
C2-
5
C1+
1
C1-
3
VS+
2
VS-
6
U3
MAX232
C1
1.0u
C2
1.0u
C3
1.0u
C4
1.0u
TX
TX
Software
El programa principal es sencillo, al principio se inicializan todos los registros para activar las interrupciones, la confguracin de los timer a utilizar y de la co-
municacin serial, estos registros son IE, TCON, TMOD y SCON. Dentro del registro IE se coloc EA=1 para activar todas las interrupciones, EX0=1 para activar
la interrupcion externa 0, ET1=1 para activar la interrupcin por timer 1. TMOD se coloc en el valor 20h confgurando as el timer 1 en modo 2, es decir, conteo
de 8 bits con autorecarga. Dentro de TCON se confgur TH1 en el valor FDh para que el baudrate fuera de aproximadamente 9.6 Kbyte/s y para fnalizar la
inicializacin se colocaron los registros para que el modo de operacin del puerto serial fuera el llamado, modo 1 (SM0=0 y SM1=1).
Una vez inicializados los registros, el sistema se coloca a la espera de que ocurra la primera interrupcin externa, verifcando el nivel del pin P3.2 constan-
temente. Una vez que se activa por un cambio en el nivel de alto a bajo de este pin, se procede a entrar a la interrupcion externa, primeramente se llama a un
retardo de unos 12 ms y luego se vuelve a verifcar el nivel del pin P3.2, si sigue en bajo pasa al proceso de lectura y movida del dato, para leer el dato se procede
a colocar el puerto P2 en el valor #0Fh, lo cual coloca las flas a valor bajo y las columnas a valor alto; dado el cortocircuito que produce el botn, una de las
columnas tendr valor bajo, se verifca cual de las columnas est en nivel bajo utilizando el comando JB como se muestra en el cdigo. Seguidamente se realiza
el proceso contrario, se colocan las flas en alto y las columnas en bajo, produciendo el mismo efecto, una de las flas se encontrar en nivel bajo en vez de alto.
Comprobada la fla y la columna, se le asigna el valor de la tabla correspondiente al registro de lectura (R6) y se procede a mover la informacin de la tabla a una
posicion de memoria conocida y determinada por el puntero R0, el cual se detalla luego, luego se deshabilita temporalmente la interrupcin externa y se sale de la
interrupcin. Si al comprobar luego del retardo de 12 ms que el pin P3.2 sigue en alto se pasa directamente al fnal de la interrupcin desactivando la interrupcin
externa de la misma manera.
Al salir de la interrupcin se comprueba si la tecla sigue presionada, si sigue presionada (P3.2 en nivel bajo) el programa se mantiene ah hasta que cambie este
estado. Una vez liberada la tecla se procede a entrar en la interrupcion serial activando el fag TI, dentro de la interrupcion externa se procede a la verifcacin de
si ya se han enviado todos los datos o no se ha terminado de enviar el dato fnal, esto se hace comparando los punteros de escritura contra otro que se actualiza
con cada movida al SBUF de los datos almacenados en la memoria ram interna, estos registros son R0 y R4; en caso de enviar un dato al SBUF, se actualiza el
puntero de escritura y antes de salir de la interrupcion se desactiva el fag TI y se habilita nuevamente la interrupcin externa. En caso de no enviar ningun dato
al SBUF simplemente se sale de la interrupcin activando IE0 y desactivando TI. Se vuelve al programa principal. A continuacin se presentan los diagramas de
fujo pertinentes para explicar claramente la lgica de
la solucin.
Los punteros utilizados en el cdigo son los siguien-
tes:
R6: se utiliz para asignar la posicin de la tabla
donde se va a leer dependiendo de la tecla presionada.
R0: se utiliz como puntero de direccin a memoria
ram interna donde se van guardando los datos leidos
de la tabla, adems se utiliza para leer el valor a enviar
al SBUF
R4: se utiliza para saber cual es el ltimo valor en-
viado y al compararlo con R0 se puede saber si el valor
enviado es el ltimo que se ha presionado, se actualiza
cada vez que un dato es enviado el SBUF y se iniciali-
za en la misma posicin que R0.
Tabla (tabconver): esta defnida en la memoria de
cdigo en la direccin 9000h y en esta se guardan los
valores hexadecimales correspondientes a los caracte-
res ASCII que se deseen mostrar.
Las banderas utilizadas para conocer si alguna tecla
sigue pulsada, si fue un rebote o si la tecla fue liberada
corresponden en todos los casos al pin 2 del puerto 3,
donde esta conectado el circuito lgico de deteccin.
El retardo se calcul de manera aproximada toman-
do en cuenta la frecuencia de oscilacin del cristal y se
detalla comentado en el cdigo que se presenta en la siguiente pgina.
Para realizar la comunicacin serial entre el microcontrolador AT89s52 con una PC compatible con puerto
serial se utiliza el driver MAX-232, el cual modifca la seal de transmisin serial que viene del microcontrolador y
la adapta a los estandares que soporta la computadora de escritorio, su utilizacin es relativamente sencilla. Es-
pecifcando el comportamiento del driver se puede decir que El MAX-232 es un doble emisor/receptor, es decir
contiene dos emisores que convierten los niveles de entrada TTL/CMOS a niveles de salida RS-232C (+-10V), y
dos receptores que efectuan la operacin inversa a niveles TTL/CMOS (0-5V). Su ventaja principal es que para
su funcionamiento requiere solamente de una fuente de alimentacin de 5V y condensadores.
Int Externa
RETI
Colocar el puerto 2 en
#0Fh
Si se
presion
una tecla?
Asignar valor segun fila
y columna al puntero de
lectura de la tabla
Mover valor de la tabla
a la posicin de memoria
de los valores por enviar
Incrementar
puntero de datos
leidos
Desactivar
la Int.
Externa 0
Retardo de 50 us
Col 4? Fila 1?
No
Si
Si Si
Si
Si
Si
Si
Si
No
No
Si
No
Col 3?
Col 2?
Col 1?
No
No
No
Fila 2?
Fila 3?
Fila 4?
Principal
Inicializar los registros y
activar las interrupciones
adecuadas
Interrupcin externa 0
Se activ
la INT EXT 0?
seg 025
Interrupcin serial
No
Se solt
la tecla?
No
Si
Si
Int. Serial
RETI
Enviar al SBUF
el siguiente dato
Se enviaron
todos los
datos al SBUF?
Incrementar
puntero de enviados
Desactivar TI
Activar IE0
No
Si
Cdigo del programa en Assembler
A51 MACRO ASSEMBLER TECLADO 05/28/2014 21:13:18 PAGE 1
MACRO ASSEMBLER A51 V8.02b
OBJECT MODULE PLACED IN teclado.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE teclado.a51 SET(SMALL) DE-
BUG EP
LOC OBJ LINE SOURCE
---- 1 Cseg at 0000h
0000 01F0 2 jmp Iniciobien ;Inicializacion del programa
---- 3 Cseg at 0003h
0003 2136 4 jmp externa ; Salto a interrupcion externa 0
---- 5 Cseg at 0023h
0023 211A 6 jmp serial; Salto a interrupcion serial
---- 7 Cseg at 00aah
00AA 8064 8 jmp ini2 ; Regreso de la interrupcion serial
---- 9 Cseg at 00f0h
00F0 10 Iniciobien:
00F0 B85102 11 CJNE R0,#51H,ini0 ; Comprobar si es el primer dato mandado!
00F3 801B 12 JMP ini2
00F5 13 ini0:
00F5 D2AF 14 SETB IE.7;Inicializacin del programa
00F7 D2A8 15 SETB IE.0
00F9 D2AC 16 SETB IE.4
00FB C288 17 CLR IT0
00FD 758920 18 MOV TMOD,#20H;confg del timer 1
0100 758DFD 19 MOV TH1,#0FDH
0103 D28E 20 SETB TR1
0105 D29E 21 SETB SCON.6 ;Modo 1 de comunicacion serial
0107 C29F 22 CLR SCON.7
0109 75A0F0 23 MOV P2,#0f0h
010C 7850 24 MOV R0,#50h
010E 7C50 25 MOV R4,#50h
0110 26 ini2:; Main program
0110 20B205 27 JB P3.2,ini3
0113 28 soltar1:
0113 30B2FD 29 JNB P3.2,soltar1
0116 D299 30 SETB TI; Inciar la TX serial
0118 31 ini3:
0118 80F6 32 JMP ini2
011A 33 serial:; Int serial
011A C0E0 34 PUSH Acc
011C C0F0 35 PUSH B
011E EC 36 MOV A,R4
011F 88F0 37 MOV B,R0
0121 B5F006 38 CJNE A,B,mover_sbuf; Comprobar punteros
0124 D0F0 39 POP B
0126 D0E0 40 POP Acc
0128 8004 41 JMP salirserial
012A 42 mover_sbuf:
012A E6 43 MOV A,@R0
012B F599 44 MOV SBUF,A
012D 08 45 INC R0
012E 46 salirserial:
012E D2A8 47 SETB IE.0
0130 C299 48 CLR TI
0132 7581AA 49 MOV SP,#0AAH
0135 32 50 RETI
0136 51 externa:
0136 52 Inicio:
0136 31D7 53 CALL seg0012;llamar al retardo del antirebote
0138 30B202 54 JNB P3.2,iniciarext
013B 21D1 55 jmp fnal2
013D 56 iniciarext:; Lectura de Columnas
013D 75A0F0 57 MOV P2,#0f0h
0140 30A736 58 JNB P2.7,col4
A51 MACRO ASSEMBLER TECLADO 05/28/2014 21:13:18 PAGE 2
0143 30A624 59 JNB P2.6,col3
0146 30A512 60 JNB P2.5,col2
0149 30A400 61 JNB P2.4,col1
014C 62 col1:; Lectura de Filas
014C 75A00F 63 MOV P2,#0fh
014F 30A036 64 JNB P2.0,fla11
0152 30A137 65 JNB P2.1,fla12
0155 30A238 66 JNB P2.2,fla13
0158 30A339 67 JNB P2.3,fla14
015B 68 col2:
015B 75A00F 69 MOV P2,#0fh
015E 30A037 70 JNB P2.0,fla21
0161 30A138 71 JNB P2.1,fla22
0164 30A239 72 JNB P2.2,fla23
0167 30A33A 73 JNB P2.3,fla24
016A 74 col3:
016A 75A00F 75 MOV P2,#0fh
016D 30A038 76 JNB P2.0,fla31
0170 30A139 77 JNB P2.1,fla32
0173 30A23A 78 JNB P2.2,fla33
0176 30A33B 79 JNB P2.3,fla34
0179 80 col4:
0179 75A00F 81 MOV P2,#0fh
017C 30A039 82 JNB P2.0,fla41
017F 30A13A 83 JNB P2.1,fla42
0182 30A23B 84 JNB P2.2,fla43
0185 30A33C 85 JNB P2.3,fla44
0188 86 fla11:; Asignacin de la posicin a R6
0188 7E00 87 MOV R6,#00H
018A 803C 88 jmp fnal_ext
018C 89 fla12:
018C 7E01 90 MOV R6,#01H
018E 8038 91 jmp fnal_ext
0190 92 fla13:
0190 7E02 93 MOV R6,#02H
0192 8034 94 jmp fnal_ext
0194 95 fla14:
0194 7E03 96 MOV R6,#03H
0196 8030 97 jmp fnal_ext
0198 98 fla21:
0198 7E04 99 MOV R6,#04H
019A 802C 100 jmp fnal_ext
019C 101 fla22:
019C 7E05 102 MOV R6,#05H
019E 8028 103 jmp fnal_ext
01A0 104 fla23:
01A0 7E06 105 MOV R6,#06H
01A2 8024 106 jmp fnal_ext
01A4 107 fla24:
01A4 7E07 108 MOV R6,#07H
01A6 8020 109 jmp fnal_ext
01A8 110 fla31:
01A8 7E08 111 MOV R6,#08H
01AA 801C 112 jmp fnal_ext
01AC 113 fla32:
01AC 7E09 114 MOV R6,#09H
01AE 8018 115 jmp fnal_ext
01B0 116 fla33:
01B0 7E0A 117 MOV R6,#0AH
01B2 8014 118 jmp fnal_ext
01B4 119 fla34:
01B4 7E0B 120 MOV R6,#0BH
01B6 8010 121 jmp fnal_ext
01B8 122 fla41:
01B8 7E0C 123 MOV R6,#0CH
01BA 800C 124 jmp fnal_ext
A51 MACRO ASSEMBLER TECLADO 05/28/2014 21:13:18 PAGE 3
01BC 125 fla42:
01BC 7E0D 126 MOV R6,#0DH
01BE 8008 127 jmp fnal_ext
01C0 128 fla43:
01C0 7E0E 129 MOV R6,#0EH
01C2 8004 130 jmp fnal_ext
01C4 131 fla44:
01C4 7E0F 132 MOV R6,#0FH
01C6 8000 133 jmp fnal_ext
01C8 134 fnal_ext:
01C8 EE 135 MOV A,R6;Aqui llevo el valor al registro @R0 y a P1
01C9 909000 136 MOV DPTR,#tabconver
01CC 93 137 MOVC A,@A+DPTR
01CD F6 138 MOV @R0,A
01CE 0C 139 INC R4
01CF F590 140 MOV P1,A
01D1 141 fnal2:
01D1 75A0F0 142 MOV P2,#0f0h
01D4 C2A8 143 CLR IE.0; Desactivo la IE0
01D6 32 144 RETI
145 ; * * * * * * * * * * * * * * * * * * * * * * * *
146 ; retardo de 12000 micro segundos (11000us)
147 ; * * * * * * * * * * * * * * * * * * * * * * * *
148 ; tiempo = sec * 12 periodos
149 ; 11MHz 1 ciclo de maquina
150 ; * * * * * * * * * * * * * * * * * * * * * * * *
151 ; tiempo = 0.012 s = 12000us
152 ; ciclos de maquina
153 ; * * * * * * * * * * * * * * * * * * * * * * * *
01D7 154 seg0012: ;(2) = 2
01D7 7EFA 155 mov r6,#0fah ;(1) = 1
01D9 7F0A 156 xx1: mov R7,#0ah ;(1)*r6[250] = 250
01DB 00 157 nop ;(1)*r6(250) = 250
01DC 00 158 xxx:nop ;(1)*r6[250]*r7[10] = 2500
01DD 00 159 nop ;(1)*r6[250]*r7[10] = 2500
01DE DFFC 160 djnz R7,xxx ;(2)*r6[250]*r7[10] = 5000
01E0 DEF7 161 djnz r6,xx1 ;(2)*r6[250] = 500
01E2 22 162 ret ;(2) = 2
163 ;----------------------------------
164 ; 11005 * 1.09us = 12049.95us = 12ms
---- 165 Cseg AT 9000h; Tabla defnida
9000 166 tabconver:
9000 4144477E 167 db 41h,44H,47H,7EH; 11 12 13 14 --> A D G <-
9004 42454828 168 db 42H,45H,48H,28H; 21 22 23 24 --> B E H (
9008 43462629 169 db 43H,46H,26H,29H; 31 32 33 34 --> C F & )
900C 2B2A273D 170 db 2BH,2AH,27H,3DH; 41 42 43 44 --> + * =
171 end
A51 MACRO ASSEMBLER TECLADO 05/28/2014
21:13:18 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
COL1 . . . . . . . C ADDR 014CH A
COL2 . . . . . . . C ADDR 015BH A
COL3 . . . . . . . C ADDR 016AH A
COL4 . . . . . . . C ADDR 0179H A
EXTERNA. . . . . . C ADDR 0136H A
FILA11 . . . . . . C ADDR 0188H A
FILA12 . . . . . . C ADDR 018CH A
FILA13 . . . . . . C ADDR 0190H A
FILA14 . . . . . . C ADDR 0194H A
FILA21 . . . . . . C ADDR 0198H A
FILA22 . . . . . . C ADDR 019CH A
FILA23 . . . . . . C ADDR 01A0H A
FILA24 . . . . . . C ADDR 01A4H A
FILA31 . . . . . . C ADDR 01A8H A
FILA32 . . . . . . C ADDR 01ACH A
FILA33 . . . . . . C ADDR 01B0H A
FILA34 . . . . . . C ADDR 01B4H A
FILA41 . . . . . . C ADDR 01B8H A
FILA42 . . . . . . C ADDR 01BCH A
FILA43 . . . . . . C ADDR 01C0H A
FILA44 . . . . . . C ADDR 01C4H A
FINAL2 . . . . . . C ADDR 01D1H A
FINAL_EXT. . . . . C ADDR 01C8H A
IE . . . . . . . . D ADDR 00A8H A
INI0 . . . . . . . C ADDR 00F5H A
INI2 . . . . . . . C ADDR 0110H A
INI3 . . . . . . . C ADDR 0118H A
INICIAREXT . . . . C ADDR 013DH A
INICIO . . . . . . C ADDR 0136H A
INICIOBIEN . . . . C ADDR 00F0H A
IT0. . . . . . . . B ADDR 0088H.0 A
MOVER_SBUF . . . . C ADDR 012AH A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
SALIRSERIAL. . . . C ADDR 012EH A
SBUF . . . . . . . D ADDR 0099H A
SCON . . . . . . . D ADDR 0098H A
SEG0012. . . . . . C ADDR 01D7H A
SERIAL . . . . . . C ADDR 011AH A
SOLTAR1. . . . . . C ADDR 0113H A
SP . . . . . . . . D ADDR 0081H A
TABCONVER. . . . . C ADDR 9000H A
TH1. . . . . . . . D ADDR 008DH A
TI . . . . . . . . B ADDR 0098H.1 A
TMOD . . . . . . . D ADDR 0089H A
TR1. . . . . . . . B ADDR 0088H.6 A
XX1. . . . . . . . C ADDR 01D9H A
XXX. . . . . . . . C ADDR 01DCH A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
Resultados
Conclusiones
A continuacin se presenta una imgen que comprueba el funcionamiento de la comunicacin serial en la simulacin de Proteus.
El proceso de lectura de un teclado matricial depende directamente de la programacin del microcontrolador al cual est conectado y se debe aprovechar el
cortocircuito que produce la fla con la columna del botn presionado para conocer cual tecla fue presionada. Para el proceso de escaneo se requiere un retardo
inicial que ayude a verifcar si fue un retardo o n, la utilizacin del puntero de lectura de la tabla result fundamental en el proceso de lectura de la tabla. Por
otra parte al momento de verifcar los datos enviados con los almacenados en los registros no es necesario comparar los datos de cada direccin de memoria,
solo las direcciones en s, y la deshabilitacin y habilitacin de la interrupcin externa fue de vital importancia para completar el proceso de comunicacin serial.
Programar con valor de activacin bajo result de gran relevancia para simplifcar los procesos de escaneo y verifcacin, adems que optimiza el circuito
para detectar la interrupcin externa. Lo cierto es que dividir el proceso en las dos partes como se dividi permiti a la hora de programar permiti identifcar
rpidamente los fallos que aparecieron en el cdigo. Por otra parte, colocar el valor de la tabla leido en el puerto 1 ayud a verifcar el correcto funcionamiento del
apartado de escaneo que se realiza dentro de la interrupcin externa. El uso de la interrupcin externa simplifc el trabajo de lectura, el cual se podra realizar
tambin usando interrupciones por tiempo.
Al montar el circuito en fsico se observ que se necesitaba la presencia de resisrencias de regulacin en las entradas del microcontrolador para no causar
choque de seales en los pines. Por otra parte al realizar la programacin del micro pudo ocurrir algn problema, lo cierto es que el programa no mostraba la
confguracin en los pines que debera mostrar al inicio. Por esto se realiz una prueba con un programa sencillo que cambiara un puerto de estado alto a bajo
con cierta intermitencia y el micro no realiz la simple tarea que se le asign. Es por esto que se puede decir que el problema pudo estar en la programacin del
micro. Por otra parte la utilizacin de retardos, si bien tiene que ver con la velocidad del cristal especfco, en ambos casos se utiliz el retardo como sistema de
cambiador de estado, puede que existiera un problema con la confguracin de este mtodo de sincronizacin de tiempos. La situacin se presenta cuestionable
porque cuando se corre en frio el programa parece ejecutarse a la perfeccin en el depurador del programa KEIL C51.
Figura tal - Funcionamiento de la comunicacin serial en simulacin

Potrebbero piacerti anche