SISTEMAS DIGITALES II - OCW...
Transcript of SISTEMAS DIGITALES II - OCW...
1
SISTEMAS DIGITALES II
EJERCICIOS PROPUESTOS TEMA 1
Departamento de Sistemas Electrónicos y de Control
TEMA 1: La Familia de Microcontroladores MCS-51
3
SISTEMAS DIGITALES II EJERCICIOS PROPUESTOS TEMA1
EJERCICIO 1) Se desea elegir un microcontrolador de la familia de MCS-51, con el fin de que se pueda controlar y gestionar un sistema de petición de número automático en las ventanillas de un banco. El banco dispone de 4 ventanillas encima de las que existe un display de dos cifras, en las que se va representado el número a atender. Cuando llega el usuario pulsa un botón para obtener un ticket. Adicionalmente en cada una de las ventanillas cada cajero tiene un pulsador para ir atendiendo a nuevos clientes.
Las especificaciones mínimas que ha de cumplir dicho sistema son:
• Controlará los cinco pulsadores del sistema, teniendo en cuenta que cada pulsación genera un nivel alto de 10 ms.
• Permitirá la visualización del número a atender en cada uno de los 4 displays multiplexados de dos cifras BCD. A dichos displays les llegará la información codificada en dos números BCD.
• Se comunicará via serie con la impresora que se encarga de expender los números.
• El código del programa que gobierna el sistema no ha de exceder de 8Kbytes, y no pueden existir chips de memoria externos para la ubicación de dicho código. La memoria de datos no ha de exceder de 100 bytes.
• El programa que ejecuta el microcontrolador puede ser cambiado en alguna ocasión.
a) Indique qué microcontrolador de la familia MCS-51, utilizaría, justificando su
elección.
b) Realice un diagrama de bloques de los elementos que utilizaría del microcontrolador y el esquema de cómo los conectaría a los diversos dispositivos externos.
EJERCICIO 2) A partir del siguiente esquema realizar el conexionado y generar las señales de selección adecuadas para realizar una expansión de memoria en un sistema basado en 8051 con las siguientes características
a. Con el pin EA=0: 16Kb de ROM en el mapa de programa y 64Kb de RAM en el mapa de datos. Toda la memoria debe estar situada de forma consecutiva en el mapa correspondiente.
4
b. Con el pin EA=1: 16Kb de ROM en el mapa de programa y 48Kb de RAM
en el mapa de datos. Toda la memoria debe estar situada de forma consecutiva en el mapa correspondiente.
U2
8051
31
19
18
9
12131415
12345678
3938373635343332
2122232425262728
171629301110
EA/VP
X1
X2
RESET
INT0INT1T0T1
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7
RDWR
PSENALE/P
TXDRXD
U3
27128
109876543
25242123
226
202227
1
1112131516171819
A0A1A2A3A4A5A6A7A8A9A10A11A12A13
CEOEPGMVPP
O0O1O2O3O4O5O6O7
U4
MS62256
109876543
25242123
226
1
202227
1112131516171819
A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14
CEOEWE
D0D1D2D3D4D5D6D7
U5
MS62256
109876543
252421232
261
202227
1112131516171819
A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14
CEOEWE
D0D1D2D3D4D5D6D7
U6
74HC373
111
20
256912151619
3478
13141718
OELE
VCC
1Q2Q3Q4Q5Q6Q7Q8Q
1D2D3D4D5D6D7D8D
U2
8051
31
19
18
9
12131415
12345678
3938373635343332
2122232425262728
171629301110
EA/VP
X1
X2
RESET
INT0INT1T0T1
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7
RDWR
PSENALE/P
TXDRXD
U3
27128
109876543
25242123
226
202227
1
1112131516171819
A0A1A2A3A4A5A6A7A8A9A10A11A12A13
CEOEPGMVPP
O0O1O2O3O4O5O6O7
U4
MS62256
109876543
25242123
226
1
202227
1112131516171819
A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14
CEOEWE
D0D1D2D3D4D5D6D7
U5
MS62256
109876543
25242123
226
1
202227
1112131516171819
A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14
CEOEWE
D0D1D2D3D4D5D6D7
U6
74HC373
111
20
256912151619
3478
13141718
OELE
VCC
1Q2Q3Q4Q5Q6Q7Q8Q
1D2D3D4D5D6D7D8D
5
EJERCICIO 3) Realizar el conexionado y generar los CS y las señales de OE para cubrir los siguientes mapas de memoria sabiendo que pueden emplear tantos circuitos como considere oportunos de los que aparecen en el siguiente esquema:
a) 64 Kb de ROM y 64 K de RAM externos sin imágenes b) 32Kb de ROM externa en las direcciones más bajas del mapa de memoria de
programa y 32 Kb de RAM externa en las direcciones mas bajas de su mapa empleando en ambos casos decodificación completa
c) 32Kb de ROM externa en las direcciones mas bajas del mapa de memoria de programa y 32 Kb de RAM externa a los que se pueda acceder tanto para almacenar datos como para ejecutar programa. En ambos casos debe emplearse la menor cantidad de lógica adicional posible y si aparecen imágenes indicarse cuantas.
d) Indicar si sería posible ampliar más de 64 Kb de memoria de programa. En caso afirmativo justifique su respuesta.
EJERCICIO 4) La figura siguiente representa un puerto de E/S que se desea añadir al mapa de memoria del 80C552 y que debe estar ubicado exclusivamente en la posición 0xF000 del mapa de datos. El puerto está compuesto por un buffer de entrada conectado a los microinterruptores y del que sólo se puede leer y por un registro de salida al que se han conectado unos LEDs y sobre el que sólo se puede escribir.
U7
80C552/FP
5857565554535251
7170696867666564
31
32
6059
5077
974
49487576
1011121314151617
3839404142454647
1819202324252627
801245678
P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7
P5.0/ADC0P5.1/ADC1P5.2/ADC2P5.3/ADC3P5.4/ADC4P5.5/ADC5P5.6/ADC6P5.7/ADC7
XTAL2
XTAL1
AVREF+AVREF-
EAEWRSTSTADC
ALEPSENPWM0PWM1
P1.0/CT0IP1.1/CT1IP1.2/CT2IP1.3/CT3I
P1.4/T2P1.5/RT2P1.6/SCLP1.7/SDA
P2.0/A08P2.1/A09P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15
P3.0/RXDP3.1/TXD
P3.2/INT0P3.3/INT1
P3.4/T0P3.5/T1
P3.6/WRP3.7/RD
P4.0/CMSR0P4.1/CMSR1P4.2/CMSR2P4.3/CMSR3P4.4/CMSR4P4.5/CMSR5P4.6/CMT0P4.7/CMT1
U8
27C256_L
2
3
456789
1011 13
14151819202122
23
24
25
27
2829
3130
VPP
A12
A7A6A5A4A3A2A1A0 O0
0102O3O4O5O6O7
CE
A10
OE
A11
A9A8
A14A13
U4
MS62256
109876543
25242123
226
1
202227
1112131516171819
A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14
CEOEWE
D0D1D2D3D4D5D6D7
U6
74HC373
111
20
256912151619
3478
13141718
OELE
VCC
1Q2Q3Q4Q5Q6Q7Q8Q
1D2D3D4D5D6D7D8D
6
a) Se deben generar las señales de ENABLE1 Y ENABLE2 b) Escribir el código en C que permita leer el contenido del puerto de entrada y
escribirlo en el de salida.
7
EJERCICIO 5) Se desea mapear un LCD como periférico externo dentro del mapa de datos de un sistema basado en 80c552. El dispositivo posee 2 registros (registro de datos y registro de control) internos a los que se accede mediante la señales RS (RS=0 registro de datos, RS=1 registro de control). Dicho periférico debe ocupar las siguientes posiciones del mapa de datos.
Dirección Acceso 0XX0h Registro de Control 0XX1h Registro de Datos
El LCD es un periférico que se programa mediante comandos de modo que para configurarlo se le envían una serie de estos al registro de control para posteriormente escribir sobre el registro de datos la información a mostrar. Además se pretende añadir un teclado dentro del mapa de memoria del sistema. Dicho teclado posee ya un controlador asociado que proporcina mediante 4 bits el código de la tecla pulsada. Una vez que se pulsa una tecla el controlador mantiene el dato hasta que se pulsa la siguiente. Además cuando se pulsa una nueva tecla se genera en su salida DA un pulso a nivel bajo (flanco de bajada) que sirve para que microprocesador lea la tecla pulsada. El mapeo de este dispositivo se debe realizar en cualquier dirección comprendida entre la 5000H y la 5FFFH de la memoria externa de datos (podrán dejarse imágenes siempre que no entren en conflicto con ningún otro dispositivo). A partir del siguiente esquema realizar el conexionado y generar las señales de selección adecuadas.
U6
74HC373
111
20
256912151619
3478
13141718
OELE
VCC
1Q2Q3Q4Q5Q6Q7Q8Q
1D2D3D4D5D6D7D8D
U7
80C552/FP
5857565554535251
7170696867666564
31
32
6059
50779
74
49487576
1011121314151617
3839404142454647
1819202324252627
801245678
P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7
P5.0/ADC0P5.1/ADC1P5.2/ADC2P5.3/ADC3P5.4/ADC4P5.5/ADC5P5.6/ADC6P5.7/ADC7
XTAL2
XTAL1
AVREF+AVREF-
EAEWRSTSTADC
ALEPSENPWM0PWM1
P1.0/CT0IP1.1/CT1IP1.2/CT2IP1.3/CT3I
P1.4/T2P1.5/RT2P1.6/SCLP1.7/SDA
P2.0/A08P2.1/A09P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15
P3.0/RXDP3.1/TXD
P3.2/INT0P3.3/INT1
P3.4/T0P3.5/T1
P3.6/WRP3.7/RD
P4.0/CMSR0P4.1/CMSR1P4.2/CMSR2P4.3/CMSR3P4.4/CMSR4P4.5/CMSR5P4.6/CMT0P4.7/CMT1
U11
74C922
1234
1110
87
56
13
17161514
12
Y1Y2Y3Y4X1X2X3X4
OSCKBM
OE
DOADOBDOCDOD
DA
C1C2
LCD
DB0DB1DB2DB3DB4DB5DB6DB7
RS
RW
E
TECLADO
8
EJERCICIO 6) En el programa que a continuación se lista, determine el número de ciclos de reloj que un microcontrolador 80C552, invertiría en la ejecución del mismo. Anote en la tabla siguiente, para cada instrucción: el tipo de direccionamiento empleado, el número de bytes que ocupa y el número de ciclos de reloj que conlleva su ejecución.
Programa Direccionamiento Nº Bytes Nº ciclosMOV A,#33HADD A,7FHINC DPTRMOVX A,@DPTRMOV F0H,AMUL ABTOTAL ---------------
EJERCICIO 7) Dado el siguiente esquema, de un sistema basado en un microcontrolador 8051, indique mediante una tabla el mapa de memoria completo del sistema mostrando la dirección de comienzo y finalización de cada uno de los circuitos así como el número de imágenes si las hubiere.
9
NOTAS: 1. Los circuitos U8B, U5C y U5B se encargan de dar la secuencia necesaria a U7
para que se registre correctamente el dato. 2. El circuito 74LS138 es un decodificador 3:8 con las salidas activas a nivel bajo 3. El circuito 74LS273, al igual que 74LS373, es encarga de registrar la parte baja
del bus de direcciones. EJERCICIO 8) Explique los siguientes conceptos asociados a los mapas de memoria del microcontrolador 80C552. • En relación con la memoria de datos. Rango posible de direcciones de la memoria
interna y de la externa y señales implicadas en el acceso a cada una de ellas. • Cantidad de memoria de programa interna y externa y señales implicadas en el
acceso a cada una de ellas
• Funcionalidad y rango de direcciones de cada una de las zonas de memoria de datos interna.
10
EJERCICIO 9) La figura 1 muestra el esquema de un sistema basado en microcontrolador 80C51.
Figura 1. Sistema basado en 80C51
11
A) Completar la tabla siguiente indicando los nombres de los circuitos integrados y una breve descripción de cada circuito; en el caso de un circuito de memoria indique el tipo de memoria (RAM, EPROM, etc.) y su capacidad. Circuito Descripción U1 U2 U3 U4 U5 U6 AM16V8 PAL. Dispositivo lógico programable B) Realice mediante etiquetas y sobre la figura 1, las conexiones de los buses de datos y direcciones para que el microcontrolador pueda utilizar los circuitos de memoria como memoria externa. En los siguientes apartados considerar que las ecuaciones lógicas programadas en la PAL son:
/CE1 = A15 + A14 + A13 + /A12/CE2 = A15 + A14 + A13/CE3 = A15 + A14 + /A13CS3 = /(A15 + A14 + /A13)/OE1 = PSEN/OE2 = /RD/OE3 = PSEN * /RD/WE = /WR
C) Complete la tabla siguiente relativa al mapa de memoria de programa del sistema de la figura 1. En caso de existir imágenes indique las direcciones mas bajas; anote todos los valores numéricos en hexadecimal.
Circuito Tamaño (hex.) Dir. inicial (hex.) Dir. final (hex.) D) Complete la tabla siguiente relativa al mapa de memoria de datos externa del sistema de la figura 1. En caso de existir imágenes indique las direcciones mas bajas; anote todos los valores numéricos en hexadecimal.
Circuito Tamaño (hex.) Dir. inicial (hex.) Dir. final (hex.)
12
E) Indique sobre las gráficas de la figura 2 los mapas de memoria de programa y de datos externa del sistema de la figura 1; señale las imágenes (en caso de que existan) así como los bloques de direcciones que no están decodicados. En cada bloque de direcciones anote el tipo de memoria (RAM, ROM, EPROM) y el circuito correspondiente (80C51, 2732, etc.).
FFFF
0000
FFFF
0000
Memoria de programa Memoria de datos externa
FFFF
0000
FFFF
0000
Memoria de programa Memoria de datos externa
Figura 2. Mapas de memoria
13
EJERCICIO 10) La siguiente figura muestra los componentes que forman un sistema basado en microcontrolador 80C51.
A13
A14
A15
XTA
L218
XTA
L119
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
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
P1.
01
P1.
12
P1.
23
P1.
34
P1.
45
P1.
56
P1.
67
P1.
78
P3.
0/RXD
10
P3.
1/TX
D11
P3.
2/IN
T012
P3.
3/IN
T113
P3.
4/T0
14
P3.
7/RD
17P3.
6/W
R16
P3.
5/T1
15
U1
80C51
A0
8
A1
7
A2
6
A3
5
A4
4
A5
3
A6
2
A7
1
A8
23
A9
22
A10
19
A11
21
CE
18
OE/V
PP
20
D0
9
D1
10
D2
11
D3
13
D4
14
D5
15
D6
16
D7
17
U2
2732 A0
10
A1
9
A2
8
A3
7
A4
6
A5
5
A6
4
A7
3
A8
25
A9
24
A10
21
A11
23
A12
2
CE
20
CS
26
WE
27
OE
22
D0
11
D1
12
D2
13
D3
15
D4
16
D5
17
D6
18
D7
19
U3
6164
D0
3Q
02
D1
4Q
15
D2
7Q
26
D3
8Q
39
D4
13Q
412
D5
14Q
515
D6
17Q
616
D7
18Q
719
OE
1
LE11
U4
74HC37
3/C
E1
/PSEN
/PSEN
/CE2
/WR
/CE2
ALE Vcc
X1
C1
30pF
C2
30pF
C3
1uF
Vcc
R1
10k
ALE
A1
B2
C3
E1
6
E2
4
E3
5
Y0
15
Y1
14
Y2
13
Y3
12
Y4
11
Y5
10
Y6
9
Y7
7
U5
74HC13
8
1 23
U6:
A
74HC08
/RD
/RD
/PSEN
/WR
Vcc
Vcc
/CE1
Sistema basado en 80C51
14
A) Complete la tabla siguiente indicando los nombres de los circuitos integrados y una breve descripción de cada circuito; en el caso de un circuito de memoria indique el tipo de memoria (RAM, EPROM, etc.) y su capacidad. Circuito Descripción U1
U2
U3
U4
U5
B) Realice mediante etiquetas y sobre la figura las conexiones de los buses de datos y direcciones para que el microcontrolador pueda utilizar los circuitos de memoria como memoria externa.
C) Complete la tabla siguiente relativa al mapa de memoria de programa del sistema mostrado en la figura 1. En caso de existir imágenes indique las direcciones mas bajas; anote todos los valores numéricos en hexadecimal.
Circuito Tamaño (hex.) Dir. inicial (hex.) Dir. final (hex.)
D) Complete la tabla siguiente relativa al mapa de memoria de datos externa del sistema mostrado en la figura 1. En caso de existir imágenes indique las direcciones mas bajas; anote todos los valores numéricos en hexadecimal.
Circuito Tamaño (hex.) Dir. inicial (hex.) Dir. final (hex.)
15
E) Indique sobre las gráficas de los mapas de memoria de programa y de datos externa del sistema de la figura 1; señale las imágenes (en caso de que existan) así como los bloques de direcciones que no están decodicados. En cada bloque de direcciones anote el tipo de memoria (RAM, ROM, EPROM) y el circuito correspondiente (80C51, 2732, etc.).
FFFF
0000
FFFF
0000
Memoria de programa Memoria de datos externa
FFFF
0000
FFFF
0000
Memoria de programa Memoria de datos externa
Mapas de memoria
16
EJERCICIO 11) Apartado A) Suponiendo que un microcontrolador 8051 tiene conectado un oscilador de 14MHz de frecuencia, rellene la tabla indicando el número de ciclos de reloj que conlleva la ejecución de cada instrucción y calcule el tiempo que tarda en ejecutarse el código siguiente.
INSTRUCCION CICLOS DE RELOJMOV R0,50H MOV R1,51H MOV R2,52H MOV R3,53H MOV A,R1 ADD A,R3 MOV DPTR, #0055H MOVX @DPTR,A MOV A,R0 ADDC A,R2 MOV DPTR, #0054H MOVX @DPTR,A MOV 20H,C
Apartado B) Rellene sobre la tabla el código máquina correspondiente a las instrucciones del programa anterior que se indican. Apartado C) Suponiendo que el contenido de la memoria de datos es el indicado en la tabla siguiente, señale qué posiciones de memoria han cambiado tras la ejecución del programa indicando claramente: la dirección, la zona de memoria de que se trata y el valor que toma.
Dirección Contenido50H 80H 51H A0H 52H 80H 53H 6CH
Código Máquina Instrucción MOV R0,50H MOV A,R1 ADD A,R3 MOVX @DPTR,A
17
EJERCICIO 12) Se dispone de un microcontrolador 80C552 al que se le desea añadir memoria externa de manera que el sistema tenga al menos 16 Kb de memoria de datos ubicados en el rango comprendido entre las direcciones 4000h y 7FFFh; y 32 Kb de memoria de programa ubicados exclusivamente en las direcciones más bajas del mapa. Complete el siguiente esquema (añadiendo aquellos circuitos electrónicos que considere necesarios), utilizando etiquetas para definir las conexiones realizadas.
U4
MS62256
10 9 8 7 6 5 4 3 25 24 21 23 2 26 1 20 22 27
11 12 13 15 16 17 18 19
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
CE
OE
WE
D0
D1
D2
D3
D4
D5
D6
D7
U8
27C256_L
23456789101113 14 15 18 19 20 21 22
2324 25272829 3130
VP
P
A12
A7
A6
A5
A4
A3
A2
A1
A0
O0 01 02 O3
O4
O5
O6
O7
CE
A10
OE
A11
A9
A8
A14
A13
U7
80C552/FP
58 57 56 55 54 53 52 51
71 70 69 68 67 66 65 64 31
3260 59 50 77 9 74
49 48 75 7610 11 12 13 14 15 16 17
38 39 40 41 42 45 46 47
18 19 20 23 24 25 26 27
80 1 2 4 5 6 7 8
P0.
0/A
D0
P0.
1/A
D1
P0.
2/A
D2
P0.
3/A
D3
P0.
4/A
D4
P0.
5/A
D5
P0.
6/A
D6
P0.
7/A
D7
P5.
0/A
DC
0P
5.1/
AD
C1
P5.
2/A
DC
2P
5.3/
AD
C3
P5.
4/A
DC
4P
5.5/
AD
C5
P5.
6/A
DC
6P
5.7/
AD
C7
XT
AL2
XT
AL1
AV
RE
F+
AV
RE
F-
EA
EW
RS
TS
TA
DC
ALE
PS
EN
PW
M0
PW
M1
P1.
0/C
T0I
P1.
1/C
T1I
P1.
2/C
T2I
P1.
3/C
T3I
P1.
4/T
2P
1.5/
RT
2P
1.6/
SC
LP
1.7/
SD
A
P2.
0/A
08P
2.1/
A09
P2.
2/A
10P
2.3/
A11
P2.
4/A
12P
2.5/
A13
P2.
6/A
14P
2.7/
A15
P3.
0/R
XD
P3.
1/T
XD
P3.
2/IN
T0
P3.
3/IN
T1
P3.
4/T
0P
3.5/
T1
P3.
6/W
RP
3.7/
RD
P4.
0/C
MS
R0
P4.
1/C
MS
R1
P4.
2/C
MS
R2
P4.
3/C
MS
R3
P4.
4/C
MS
R4
P4.
5/C
MS
R5
P4.
6/C
MT
0P
4.7/
CM
T1
Exprese las ecuaciones de las funciones lógicas empleadas, utilizando la decodificación más sencilla que permitan las especificaciones marcadas:
18
EJERCICIO 13) La figura muestra el esquema de un sistema basado en microcontrolador 80C51.
A12
A13
A14
A15
/WR
/RD
PSEN
XTAL
218
XTAL
119
ALE
30
EA31
PSEN
29
RST
9
P0.0
/AD
039
P0.1
/AD
138
P0.2
/AD
237
P0.3
/AD
336
P0.4
/AD
435
P0.5
/AD
534
P0.6
/AD
633
P0.7
/AD
732
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
P1.0
1
P1.1
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
17P3
.6/W
R16
P3.5
/T1
15
U1
80C
51
A08
A17
A26
A35
A44
A53
A62
A71
A823
A922
A10
19
A11
21
CE
18
OE/
VPP
20
D0
9
D1
10
D2
11
D3
13
D4
14
D5
15
D6
16
D7
17
U2
2732 A0
10
A19
A28
A37
A46
A55
A64
A73
A825
A924
A10
21
A11
23
A12
2
CE
20
OE
22
PGM
27
VPP
1
D0
11
D1
12
D2
13
D3
15
D4
16
D5
17
D6
18
D7
19
U3
2764 A0
10
A19
A28
A37
A46
A55
A64
A73
A825
A924
A10
21
A11
23
A12
2
CE
20
CS
26
WE
27
OE
22
D0
11
D1
12
D2
13
D3
15
D4
16
D5
17
D6
18
D7
19
U4
6164
D0
3Q
02
D1
4Q
15
D2
7Q
26
D3
8Q
39
D4
13Q
412
D5
14Q
515
D6
17Q
616
D7
18Q
719
OE
1
LE11
U5
74H
C37
3
CLK
/I01
I12
I23
I34
I45
I56
I67
I78
I89
OE/
I911
IO0
19
IO1
18
IO2
17
IO3
16
IO4
15
IO5
14
IO6
13
IO7
12
U6
AM16
V8
/CE1
/OE1
/CE2
/CE3
CS3
/OE3
/WE
/OE2
/CE1
/CE2
/CE3
/OE3
CS3
/WE
/OE2
/OE1
ALE
X1
C1
30pF
C2
30pF
C3
1uF
Vcc
R1
10k
ALE
A12
A13
A14
A15
/WR
/RD
PSEN
XTAL
218
XTAL
119
ALE
30
EA31
PSEN
29
RST
9
P0.0
/AD
039
P0.1
/AD
138
P0.2
/AD
237
P0.3
/AD
336
P0.4
/AD
435
P0.5
/AD
534
P0.6
/AD
633
P0.7
/AD
732
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
P1.0
1
P1.1
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
17P3
.6/W
R16
P3.5
/T1
15
U1
80C
51
A08
A17
A26
A35
A44
A53
A62
A71
A823
A922
A10
19
A11
21
CE
18
OE/
VPP
20
D0
9
D1
10
D2
11
D3
13
D4
14
D5
15
D6
16
D7
17
U2
2732 A0
10
A19
A28
A37
A46
A55
A64
A73
A825
A924
A10
21
A11
23
A12
2
CE
20
OE
22
PGM
27
VPP
1
D0
11
D1
12
D2
13
D3
15
D4
16
D5
17
D6
18
D7
19
U3
2764 A0
10
A19
A28
A37
A46
A55
A64
A73
A825
A924
A10
21
A11
23
A12
2
CE
20
CS
26
WE
27
OE
22
D0
11
D1
12
D2
13
D3
15
D4
16
D5
17
D6
18
D7
19
U4
6164
D0
3Q
02
D1
4Q
15
D2
7Q
26
D3
8Q
39
D4
13Q
412
D5
14Q
515
D6
17Q
616
D7
18Q
719
OE
1
LE11
U5
74H
C37
3
CLK
/I01
I12
I23
I34
I45
I56
I67
I78
I89
OE/
I911
IO0
19
IO1
18
IO2
17
IO3
16
IO4
15
IO5
14
IO6
13
IO7
12
U6
AM16
V8
/CE1
/OE1
/CE2
/CE3
CS3
/OE3
/WE
/OE2
/CE1
/CE2
/CE3
/OE3
CS3
/WE
/OE2
/OE1
ALE
X1
C1
30pF
C2
30pF
C3
1uF
Vcc
R1
10k
ALE
Figura. Sistema basado en 80C51
19
A) Completar la tabla siguiente indicando los nombres de los circuitos integrados y una breve descripción de cada circuito; en el caso de un circuito de memoria indique el tipo de memoria (RAM, EPROM, etc.) y su capacidad. Circuito Descripción U1
U2
U3
U4
U5
U6 AM16V8 PAL. Dispositivo lógico programable B) Realice mediante etiquetas y sobre la figura 1, las conexiones de los buses de datos y direcciones para que el microcontrolador pueda utilizar los circuitos de memoria como memoria externa. En los siguientes apartados considerar que las ecuaciones lógicas programadas en la PAL son:
/CE1 = A15 + /A14 + A13 + A12/CE2 = A15 + A14 + A13/CE3 = A15 + A14 + /A13CS3 = /(A15 + A14 + /A13)/OE1 = /RD/OE2 = PSEN/OE3 = PSEN * /RD/WE = /WR
C) Complete la tabla siguiente relativa al mapa de memoria de programa del sistema de la figura 1. En caso de existir imágenes indique las direcciones mas bajas; anote todos los valores numéricos en hexadecimal.
Circuito Tamaño (hex.) Dir. inicial (hex.) Dir. final (hex.)
D) Complete la tabla siguiente relativa al mapa de memoria de datos externa del sistema de la figura 1. En caso de existir imágenes indique las direcciones mas bajas; anote todos los valores numéricos en hexadecimal.
20
Circuito Tamaño (hex.) Dir. inicial (hex.) Dir. final (hex.)
E) Indique sobre las gráficas de la figura los mapas de memoria de programa y de datos externa del sistema de la figura 1; señale las imágenes (en caso de que existan) así como los bloques de direcciones que no están decodicados. En cada bloque de direcciones anote el tipo de memoria (RAM, ROM, EPROM) y el circuito correspondiente (80C51, 2732, etc.).
FFFF
0000
FFFF
0000
Memoria de programa Memoria de datos externa
FFFF
0000
FFFF
0000
Memoria de programa Memoria de datos externa
Mapas de memoria
21
EJERCICIO 14) El ejercicio consiste en definir un conjunto de variables en lenguaje C, con la particularidad de que especificaremos claramente en la propia definición en qué zona de la memoria deseamos que se ubique la variable. El conjunto de variables a definir es el siguiente: Nombre Zona de Memoria Tipo Dirección
int_acc_dir Interna de acceso directo 8 bits Cualquiera int_acc_ind Interna de acceso
indirecto 16 bits Cualquiera
int_acc_ind_80 Interna de acceso indirecto
32 bits 80H
int_bit Interna direccionamiento de bit
8 bits Cualquiera
bit0 Interna direccionamiento de bit
1 bit Cualquiera
bit1 Interna direccionamiento de bit
1 bit Cualquiera
puerto0 SFR’s 8 bits Puerto 0 flag_F0 SFR’s 1 bit PSW externa Externa de datos 16 bits sin signo 10H codigo De código Cadena de 20
caracteres. Inicializada como se
desee.
Cualquiera
punt_a_externa Almacenado en memoria interna y apuntando a
memoria externa
Apunta a una variable de 8 bits
Cualquiera
punt_a_interna Almacenado en memoria externa y apuntando a
memoria interna
Apunta a una variable de 8 bits
Cualquiera
Nota: por regla general cuando definimos tan solo la zona de memoria donde ubicar una variable, el compilador elige una zona de esa memoria que esté libre y coloca ahí la variable. Sin embargo, en ocasiones nos interesa colocar una variable en una dirección de memoria concreta, para lograrlo debemos utilizar la palabra clave “_at_” . Su utilización de muestra mediante un ejemplo:
La línea de código siguiente crea una variable de nombre “contador” en la
dirección 1000H de la memoria de datos externa.
xdata int contador _at_ 0x1000;
22
Nota: para las variables de tipo puntero “punt_a_externa” y “punt_a_interna” consulte la página 109 del manual del compilador C51, donde se describe la utilización de este tipo de variables. EJERCICIO 15) Se dispone de un sistema basado en un microcontrolador de la familia 83C552 como el que se muestra en la Figura 1.
A8
A10A11
A14
A9
A15
A13
AD7
AD4AD5
AD2AD1AD0
AD3
A12
AD6 A6A7
A5
A1
A4A3
A0
A2
GND
AD7
Vcc
AD2
AD5AD6
AD4
AD1
AD3
AD0
GNDALE
/WR
A7
A2A1
A3
A6
A4A5
AD1AD2
AD4
AD6
AD0
AD3
AD7
AD5
A0
A10A9
A12
A8
A13
A11
/RD
/PSENALE
/OE
/WR
A15
Vcc
/PSEN/OE
/RD
U9121110
98765
27262325
428
24
31
22
1314151718192021
A0A1A2A3A4A5A6A7A8A9A10A11A12A13
OE
WE
CE
DQ0DQ1DQ2DQ3DQ4DQ5DQ6DQ7
U13
AND2
12
3
83C552/FP
5857565554535251
7170696867666564
31
32
6059
5077
974
49487576
1011121314151617
3839404142454647
1819202324252627
801245678
P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7
P5.0/ADC0P5.1/ADC1P5.2/ADC2P5.3/ADC3P5.4/ADC4P5.5/ADC5P5.6/ADC6P5.7/ADC7
XTAL2
XTAL1
AVREF+AVREF-
EAEWRSTSTADC
ALEPSENPWM0PWM1
P1.0/CT0IP1.1/CT1IP1.2/CT2IP1.3/CT3I
P1.4/T2P1.5/RT2P1.6/SCLP1.7/SDA
P2.0/A08P2.1/A09P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15
P3.0/RXDP3.1/TXD
P3.2/INT0P3.3/INT1
P3.4/T0P3.5/T1
P3.6/WRP3.7/RD
P4.0/CMSR0P4.1/CMSR1P4.2/CMSR2P4.3/CMSR3P4.4/CMSR4P4.5/CMSR5P4.6/CMT0P4.7/CMT1
U6
74HC373
111
20
256912151619
3478
13141718
OELE
VCC
1Q2Q3Q4Q5Q6Q7Q8Q
1D2D3D4D5D6D7D8D
Figura 1. Ampliación de memoria
Apartado A. Mapa de memoria. A1). Dibuje el mapa de memoria externa indicando claramente el rango de direcciones que ocupa el dispositivo U9 que aparece en la figura. A2). Escriba el código en C necesario para escribir en la posición más alta del mapa de memoria de datos externa el contenido de la dirección más baja del mapa de memoria interna de datos. A3). Justifique qué es lo que ocurriría si se modifica el valor de la señal EA del microcontrolador para que pase a valer ‘0’ e indique las limitaciones que tendría este hecho sobre la memoria externa de datos. A4). Indique que es lo que ocurriría en el caso en el que la puerta AND que aparece en la figura fuera sustituida por una puerta OR.
23
Apartado B. Periféricos. B1). Se desea añadir un periférico que requiere 16 posiciones de memoria y que debe ser atendido por interrupción. Realice el conexionado del periférico al microcontrolador sobre el esquema de la Figura 2 y genere su señal de selección para que éste quede ubicado en las posiciones libres más altas del mapa correspondiente sin que existan imágenes de ninguno de sus registros internos. CSperiférico=
A8
A10A11
A14
A9
A15
A13
AD7
AD4AD5
AD2AD1AD0
AD3
A12
AD6 A6A7
A5
A1
A4A3
A0
A2
GND
AD7
Vcc
AD2
AD5AD6
AD4
AD1
AD3
AD0
GNDALE
/PSENALE
Vcc
U6
74HC373
111
20
256912151619
3478
13141718
OELE
VCC
1Q2Q3Q4Q5Q6Q7Q8Q
1D2D3D4D5D6D7D8D
83C552/FP
5857565554535251
7170696867666564
31
32
6059
50779
74
49487576
1011121314151617
3839404142454647
1819202324252627
801245678
P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7
P5.0/ADC0P5.1/ADC1P5.2/ADC2P5.3/ADC3P5.4/ADC4P5.5/ADC5P5.6/ADC6P5.7/ADC7
XTAL2
XTAL1
AVREF+AVREF-
EAEWRSTSTADC
ALEPSENPWM0PWM1
P1.0/CT0IP1.1/CT1IP1.2/CT2IP1.3/CT3I
P1.4/T2P1.5/RT2P1.6/SCLP1.7/SDA
P2.0/A08P2.1/A09P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15
P3.0/RXDP3.1/TXD
P3.2/INT0P3.3/INT1
P3.4/T0P3.5/T1
P3.6/WRP3.7/RD
P4.0/CMSR0P4.1/CMSR1P4.2/CMSR2P4.3/CMSR3P4.4/CMSR4P4.5/CMSR5P4.6/CMT0P4.7/CMT1
U11
PERIFERICO
12
11
10
9
24
31
22
1314151718192021
31
A0
A1
A2
A3
OE
WE
CE
DQ0DQ1DQ2DQ3DQ4DQ5DQ6DQ7
INT
Figura 2. Mapeo de un periférico B2). Indique las instrucciones en ensamblador que deben estar de las posiciones de memoria de programa interna comprendidas entre la 0x0000 y la 0x0023 si la rutina de tratamiento de la interrupción que genera el periférico se encuentra en la posición 0x0800 de memoria de programa y tiene un tamaño de 0x100 posiciones y el programa principal en la 0x0400 con un tamaño de 0x200. NOTA: Considere que no existen otras fuentes de interrupción. B3). Escriba una rutina en C que copie el contenidos de los 16 registros del periférico en las posiciones de memoria de datos interna que se encuentran a partir de la dirección 0x80.
24
Apartado C. Temporización. Explique el significado de los siguientes tiempos de acceso del microcontrador a la memoria externa, indique el ciclo máquina en el que se definen y calcule su valor suponiendo que el reloj del sistema es de 18MHz.
Tiempo Significado Ciclo máquina Valor
tPXIZ
tPXIX
tDW
tAVDV
EJERCICIO 16) a) Anote en la tabla 1, para cada instrucción el número de bytes que ocupa y el número de ciclos de máquina que conlleva su ejecución, para un microcontrolador 80C552.
PROGRAMA Nº BYTES Nº CICLOS MÁQUINA MOV A,90H CPL A ADD A,#1 CJNE A,#FFH,salto MOV F0H,#0
salto CLR F0H
Tabla 1
b) Suponiendo que el contenido de la memoria de datos es el indicado en la tabla 2, señale qué posiciones de memoria han cambiado tras la ejecución del programa y cual es su contenido.
25
Tabla 2 c) Suponiendo que el contenido de la memoria de datos es el indicado en la tabla 3, señale qué posiciones de memoria han cambiado tras la ejecución del programa y cual es su contenido.
Tabla 3 EJERCICIO 17)
Se dispone de un microcontrolador 87c552 al que se le desea añadir memoria externa para conseguir distintos mapas de memoria. Para ello es necesario realizar el conexionado y generar las señales de control para cubrir dichos mapas de memoria.
a) Realice el conexionado oportuno en la figura 1 y escriba las señales de control de la memoria sabiendo que el mapa es el indicado en la tabla 1. No olvide conectar adecuadamente el pin EA del microcontrolador.
Figura 1
Dirección Contenido 90H 00H E0H A0H F0H FFH
Dirección Contenido 90H 01H E0H A0H F0H FFH
26
MEMORIA DE PROGRAMA MEMORIA DE DATOS Dirección Inicial Dirección Final Dirección Inicial Dirección Final
0x0000 0x1FFF 0x4000 0xBFFF
Tabla 1
CE = OE = WE = b) En la memoria RAM de la figura 2 se desean almacenar datos y programa de acuerdo al mapa de memoria de la tabla 2. Realice el conexionado oportuno en la figura 2 y escriba las señales de control de dicha memoria. No olvide conectar adecuadamente el pin EA del microcontrolador.
87C552
P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7
P5.0/ADC0P5.1/ADC1P5.2/ADC2P5.3/ADC3P5.4/ADC4P5.5/ADC5P5.6/ADC6P5.7/ADC7
XTAL2
XTAL1
AVREF+AVREF-
EAEWRSTSTADC
ALEPSENPWM0PWM1
P1.0/CT0IP1.1/CT1IP1.2/CT2IP1.3/CT3I
P1.4/T2P1.5/RT2P1.6/SCLP1.7/SDA
P2.0/A08P2.1/A09P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15
P3.0/RXDP3.1/TXD
P3.2/INT0P3.3/INT1
P3.4/T0P3.5/T1
P3.6/WRP3.7/RD
P4.0/CMSR0P4.1/CMSR1P4.2/CMSR2P4.3/CMSR3P4.4/CMSR4P4.5/CMSR5P4.6/CMT0P4.7/CMT1
A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14
CEOEWE
D0D1D2D3D4D5D6D7
74HC373
OELE
VCC
1Q2Q3Q4Q5Q6Q7Q8Q
1D2D3D4D5D6D7D8D
A15
Figura 2
MEMORIA DE PROGRAMA MEMORIA DE DATOS
Dirección Inicial Dirección Final Dirección Inicial Dirección Final 0x0000 0x1FFF 0x0000 0x1FFF 0x2000 0x3FFF 0x8000 0xFFFF
Tabla 2
CE = OE = WE =
27
c) Sabiendo que el cronograma de acceso a la memoria se corresponde con el de la figura 3, y que los tiempos son los suministrados en la tabla 3, justifique y calcule la frecuencia máxima de funcionamiento que ha de tener el microcontrolador, usando la versión de 16 Mhz, para que no haya problemas en los accesos a memoria de datos. Considere nulos cualquier tiempo de los circuitos combinacionales existentes en el sistema.
Figura 3
Valor típico tAA 250ns tOE 150ns tCE 150ns
Tabla 3
tAA
ADDRESS
CE
OE
DATA OUT
tOE
tCE
DATA OUTVALID
28
EJERCICIO 18) Se desea conectar una impresora a un sistema basado en el 8051. Para conseguirlo, se pretende implementar un interfaz centronics, utilizando para ello los puertos paralelo de los que dispone el microcontrolador. Las señales de que consta el citado interfaz son las que se presentan en la tabla siguiente:
El protocolo que gobierna la comunicación entre el emisor y el receptor (la impresora) se representa en el siguiente cronograma:
ACKNLG
BUSY
DATA
STROBE
Dato
0.5 US 0.5 US
0.5 US
5 US
ACKNLG
BUSY
DATA
STROBE
Dato
0.5 US 0.5 US
0.5 US
5 USBUSY
DATA
STROBE
Dato
0.5 US 0.5 US
0.5 US
5 US
Se ha producido algún tipo de error. Está apagada. No hay papel.OUT/ERROR32
Se limpia el buffer de impresión y se va al estado inicial. (>50 us)IN/INIT31
El papel se carga automáticamente antes de imprimir.IN/AUTO FEED
14
La impresora se encuentra seleccionada.OUTSLCT13
La impresora no tiene papel.OUTPE12
La impresora está ocupada y no puede recibir datosOUTBUSY11
El dato se ha recibido. Lista para nuevo dato. (>0,5 us)OUT/ACKNLG10
Dato transmitido a la impresoraINDATA1-82-9
Pulso para la lectura de los datos. (>0,5 us)IN/STROBE1
DESCRIPCIONDIRSEÑALPIN
Se ha producido algún tipo de error. Está apagada. No hay papel.OUT/ERROR32
Se limpia el buffer de impresión y se va al estado inicial. (>50 us)IN/INIT31
El papel se carga automáticamente antes de imprimir.IN/AUTO FEED
14
La impresora se encuentra seleccionada.OUTSLCT13
La impresora no tiene papel.OUTPE12
La impresora está ocupada y no puede recibir datosOUTBUSY11
El dato se ha recibido. Lista para nuevo dato. (>0,5 us)OUT/ACKNLG10
Dato transmitido a la impresoraINDATA1-82-9
Pulso para la lectura de los datos. (>0,5 us)IN/STROBE1
DESCRIPCIONDIRSEÑALPIN
29
a) Indique sobre la figura siguiente cómo realizaría la conexión de las señales
DATA1-8, /ACKNLG, /BUSY y /STROBE del interfaz centronics a los puertos del 8051.
b) Realice una rutina en lenguaje C que gestione el envío de un caracter a la impresora, mediante la utilización de una técnica de “sondeo”. La rutina ha de tener el siguiente interfaz:
char envia_caracter (char letra);
la cual recibe como parámetro una variable tipo “char” que contiene el código ASCII a enviar a la impresora (letra), y devuelve un “cero” si la transferencia ha sido correcta o un “uno” si se ha producido algún tipo de error en la comunicación.
U2
8051
31
19
18
9
12131415
12345678
3938373635343332
2122232425262728
171629301110
EA/VP
X1
X2
RESET
INT0INT1T0T1
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7
RDWR
PSENALETXDRXD
30
EJERCICIO 19) Se desea conectar el siguiente convertidor digital-analógico AD7628 a un sistema basado en el 8051.
Siendo la funcionalidad de cada señal la que se muestra en la tabla siguiente:
SEÑAL FUNCIÓN DB0-7 Bus de datos, para el envío del código binario que se desea convertir a
un valor analógico. /DACA DACB
Señal de selección de DAC: 0 DAC A 1 DAC B
/CS Señal de habilitación, activa a nivel bajo /WR Señal de escritura, activa a nivel bajo
RESTO No tienen interés con relación a lo que se pide en este ejercicio El siguiente cronograma muestra el proceso de escritura del dato en el DAC y en la tabla se muestra los valores de los tiempos más representativos.
31
a) Indique sobre la figura siguiente cómo realizaría la conexión de las señales del DAC
a los puertos del 8051.
U2
8051
31
19
18
9
12131415
12345678
3938373635343332
2122232425262728
171629301110
EA/VP
X1
X2
RESET
INT0INT1T0T1
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7
RDWR
PSENALETXDRXD
32
b) Realice una rutina en lenguaje C que gestione el envío del dato a convertir al DAC. La rutina ha de tener el siguiente interfaz:
void envia_dato (char dato, char dac);
la cual recibe como parámetro una variable tipo “char” (dato) que contiene el dato a enviar al DAC, y una variable tipo “char” (dac) que indica a cual de los convertidores va dirigido el dato que se envía (“1” DAC B, “0” DAC A)
EJERCICIO 20) Se desea conectar el LCD de la figura a un sistema basado en el microcontrolador 8051 Cuyas señales desempeñan la siguiente función:
SEÑAL FUNCIÓN
DB0-7 Bus de datos bidireccional, para el envío de datos y comandos, y la recepción del estado del LCD
RS Señal de selección de registro: 0 Registro de Comandos 1 Registro de Datos
E Señal de habilitación, activa a nivel alto R/W Señal de lectura o escritura
0 Escritura 1 Lectura
En la figura se muestran los ciclos de escritura y de lectura del LCD con la indicación de los tiempos máximos y mínimos a respetar para que la comunicación se efectúe de manera correcta:
DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 RS E R/W
LCD
33
c) Indique sobre la figura siguiente cómo realizaría la conexión de las señales del LCD a los puertos del 8051.
U2
8051
31
19
18
9
12131415
12345678
3938373635343332
2122232425262728
171629301110
EA/VP
X1
X2
RESET
INT0INT1T0T1
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7
RDWR
PSENALETXDRXD
34
d) Realice una rutina en lenguaje C que gestione el envío de un caracter o de un comando al LCD. La rutina ha de tener el siguiente interfaz:
void envia_dato (char dato, char registro);
la cual recibe como parámetro una variable tipo “char” (dato) que contiene el dato a enviar al LCD, y una variable tipo “char” (registro) que indica a cual de los registros del LCD va dirigido el dato que se envía (“1” datos, “0” comandos)
e) Realice una rutina en lenguaje C que gestione la recepción de un dato desde el LCD.
La rutina ha de tener el siguiente interfaz:
char recibe_dato (char registro);
la cual devuelve el dato que se recibe desde el LCD y recibe como parámetro una variable tipo “char” (registro) que indica desde cual de los registros del LCD se desea leer el dato (“1” datos, “0” comandos)
EJERCICIO 20) Se desea crear un sistema alrededor de un 80C552 que posee tanto memoria como periféricos externos. Seguidamente se analizan algunos aspectos en la construcción de este sistema y cómo debe realizarse la configuración de los diferentes elementos. A) MEMORIA El sistema va a ejecutar una aplicación en la que se conoce a priori que el tamaño del programa es de 10 Kbytes y los datos que maneja dicho programa ocupan 5 Kbytes. A1) A partir del esquema de la siguiente figura dibuje y conecte mediante etiquetas los circuitos de memoria que considere oportunos para permitir que se pueda ejecutar el programa indicado anteriormente. Estos circuitos de memoria deben disponer de los pines necesarios para conectarse a un microprocesador quedando a su elección el tamaño de los mismos y los niveles de activación de cada una de las señales. NOTA: No olvide conectar el pin EA del microcontrolador. Finalmente, y antes de mapear estas memorias, debe saber que en este sistema también será necesario incluir algunos periféricos que en total requerirán exactamente de 64 bytes de direcciones y que debe quedar espacio libre en los mapas de memoria para futuras ampliaciones
35
12MHz
U7
80C552/FP
5857565554535251
7170696867666564
31
32
6059
50779
74
49487576
1011121314151617
3839404142454647
1819202324252627
801245678
P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7
P5.0/ADC0P5.1/ADC1P5.2/ADC2P5.3/ADC3P5.4/ADC4P5.5/ADC5P5.6/ADC6P5.7/ADC7
XTAL2
XTAL1
AVREF+AVREF-
EAEWRSTSTADC
ALEPSENPWM0PWM1
P1.0/CT0IP1.1/CT1IP1.2/CT2IP1.3/CT3I
P1.4/T2P1.5/RT2P1.6/SCLP1.7/SDA
P2.0/A08P2.1/A09P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15
P3.0/RXDP3.1/TXD
P3.2/INT0P3.3/INT1
P3.4/T0P3.5/T1
P3.6/WRP3.7/RD
P4.0/CMSR0P4.1/CMSR1P4.2/CMSR2P4.3/CMSR3P4.4/CMSR4P4.5/CMSR5P4.6/CMT0P4.7/CMT1
U6
74HC373
111
20
256912151619
3478
13141718
OELE
VCC
1Q2Q3Q4Q5Q6Q7Q8Q
1D2D3D4D5D6D7D8D
GND
A2) Indique el tamaño de cada una de las memorias que ha utilizado, el rango de direcciones que ocupa cada una y las señales de selección (CS) que habría que generar. B) PERIFERICOS Se requiere mapear un periférico que posee internamente 4 registros a los que se accede empleando las señales A1 y A0.
A1 A0 Registro 0 0 RegA 0 1 RegB 1 0 RegC 1 1 RegCtrl
B1) Realice la conexión del periférico al microcontrolador indicando las direcciones en las que se encuentra mapeado y el CS que debería generarse suponiendo que ocupe las 4 posiciones más altas del mapa correspondiente.
36
12MHz
80C552/FP
5857565554535251
7170696867666564
31
32
6059
50779
74
49487576
1011121314151617
3839404142454647
1819202324252627
801245678
P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7
P5.0/ADC0P5.1/ADC1P5.2/ADC2P5.3/ADC3P5.4/ADC4P5.5/ADC5P5.6/ADC6P5.7/ADC7
XTAL2
XTAL1
AVREF+AVREF-
EAEWRSTSTADC
ALEPSENPWM0PWM1
P1.0/CT0IP1.1/CT1IP1.2/CT2IP1.3/CT3I
P1.4/T2P1.5/RT2P1.6/SCLP1.7/SDA
P2.0/A08P2.1/A09P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15
P3.0/RXDP3.1/TXD
P3.2/INT0P3.3/INT1
P3.4/T0P3.5/T1
P3.6/WRP3.7/RD
P4.0/CMSR0P4.1/CMSR1P4.2/CMSR2P4.3/CMSR3P4.4/CMSR4P4.5/CMSR5P4.6/CMT0P4.7/CMT1
74HC373
111
20
256912151619
3478
13141718
OELE
VCC
1Q2Q3Q4Q5Q6Q7Q8Q
1D2D3D4D5D6D7D8D
D2D1
D3D4
D7D6
PERIFERICO
D5
A0A1
/CS/OE/WR
D0
/INTGND
CSPERIFERICO= Rango de direcciones=
C) TEMPORIZACION C1) La temporización de acceso de lectura del periférico es la que se muestra en la siguiente figura. Analice si los tiempos tcs y toh de este periférico son adecuados para que al conectarlo al microcontrolador su funcionamiento sea correcto. NOTA Si ha empleado algún tipo de lógica considere que el tiempo de propagación de cada circuito combinacional es de 20 ns desde cualquiera de sus entradas a cualquiera de sus salidas. Tenga en cuenta también que la versión del microcontrolador empleado es el que funciona hasta 16MHz.
/CS
D[7..0]
tcs toh
/OE
A[1..0]
toe
/CS
D[7..0]
tcs toh
/OE
A[1..0]
toe
37
Máximo Mínimo tcs 600ns 500ns toe 650ns 550ns toh 20ns 0ns
C2) En el caso de que la conexión propuesta en el apartado B no respete la temporización, proponga una alternativa en el que no sea necesario mapear el periférico sino que se pueda gestionar empleando puertos de entrada salida de propósito general.
12MHz
U7
80C552/FP
5857565554535251
7170696867666564
31
32
6059
5077
974
49487576
1011121314151617
3839404142454647
1819202324252627
801245678
P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7
P5.0/ADC0P5.1/ADC1P5.2/ADC2P5.3/ADC3P5.4/ADC4P5.5/ADC5P5.6/ADC6P5.7/ADC7
XTAL2
XTAL1
AVREF+AVREF-
EAEWRSTSTADC
ALEPSENPWM0PWM1
P1.0/CT0IP1.1/CT1IP1.2/CT2IP1.3/CT3I
P1.4/T2P1.5/RT2P1.6/SCLP1.7/SDA
P2.0/A08P2.1/A09P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15
P3.0/RXDP3.1/TXD
P3.2/INT0P3.3/INT1
P3.4/T0P3.5/T1
P3.6/WRP3.7/RD
P4.0/CMSR0P4.1/CMSR1P4.2/CMSR2P4.3/CMSR3P4.4/CMSR4P4.5/CMSR5P4.6/CMT0P4.7/CMT1
GND
D2D1
D3D4
D7D6
PERIFERICO
D5
A0A1
/CS/OE/WR
D0
/INT
C3) Escriba una función denominada Leer_Registro que reciba como parámetro la dirección del periférico que se desee leer (0, 1, 2 o 3) y devuelva un valor leído del periférico. El prototipo de la función sería
unsigned char Leer_Registro (unsigned char direccion);
NOTA: Para su desarrollo dispone de una función que implementa un retardo software expresado en microsegundos. retardo (microsegundos);