sistemas digitales ii - ocw...

37
1 SISTEMAS DIGITALES II EJERCICIOS PROPUESTOS TEMA 1 Departamento de Sistemas Electrónicos y de Control TEMA 1: La Familia de Microcontroladores MCS-51

Upload: lamthuan

Post on 30-Nov-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

1

SISTEMAS DIGITALES II

EJERCICIOS PROPUESTOS TEMA 1

Departamento de Sistemas Electrónicos y de Control

TEMA 1: La Familia de Microcontroladores MCS-51

2

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);