Sei sulla pagina 1di 27
GUIAS ÚNICAS DE LABORATORIO SISTEMA DIGITAL BASADO EN MICROPROCESADOR AUTOR: ALBERTO CUERVO SANTIAGO DE CALI

GUIAS ÚNICAS DE LABORATORIO

SISTEMA DIGITAL BASADO EN MICROPROCESADOR

AUTOR: ALBERTO CUERVO

SANTIAGO DE CALI UNIVERSIDAD SANTIAGO DE CALI DEPARTAMENTO DE LABORATORIOS

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
SISTEMA DIGITAL BASADO EN MICROPROCESADOR Introducción El artículo presente tiene como objetivo describir el diseño

SISTEMA DIGITAL BASADO EN MICROPROCESADOR

Introducción

El artículo presente tiene como objetivo describir el diseño de un sistema digital basado

en el microprocesador de 8 bits 8085 de Intel.

Este sería el último de los microprocesadores de 8 bits de propósito general desarrollado por la firma Intel Corporation y consiste de una versión mejorada de su microprocesador

8080.

Se seleccionó el microprocesador 8085 por las ventajas que éste ofrece entre los microprocesadores de 8 bits, entre las cuales se pueden nombrar su generador interno de reloj, su controlador interno del sistema, su bajo costo y su amplio repertorio de chips de soporte que lo hacen atractivo en aplicaciones de control.

El sistema descrito consiste, además del microprocesador, de una memoria RAM de 2 Kbytes, una memoria EPROM de 8 Kbytes en la cual residirá el programa, 3 puertos de entrada/salida programables y un convertidor analógico/digital el cual es utilizado para obtener el valor de la temperatura de un líquido contenido en un recipiente.

El sistema digital diseñado es apropiado para ser implementado como proyecto de curso

de un semestre de duración por estudiantes relacionados con el tema de

microprocesadores.

El microprocesador La distribución de terminales del circuito integrado del microprocesador 8085 se muestra en la figura 1.

Como se puede observar en la figura, este microprocesador opera con una sola fuente de alimentación de + 5 voltios conectada entre los terminales 20 y 40.

Las líneas TRAP, RST 7.5, RST 6.5, RST 5.5 e INTR (Interrupt Request) son entradas de interrupción por donde los dispositivos periféricos pueden solicitar atención del microprocesador .

Presentan distintos niveles de prioridad, siendo TRAP la línea más prioritaria e INTR la de menor prioridad.

A una solicitud de interrupción por la línea INTR, el microprocesador contesta con un

pulso negativo INTA´ (Interrupt Acknowledge) si acepta la interrupción. Durante el pulso INTA´, el dispositivo periférico deberá colocar en el bus de datos del microprocesador el vector de interrupción el cual consiste de un código de 8 bits que tiene la información de la dirección de memoria donde está ubicada la subrutina de servicio del dispositivo.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
El código de este vector de interrupción o RSTn es igual a 11NNN111, donde n

El código de este vector de interrupción o RSTn es igual a 11NNN111, donde n es un número de 3 bits igual a NNN.

Introduciendo este código con el pulso INTA´ el microprocesador guarda la dirección de memoria de retorno en la pila y salta a la dirección 8 * n.

Se debe destacar que el microprocesador genera automáticamente en su interior los distintos vectores de interrupción a solicitudes efectuadas por las otras entradas de interrupción, por lo que se producirá una bifurcación de forma automática a las direcciones de memoria donde deberán estar ubicadas las subrutinas de atención correspondientes o un salto a las mismas como se muestra en la tabla 1.

X1

X2

RESET OUT

SOD

SID

TRAP

RST 7.5

RST 6.5

RST 5.5

INTR

INTA

AD0

AD1

AD2

AD3

AD4

AD5

AD6

AD7

 
   
 
   

1

40

 

2

39

3 38

3

38

4 37

4

37

 

5

36

 

6

35

 

7

34

 

8

33

 

9

32

 

10

31

 

11

8085

30

12  29

 

29

1328

28

1427

27

1526

26

1625

25

1724

24

1823

23

1922

22

20

 

21

MICROPROCESADOR

Vcc (+5v.)

(CLK) OUT

RESET IN

HOLD  21 MICROPROCESADOR Vcc (+5v.) (CLK) OUT RESET IN HLDA READY IO/M S1 RD WR ALE

HLDA

READY21 MICROPROCESADOR Vcc (+5v.) (CLK) OUT RESET IN HOLD HLDA IO/M S1 RD WR ALE S0

IO/M

S1

RD

WR

ALE

S0

A15

A14

A13

A12

A11

A10

A9

A8

Figura 1. Distribución de terminales

Solicitud por:

 

Bifurca a la dirección:

decimal

binario

hexadecimal

TRAP

36

0000000000100100

0024

RST 7.5

60

0000000000111100

003C

RST 6.5

52

0000000000110100

0034

RST 5.5

44

0000000000101100

002C

Tabla 1. Direcciones de bifurcación.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
La línea RST 7.5 tiene una característica distinta a las otras. El flip-flop de solicitud

La línea RST 7.5 tiene una característica distinta a las otras. El flip-flop de solicitud de interrupción asociado al dispositivo se encuentra internamente en el microprocesador, lo que hace que esta línea sea sensible al flanco de subida de un pulso aplicado a la misma por el hardware del dispositivo.

En cualquier otra línea (INTR, RST 6.5 Y RST 5.5) debe permanecer un nivel de 1 fijo hasta que la interrupción sea reconocida por el microprocesador. El flip-flop interno de solicitud de interrupción asociado a la línea RST 7.5 se resetea con una de las siguientes acciones:

1. Reseteando al microprocesador, esto es, colocando un 0 en la entrada (Reset In)´.

2. Mediante el software con una instrucción SIM (Set Interrupt Mask) con el bit 4 del acumulador en 1.

3. Automáticamente con un reconocimiento del microprocesador a una solicitud de interrupción por la línea RST 7.5.

La línea TRAP es sensible tanto a un flanco como a un nivel aplicado. Esta entrada debe ir a 1 y permanecer en 1 hasta que sea reconocida la solicitud de interrupción. Una nueva interrupción no será reconocida hasta que esta línea vaya a 0 y después nuevamente a 1.

Las líneas de interrupción excepto TRAP pueden ser enmascaradas o inhabilitadas mediante una instrucción DI (Disable Interrupt) lo cual coloca al flip-flop interno INTE en el estado 0. Este flip-flop es el responsable de habilitar o inhabilitar las líneas de interrupción excepto TRAP que es una línea no-enmascarable. Con la instrucción EI (Enable Interrupt) se coloca al flip-flop INTE en 1 habilitando todas las líneas de interrupción.

Cuando el microprocesador reconoce una interrupción, automáticamente coloca INTE=0 inhabilitando todas las líneas enmascarables, por lo que en el software habrá que ejecutar la instrucción EI para permitir futuras interrupciones por estas líneas. Si INTE=1, las líneas RST 7.5, RST 6.5 y RST 5.5 pueden ser inhabilitadas individualmente colocando un código apropiado en un registro interno del microprocesador denominado registro de máscaras como se muestra en la figura 2.

7

6

5

4

3

2

1

0

SOD

SOE

X

R7.5

MSE

M7.5

M6.5

M5.5

Figura 2. Reg. de máscaras del microprocesador

Las funciones de los distintos bits colocados en el registro de máscaras se describen a continuación.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
Bits 0, 1 y 2. Un 1 colocado en estos bits del registro inhabilita la

Bits 0, 1 y 2. Un 1 colocado en estos bits del registro inhabilita la línea respectiva. Un 0 la habilita.

Bit 3 MSE (Mask Set Enable). La instrucción SIM mueve el contenido del acumulador al registro de máscaras. El bit 3 debe estar en 1 cuando se ejecute la instrucción SIM para poder alterar los bits 0, 1 y 2 anteriores.

Bit 4 R7.5. Un 1 colocado en el bit 4 resetea el flip-flop interno de solicitud de interrupción asociado a la línea RST 7.5.

Bit 7 SOD = Serial Output Data. El terminal 4 del microprocesador por el cual se transmiten datos en forma serial es una réplica de este bit del registro de máscaras el cual puede ser colocado en un determinado nivel lógico mediante la instrucción SIM. Con esta instrucción, el bit 7 del acumulador es colocado en el bit 7 del registro de máscaras si el bit 6 (SOE= Serial Output Enable) es colocado en 1.

La instrucción RIM (Read Interrupt Mask) almacena en el acumulador del microprocesador el estado de las máscaras de interrupción, las interrupciones pendientes y el nivel del terminal 5 SID (Serial Input Data) utilizado para recibir datos en forma serial. De esta forma el estado de las interrupciones puede ser monitoreado bajo el control del programa. Cuando las interrupciones están inhabilitadas pero pendientes, el programa puede de forma selectiva habilitar una línea en particular para atender una solicitud de interrupción en cuestión.

El contenido del acumulador después de una instrucción RIM se muestra en la figura 3.

Máscaras de interrupción SID I 7.5 I 6.5 I 5.5 I E M7.5 M6.5 M5.5
Máscaras de
interrupción
SID
I 7.5
I 6.5
I 5.5
I E
M7.5
M6.5
M5.5
INTE
Interrupciones pendientes
Serial Input Data

Figura 3. Contenido del acumulador después de RIM

Terminales 1 y 2. (X1) y (X2). Estos terminales son utilizados para fijar la frecuencia interna de los pulsos de reloj. En estos terminales se puede colocar un cristal de cuarzo o una resistencia cuando la estabilidad de la frecuencia del reloj no es un factor determinante. En el sistema digital descrito se utiliza una resistencia de 10 Kohmios que fija la frecuencia de los pulsos de reloj ≈ 1.5 MHz.

Terminal 36 (Reset In)´.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
Colocando esta entrada en 0 se resetea el microprocesador provocando las siguientes acciones. 1. Se

Colocando esta entrada en 0 se resetea el microprocesador provocando las siguientes acciones.

1. Se limpia el contador de programa, por lo que el microprocesador comenzará ejecutando la instrucción que se encuentre en la dirección 0000H cuando (Reset In)´ regrese a 1.

2. Las líneas de datos y direcciones, así como las líneas de control se colocan en el estado de alta impedancia mientras (Reset In)´ = 0.

3. Coloca al flip-flop INTE en 0 inhabilitando las interrupciones. Igualmente se resetea el flip-flop interno de solicitud de interrupción asociado con la línea RST 7.5 y se colocan en 1 las máscaras de interrupción.

Mientras (Reset In)´ = 0, el microprocesador se encuentra en el estado de Reset en el cual la línea de salida Reset Out, terminal 3, se activa con un 1. Se utiliza generalmente como señal general de reset del sistema y está sincronizada con los pulsos de reloj del microprocesador los cuales pueden ser obtenidos del terminal 37 identificado como CLK OUT.

La señal HOLD, terminal 39, le indica al microprocesador que un dispositivo externo solicita tener acceso directo a memoria (DMA : Direct Memory Access). Cuando el microprocesador acepta o reconoce la solicitud, responde colocando en 1 la señal HLDA (Hold Acknowledge), terminal 38. Esto último le indica al dispositivo que el microprocesador libera los buses de datos y direcciones, las señales de RD´, WR´ e IO/M´ colocando todas estas líneas en el estado de alta impedancia. Esto permite al dispositivo externo tomar el control de los buses del sistema para efectuar una transferencia de datos directamente con la memoria sin la intervención del microprocesador.

Las señales de RD´ y WR´ son pulsos negativos generados por el microprocesador por los terminales 32 y 31 respectivamente cuando va a efectuar una operación de lectura o escritura en la memoria o en un puerto de entrada/salida.

Las señales S1, S0 e IO/M´ son señales de estado del microprocesador obtenidas en los terminales 33, 29 y 34 respectivamente que identifican el ciclo de máquina en curso en el microprocesador, esto es, si se trata de un ciclo de búsqueda, de un ciclo de lectura de memoria, de un ciclo de escritura de memoria, etc. De estas, la más utilizada es IO/M´ que indica si la operación de lectura o escritura se realiza en memoria o en un puerto de entrada/salida. IO/M´ = 0 indica que la operación se realiza en la memoria e IO/M´= 1 indica que la operación se efectúa en un puerto.

De la misma forma, S1S0=00 indica que el microprocesador se encuentra detenido en el estado de ALTO, 01 que se encuentra realizando una operación de lectura, 10 una operación de escritura y 11 que se encuentra en el ciclo de máquina de búsqueda en el cual lee de la memoria el código de operación de una instrucción.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
La duración de un estado en el microprocesador se identifica con un período de los

La duración de un estado en el microprocesador se identifica con un período de los pulsos de reloj. Todos los ciclos de máquina tienen 3 estados, excepto el ciclo de búsqueda que puede tener 4 ó 6 estados dependiendo de la instrucción. Todo un ciclo de instrucción consta de uno o más ciclos de máquina, entendiéndose que se produce un nuevo ciclo de máquina cada vez que el microprocesador hace referencia a memoria o a un dispositivo de entrada/salida.

Así por ejemplo, la instrucción STA 2382H (Store Accumulator) que almacena el contenido del acumulador en la dirección de memoria especificada consta de 4 ciclos de máquina. Un primer ciclo de búsqueda donde se lee de la memoria el código de operación de la instrucción el cual le indica al microprocesador las actividades que debe realizar a continuación, 2 ciclos de lectura de memoria (Memory Read) en los cuales se lee la dirección de 16 bits especificada por la instrucción y un último ciclo de escritura de memoria (Memory Write) en donde el microprocesador saca por el bus de direcciones la dirección leída anteriormente para almacenar en esta localización de memoria el contenido del acumulador que está sacando por el bus de datos.

La señal de READY (terminal 35) es utilizada por un dispositivo de entrada/salida o la memoria para poder solicitar al microprocesador uno o más estados de espera intercalados entre los estados T2 y T3 de un ciclo de máquina.

Así por ejemplo, durante un ciclo de lectura de memoria en el estado T1 al comienzo del ciclo de máquina el microprocesador coloca la dirección de la localización de memoria que va a leer en el bus de direcciones y en el estado T3 almacena internamente el contenido del bus de datos. Si el tiempo de acceso de la memoria es tal que no le da tiempo a la misma a colocar el dato en el bus de datos tendrá que solicitar espera intercalando estados del mismo nombre entre los estados T2 y T3 mientras la señal

READY=0.

El microprocesador consta de un bus de datos de 8 bits y un bus de direcciones de 16 bits, pudiendo direccionar por tanto 2 16 = 64 Kbytes de memoria.

A8 a A15 (terminales 21-28) constituyen los bits de mayor orden de la dirección y los bits AD0 a AD7 (terminales 12-19) son líneas compartidas por el bus de datos y los 8 bits de menor orden de la dirección. Esto es, las líneas AD0-AD7 constituyen un bus multiplexado. Al comienzo de un ciclo de máquina estas líneas son unidireccionales y contienen los 8 bits de menor orden A0-A7 de la dirección de memoria o de un puerto de entrada/salida seleccionado. Posteriormente en el ciclo de máquina estas líneas son bidireccionales y se convierten en el bus de datos del sistema.

El pulso ALE (Address Latch Enable) es generado por el microprocesador por el terminal 30 al comienzo de un ciclo de máquina para indicar que la parte baja de una dirección se encuentra en las líneas AD0-AD7 como se ilustra en la figura 4.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
Reloj A8-A15 AD0-AD7 ALE RD Ciclo de lectura de memoria (Memory Read) T1 T2 T3

Reloj

A8-A15

AD0-AD7

ALE

RD

Ciclo de lectura de memoria (Memory Read)

AD0-AD7 ALE RD Ciclo de lectura de memoria (Memory Read) T1 T2 T3 T1 parte alta
T1 T2 T3 T1
T1
T2
T3
T1

parte alta de la direcciónRD Ciclo de lectura de memoria (Memory Read) T1 T2 T3 T1 parte baja de la

(Memory Read) T1 T2 T3 T1 parte alta de la dirección parte baja de la dirección
parte baja de la dirección Dato válido dato
parte baja de la
dirección
Dato
válido
dato

Figura 4. Señales durante un ciclo de lectura de memoria

En esta figura se han representado las señales que ocurren durante un ciclo de lectura de memoria.

Al comienzo del estado T1 del ciclo de máquina el microprocesador coloca el byte de mayor orden de la dirección en las líneas A8-A15 y permanece constante hasta el final del estado T3 y el byte de menor orden de la dirección lo coloca en las líneas AD0-AD7. Este byte sin embargo permanece en estas líneas solamente hasta el comienzo del estado T2 en cuyo momento las líneas AD0-AD7 se convierten en líneas de datos. Observe que el pulso ALE es generado mientras la parte baja de la dirección se encuentra en las líneas AD0-AD7.

Durante el estado T2 el pulso de lectura RD´ va a 0 habilitando la salida de memoria y colocando ésta con su demora inevitable su dato en las líneas AD0-AD7. Con el flanco positivo del reloj en el estado T3 el microprocesador almacena internamente el dato que le llega por estas líneas. Durante todo el ciclo, la señal IO/M´ = 0 indicando que la operación de lectura se efectúa en la memoria.

De acuerdo con la descripción anterior se hace necesario demultiplexar o retener la parte baja de la dirección como se muestra en la figura 5.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
X1 A15 A15 A14 A14 A13 A13 10 Kohmios A12 A12 A11 A11 A10 X2
X1 A15 A15 A14 A14 A13 A13 10 Kohmios A12 A12 A11 A11 A10 X2
X1
A15
A15
A14
A14
A13
A13
10 Kohmios
A12
A12
A11
A11
A10
X2
A10
A9
A9
20
A8
A8
picofaradios
A7
A6
A5
A4
A3
A2
+5V.
A1
8085
A0
Bus de
R
Latch
Direcciones
ALE
C
oc
Reset
74LS373
Bus de
RESET IN
Datos
+
AD7
D7
C
AD6
D6
AD5
D5
AD4
D4
AD3
D3
AD2
D2
R : 47 Kohmios
C : 10 microfaradios
AD1
D1
AD0
D0

Figura 5. El microprocesador con el bus de direcciones demultiplexado

En esta figura se ha utilizado el latch de 8 bits con salidas de 3 estados 74LS373 para retener el byte de menor orden de la dirección. Las salidas se encuentran permanentemente habilitadas al estar conectada su entrada OC´ (Output Control) a tierra ó 0 voltios.

El pulso ALE del microprocesador alimenta la entrada C del latch, por tanto, cuando ALE se hace 1 las salidas del latch toman los valores de sus entradas y cuando ALE regresa a 0 estos valores son retenidos en el latch.

La red RC de 47 Kohmios y 10 microfaradios es utilizada para resetear al microprocesador en el instante inicial que se conecte la energía eléctrica. El diodo es de señal de silicio para proteger la entrada (Reset In)´ de cualquier posible oscilación. El switch de Reset se utiliza para resetear al microprocesador manualmente.

Entre los terminales X1 y X2 se ha conectado una resistencia de 10 Kohmios para fijar la frecuencia de los pulsos de reloj a un valor aproximado de 1.5 MHz.

Interface con memoria. Se debe proveer al sistema digital de una memoria EPROM de 8 Kbytes y una memoria RAM de 2 Kbytes. Para cumplir con estos requerimientos se utilizará el circuito integrado de una EPROM de 8 Kbytes 27C64. Las direcciones de la EPROM deben comenzar en la dirección 0000H.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
Como la EPROM tiene 13 líneas de dirección, las localizaciones de la misma se podrán

Como la EPROM tiene 13 líneas de dirección, las localizaciones de la misma se podrán acceder con las direcciones que van de 0000H hasta 1FFFH. Para la RAM se utiliza el circuito integrado TMS4016. La RAM debe comenzar a continuación de la EPROM. Como la RAM tiene 11 líneas de dirección, las direcciones en la misma irán desde 2000H hasta 27FFH como se muestra en la figura 6.

8 Kbytes 2 Kbytes 64 Kbytes
8 Kbytes
2 Kbytes
64 Kbytes
se muestra en la figura 6. 8 Kbytes 2 Kbytes 64 Kbytes A 15 . .

A15

.

.

.

.

.

.

.

A0

EPROM RAM
EPROM
RAM

0000

0000 0000 0000

0001

1111 1111 1111

0010

0000 0000 0000

0010

0111 1111 1111

bit 13 bit 14 Direcciones
bit 13
bit 14
Direcciones

Figura 6. Mapa de memoria

Como se puede observar, A14A13 = 00 en las direcciones de EPROM y A14A13 = 01 en la RAM, por lo que se utilizará un decodificador 2 a 4 para seleccionar estas pastillas como se muestra en la figura 7.

En la misma se muestra al microprocesador con su sistema de memoria. A la línea de READY se le ha colocado un 1 fijo ya que los tiempos de acceso de las pastillas de memoria utilizadas son adecuados para la frecuencia de los pulsos de reloj fijada con la resistencia de 10 Kohmios. Igualmente se ha colocado un 0 fijo a la línea de HOLD y a todas las entradas de interrupción que no se utilicen.

En la tabla 2 se muestran las funciones de las líneas de las pastillas utilizadas.

Decodificador

Memoria RAM

 

Memoria EPROM

G´ : entrada de habilitación

G´: habilitación de salida

 

CE´: entrada de selección

BA:entradas, B mayor orden

S´: entrada de selección

 

OE´: habilitación de salida

Y0-Y3: salidas

W´:

habilitación

de

A0-A12: líneas de dirección

escritura

 

A0-A10: líneas de dirección

DQ0-DQ7: salida de datos

 

DQ1-DQ8: entrada/salida

   

Tabla 2. Funciones de las líneas.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
4.7K CLK OUT Reset Out 47 Kohmios on/off +5v. Reset In Reset 10 microfaradios microprocesador
4.7K CLK OUT Reset Out 47 Kohmios on/off +5v. Reset In Reset 10 microfaradios microprocesador
4.7K
CLK OUT
Reset Out
47
Kohmios
on/off
+5v.
Reset In
Reset
10
microfaradios
microprocesador
A la alimentación
de los CIs
X1
10 Kohmios
X2
20 picofaradios
A15
A0
C
OC
DEC
CEOE A12
A0
GW
A10
A0
B
A
Vcc
G
EPROM 27C64
S
RAM TMS4016
Vpp
1/2 74LS139A
PGM´ DQ7
DQ0
DQ8
DQ1
Y3 Y2 Y1 Y0
+5v.
alimentación
D7
Figura 7. Memoria
RST 6.5
WR
RD
TRAP
IO/M
RST 5.5
ALE
RST 7.5
INTR
HOLD
A15
INTA
A14
HLDA
A13
S1
A12
S0
A11
SID
A10
A9
SOD
A8
AD0
AD1
AD2
AD3
AD4
Ready
AD5
AD6
AD7
74LS373

Convertidor analógico/digital El convertidor analógico/digital seleccionado consiste del circuito integrado ADC0801 o similar el cual tiene una resolución de 8 bits. Tiene salida de 3 estados por lo que se puede acoplar directamente al bus de datos del microprocesador como un puerto de entrada. Tiene un generador de reloj interno para el proceso de conversión, aunque se puede utilizar con el reloj del microprocesador aplicado a su terminal CLK IN si la frecuencia estuviese comprendida entre 100 y 1460 KHz. Utiliza una simple fuente de alimentación de + 5 voltios. Este convertidor responde a un voltaje diferencial analógico [Vin(+) – Vin(-)] aplicado en sus entradas. La distribución de terminales se muestra en la figura 8.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
      CS 1 20 RD 2 19 WR 3 18     A/D
 
   
 
 

CS

1

20

RD

2

19

WR

3

18

   

A/D

CLK IN

4

17

INTR

5

16

ADC0801

VIN(+)

6

15

 

VIN(-)

7

14

 

A

GND

8

13

VREF/2

9

12

D

GND

10

11

Vcc

CLK R

DB0

DB1

DB2

DB3

DB4

DB5

DB6

DB7

Figura 8. Distribución de terminales del A/D

Comienzo de la conversión. La orden de comenzar la conversión de la señal analógica aplicada a la entrada del convertidor se efectúa cuando van a 0 las señales CS´ y WR´ como se muestra en la figura 9a. Cuando se completa la conversión y el dato digital está disponible, el convertidor responde colocando INTR´ en 0. Por tanto esta última señal puede ser utilizada como “Fín de Conversión” pudiendo ser monitoreada bajo el control del programa o utilizada para solicitar interrupción del microprocesador.

CS

WR

INTR

Conversión terminada INTR Inicie conversión CS RD Dato 3er estado 3er estado (a) (b)
Conversión
terminada
INTR
Inicie conversión
CS
RD
Dato
3er estado
3er estado
(a)
(b)

Figura 9 Señales en el Convertidor A/D

Lectura del dato. Para leer el dato digital convertido se hacen 0 CS´ y RD´. El convertidor responde quitando la solicitud de interrupción (INTR´ va a 1) y coloca el dato digital con su demora intrínseca en sus líneas DB7-DB0 como se muestra en la figura 9b. Voltaje de Referencia.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
El voltaje de referencia del Conv. A/D determina el rango dinámico de la señal diferencial

El voltaje de referencia del Conv. A/D determina el rango dinámico de la señal diferencial de entrada VIN = VIN(+) – VIN(-).

VREF = Vcc si no se aplica ningún voltaje al terminal marcado como VREF/2. Si se aplica un voltaje externo a este terminal, por ejemplo 2 voltios, entonces VREF = 4 voltios y éste será el rango de variación de VIN.

En esta situación, los escalones en VIN (variación en VIN en que no cambia la salida digital) será igual a 4/2 8 = 15.625 milivoltios como se muestra en la figura 10. Se cumple que VIN = escalón x (valor digital). Por ejemplo, si la salida digital es 00000101 = 5dec, entonces VIN = 5 x 15.625 mV = 78.125 mV, correspondiendo este valor al centro del escalón.

salida

digital 11111111 escalón 15.625 mV 00000101 00000100 00000011 00000010 00000001 00000000 entrada analógica
digital
11111111
escalón
15.625 mV
00000101
00000100
00000011
00000010
00000001
00000000
entrada
analógica
VIN
0 v.
15.625
mV
31.25 mV
46.875
mV
62.5 mV
78.125
mV
3.984 v

Figura 10. Función transferencial

Reloj. La frecuencia de los pulsos de reloj debe estar en el rango comprendido entre 100 y 1460 KHz. Como la frecuencia del reloj del microprocesador ≈ 1.5 MHz, no puede ser utilizada para alimentar la entrada CLK IN del convertidor.

La frecuencia de reloj del A/D puede ser fijada con una red RC externa como se muestra en la figura 11. Con R = 10 Kohmios y C = 150 picofaradios se obtiene una frecuencia del reloj del A/D ≈ 606 KHz, valor próximo a 640 KHz recomendado por el fabricante para obtener garantizada la exactitud del Conv. A/D.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
A/D CLK R R CLK IN CLK C 1 Frec = 1.1RC Figura 11. Ajuste
A/D CLK R R CLK IN CLK C 1 Frec = 1.1RC Figura 11. Ajuste
A/D
CLK R
R
CLK IN
CLK
C
1
Frec = 1.1RC
Figura 11. Ajuste de la frecuencia

Sensor de temperatura El sensor de temperatura seleccionado consiste del circuito integrado LM335 el cual tiene un coeficiente de temperatura de 10 mV/ ºC. A la temperatura ambiente de 25 ºC tiene un voltaje ≈ 2.98 voltios según especificación del fabricante. Su distribución de terminales se muestra en la figura 12.

Por lo anterior a 0ºC su voltaje será 2980mV – 10x25= 2.73v y a 100ºC el voltaje en el sensor será igual a 2730mV + 10 x 100 = 3.73v.

NC

NC

NC

-

sensor será igual a 2730mV + 10 x 100 = 3.73v. NC NC NC - 1
sensor será igual a 2730mV + 10 x 100 = 3.73v. NC NC NC - 1

1

2

3

4

8

7

6

5

+

NC

NC

ajuste

LM335

V+

R salida 10 mv/ºC
R
salida
10 mv/ºC

circuito básico

V+ R salida 2.98v a 25ºC 10 mv/ºC 10K
V+
R
salida
2.98v a 25ºC
10 mv/ºC
10K

sensor calibrado

Figura 12. Sensor de temperatura LM335

El potenciómetro de 10 K se utiliza para ajustar el voltaje de salida exactamente en 2.982 voltios a 25ºC y obtener mayor exactitud del dispositivo.

Rango de temperaturas Se desea medir temperaturas comprendidas en el rango 0ºC ≤ T < 100 ºC. Como el coeficiente de temperaturas del sensor es de 10 mV/ºC, se utilizará un VREF/2 en el convertidor analógico/digital igual a 1.28 voltios. Esto produce un rango dinámico en el mismo de 2.56 voltios y un escalón en VIN igual a 2.56/2 8 v = 10 mV. Es decir entonces que para cada grado centígrado de aumento en la temperatura, la salida digital se incrementa en la unidad.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
Por otro lado, como el sensor produce un voltaje de 2.73 voltios a 0ºC, se

Por otro lado, como el sensor produce un voltaje de 2.73 voltios a 0ºC, se colocará este valor en VIN(-). Así cuando la temperatura sea de 0ºC, VIN(+) (salida del sensor) = 2.73v y VIN = VIN(+) – VIN(-) = 0 voltios produciendo el convertidor analógico/digital una salida igual a 00000000.

El circuito para efectuar lo anteriormente expuesto se muestra en la figura 13.

alimentación de +5 v. 10 + microfaradios tantalio 1 330 al bus ohmios 3 WR
alimentación
de +5 v.
10
+
microfaradios
tantalio
1
330
al bus
ohmios
3
WR
Vcc
INTR
de datos
DB0
A/D
RD
2
selección
DB1
CS
DB2
LM4050-4.1
CLK R
DB3
10K
DB4
VR
DB5
150
T = 20 ppm/ºC
CLK IN
DB6
picofaradios
DB7
LM335
+5v.
D GND
10 mV/ºC
1.2K
7.5K
LM4050-4.1
A GND
5%
VIN(+)
1.28v
diodo de precisión
de referencia
VREF/2
VIN(-)
1K
0.01
2.73v
R1
microfaradios
sensor de
R2
temperatura
3.3K / 5%
9.1K / 5%
1K
3.9K / 5%

Figura 13 Sensor de Temperatura y Convertidor A/D

Los pequeños potenciómetros R1 y R2 se utilizan para ajustar los voltajes en VREF/2 y VIN(-) en 1.28 y 2.73v respectivamente. El potenciómetro R2 ajusta la salida del conv. A/D a 00hex cuando la temperatura sea de 0ºC y R1 a que tenga una resolución (escalón) de 10 mV. R1 varía el voltaje entre 1.14 y 1.43v y R2 entre 2.66 y 2.95v aproximadamente.

El LM4050-4.1 es un diodo de precisión de referencia utilizado para obtener un voltaje estabilizado de 4.1 voltios con un coeficiente de temperatura muy pequeño. Este voltaje solamente varía con la temperatura a razón de 20 ppm (partes por millón) por cada ºC. El capacitor de 10 microfaradios conectado a la alimentación de +5v. del A/D debe ser de tantalio para eliminar los impulsos de ruido que puedan venir por la línea de alimentación de +5v. y estar físicamente conectado lo más próximo posible al terminal de Vcc del convertidor analógico/digital.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
El cable de conexión del sensor de temperatura debe ser trenzado para evitar ruido inducido

El cable de conexión del sensor de temperatura debe ser trenzado para evitar ruido inducido y conectado a tierra lo más cerca posible del terminal marcado como AGND (analog ground : tierra analógica) del A/D.

El sensor de temperatura LM335 debe ir encerrado en un tubo metálico o de vidrio para construir la sonda que se introduce en el líquido. Debe estar embebido en grasa de silicona para garantizar una buena transferencia de calor y el extremo abierto del tubo debe ir sellado con sellante de silicona de alta temperatura para evitar la entrada de líquido.

Puertos Programables Se plantea como requerimiento la implementación del sistema digital con tres puertos programables, por lo que se utiliza la interface periférica programable 82C55 de la compañía Intel Corporation. Este circuito integrado goza de gran aceptación al ser utilizadas sus funciones en la implementación de computadores personales recientes basados en el Pentium II y empleado para implementar una interface con el teclado y el puerto paralelo de la impresora en muchos computadores personales.

En la figura 14a se muestra la distribución de terminales del 82C55, así como las direcciones internas para seleccionar los distintos registros del mismo.

Consta de 3 puertos A, B y C de entrada/salida los cuales son programados como grupos como se muestra en la figura 14b. Es programado por medio de 2 bytes de comando, donde el bit 7 selecciona el byte de comando A o el B. El byte de comando A programa la función de los grupos A y B mientras que el byte de comando B coloca en 1 ó 0 en forma individual bits del puerto C del 82C55.

Los grupos pueden ser programados en tres modos diferentes. El grupo B puede ser programado en el modo 0 ó 1 y el grupo A en los modos 0, 1 ó 2. Ambos grupos pueden ser programados como entrada o como salida.

Modo 0. La operación en el modo 0 ocasiona que las líneas del grupo funcionen como líneas de entradas con buffer de 3 estados o como líneas de salida con registro. Constituye el modo básico de operación.

Modo 1. En el modo 1 de operación, se efectúa una transferencia controlada por pulsos por los puertos A o B, mientras que el puerto C proporciona las señales de diálogo o “handshaking” requeridas para estos puertos. Ya esté configurado el puerto como entrada o salida, el dato es almacenado en el mismo como en un registro.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
Bus de datos byte de comando A 34 4 D0 PA0 7 6 5 4

Bus de datos

byte de comando A

34 4 D0 PA0 7 6 5 4 3 2 1 0 33 3 D1
34
4
D0
PA0
7
6
5
4
3
2
1
0
33
3
D1
PA1
32
2
D2
PA2
1
31
1
D3
PA3
30
40
D4
PA4
Grupo B
29
39
D5
PA5
28
38
Puerto C : PC3-PC0
D6
PA6
27
37
D7
PA7
1=entrada
0=salida
18
PB0
5
19
Puerto B
RD
PB1
36
20
WR
PB2
1=entrada
9
21
A0
PB3
0
= salida
8
22
A1
PB4
15
23
Modo
RESET
PB5
6
24
CS
PB6
0=Modo 0
25
PB7
1=Modo 1
14
PC0
82C55
15
Grupo A
PC1
16
PC2
17
Vcc: 26
GND : 7
Puerto C : PC7-PC4
PC3
13
PC4
1=entrada
12
PC5
0
= salida
11
PC6
10
Puerto A
PC7
1=entrada
0
= salida
A1
A0
Selección
Modo
0
0
Puerto A
00
= modo 0
0
1
Puerto B
01
= modo 1
byte de comando B
1
0
Puerto C
1X = modo 2
7
6
5
4
3
2
1
0
1
1
Registro de comando
0
X
X
X
selección de 1 bit
Bit Set/Reset
1 = Set
0 = Reset
(a)
(b)
Puerto C
Puerto A
Puerto B

Figura 14. Interface periférica programable (a) distribución de terminales y (b) bytes de comando

Modo 2. El modo 2 de operación sólo es permitido para el grupo A. El puerto A se convierte en bidireccional pudiéndose efectuar una transmisión y recepción de datos a través de las mismas líneas.

Puerto de entrada en modo 1. En este modo de operación, el puerto funciona como un registro con almacenamiento del dato. Esto permite que el dato permanezca en el puerto hasta que el microprocesador se encuentre listo para leerlo. La figura 15 muestra las señales en este modo de operación, en donde las líneas PC3, PC4 y PC5 del puerto C no manejan datos,

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
sino señales de diálogo del puerto A. En la figura 15 se ha supuesto que

sino señales de diálogo del puerto A. En la figura 15 se ha supuesto que el puerto A está programado como entrada y el puerto B como salida.

El significado de estas señales es el siguiente.

1. STBA´: Entrada de pulso que almacena el dato en el puerto A.

2. IBFA (Input Buffer Full) : Salida que indica que el puerto A contiene un dato

3. INTRA : (Interrupt Request) : Salida de solicitud de interrupción del puerto A. Un 1 en esta salida puede ser utilizado para interrumpir al microprocesador. Esta solicitud de interrupción puede ser in/habilitada con el flip-flop INTEA interno al

82C55. Este flip-flop puede ser colocado en 1 ó 0 con el bit PC4 mediante el byte de comando B para el caso del puerto A programado como entrada.

STBA IBFA BufferA lleno dato del dispositivo INTRA Solicitud de interrupción STBA PC4 IBFA RD
STBA
IBFA
BufferA lleno
dato del dispositivo
INTRA
Solicitud de interrupción
STBA
PC4
IBFA
RD
PC5
INTRA
PA0-PA7
PC3
dato
PC6,PC7
2
dato almacenado
en el puerto
dato leído por
el microprocesador
RD
WR
al dispositivo
WR
BufferB lleno
OBFB
OBFB
PC1
ACKB
INTRB
PC2
INTRB
PC0
ACKB
82C55
PB0-PB7
dato enviado
dato leído
puerto B
puerto A

al puerto

del puerto

Figura 15. Señales de diálogo

El dispositivo coloca un dato en sus líneas de salida y lo almacena en el puerto A al generar un pulso STBA´ si el buffer del puerto A está vacío. Este pulso activa las señales IBFA (buffer de entrada lleno) e INTRA (solicitud de interrupción). Una vez que el microprocesador reconoce por medio del software (IBFA) o hardware (INTRA) que un dato está almacenado en el puerto A, lo lee enviando un pulso de lectura RD´. Al leerse el dato del puerto A por el microprocesador, se resttituyen las señales IBFA e INTRA a

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
sus estados inactivos hasta que el siguiente dato sea escrito de nuevo en el puerto

sus estados inactivos hasta que el siguiente dato sea escrito de nuevo en el puerto A por el dispositivo.

Puerto de salida en modo 1. En este modo de operación, el puerto funciona como un registro que almacena el dato enviado por el microprocesador por el bus de datos con el pulso WR´. El significado de las señales asociadas al puerto B operando como salida en el modo 1 se describe a continuación.

1. OBF´B: (Output Buffer Full: Buffer lleno). Esta salida se coloca en 0 para indicar que hay un dato escrito o almacenado en el puerto. Regresa a 1 para indicar que el dato fue leído del puerto por un dispositivo externo.

2. ACK´B: (Acknowledge: Reconocimiento). Esta señal es una respuesta del dispositivo externo que indica que ha recibido el dato del puerto. Ocasiona que OBF´B regrese a 1 para indicar que el puerto está vacío. También ocasiona que INTRB regrese a 1 para solicitar una nueva interrupción.

3. INTRB : (Interrupt request: solicitud de interrupción). Señal utilizada normalmente para interrumpir al microprocesador. Puede ser inhabilitada colocando un 0 en INTEB. Esto último puede ser efectuado colocando un 0 en el bit PC2 con el byte de comando B siempre que el puerto B sea programado como salida.

Los bits del puerto C no utilizados por señales de diálogo quedan como líneas de entrada/salida de propósito general. En el ejemplo de la figura 15 serían los bits PC6 y PC7, los cuales quedan programados o como entrada o salida en dependencia de cómo se haya programado el puerto C del grupo A con el byte de comando A.

Lectura del puerto C. Modo 1. En el modo 1 el puerto C genera o acepta señales de diálogo con el dispositivo periférico como se ha visto. La lectura del contenido del puerto C permite al programador monitorear y comprobar el “estado” de cada dispositivo periférico y en concordancia tomar la decisión requerida. En la figura 16a se muestra un resumen de las señales de diálogo en el modo 1 y en b se muestran los distintos bits cuando se efectúa una lectura del puerto C.

Señales en el modo 2. Solamente el grupo A se puede programar en el modo 2, convirtiéndose el puerto A en bidireccional. Esto permite la transmisión y recepción de datos a través de las mismas ocho líneas. Las señales de diálogo en este modo de operación se muestran en la figura 17.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
  Modo 1   Programación como entrada   entrada salida D 7 D 6 D
 

Modo 1

 

Programación como entrada

 

entrada

salida

D7

D6

D5

D4

D3

D2

D1

D0

PC0

INTRB

INTRB

E/S

E/S

IBFA

INTEA

INTRA

INTEB

IBFB

INTRB

PC1

IBFB

OBFB

PC2

STBB

ACKB

 

Grupo A

   

Grupo B

 
       

PC3

INTRA

INTRA

Programación como salida

 
     

PC4

STBA

E/S

D7

D6

D5

D4

D3

D2

D1

D0

PC5

IBFA

E/S

OBFA

INTEA

E/S

E/S

INTRA

INTEB

OBFB

INTRB

PC6

E/S

ACKA

PC7

E/S

OBFA

 

Grupo A

   

Grupo B

(a)

(b)

Figura 16. Bits del puerto C, (a) resumen modo 1 y (b) lectura del puerto C

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
dato del microprocesador INTRA al 82C55 PC3 bus periférico WR PA0-PA7 OBFA PC7 OBFA RD

dato del microprocesador

INTRA al 82C55 PC3 bus periférico WR PA0-PA7 OBFA PC7 OBFA RD ACKA PC6 WR
INTRA
al 82C55
PC3
bus periférico
WR
PA0-PA7
OBFA
PC7
OBFA
RD
ACKA
PC6
WR
INTRA
82C55
STBA
PC4
ACKA
IBFA
PC5
E/S
STBA
PC0-PC2
3
IBFA
bus
periférico
RD
INTR= INTE2.IBF.STB.RD + INTE1.OBF.ACK.WR
dato del
periférico
dato del 82C55
al periférico
dato del 82C55
al microprocesador
al 82C55

Observación: cualquier secuencia donde WR´ ocurra antes que ACK´, y STB´ ocurra antes que RD´ es permitida

INTE1: INTE asociado con OBF´: controlado por la acción de set o reset de PC6 INTE2: INTE asociado con IBF´: controlado por la acción de set o reset de PC4

Figura 17. Señales en el modo 2

La entrada de RESET del 82C55 ocasiona que todos los puertos sean inicializados como puertos de entrada en el modo 0.

Interface del 82C55 y el Conv A/D a los buses. En la figura 18 se ilustra la conexión del 82C55 y el convertidor A/D al sistema de buses del microprocesador 8085.

Se han utilizado los bits A3 y A2 para seleccionar a estos 2 circuitos integrados. Observe que el decodificador queda habilitado con IO/M´= 1. De acuerdo con la conexión efectuada las direcciones de los distintos puertos, el registro de comando del 82C55 y el Conv A/D serán como se muestra en la tabla 3.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
del bus de direcciones A3 A2 A1 A0 RST 6.5 Reset Out IO/M WR RD
del bus de direcciones A3 A2 A1 A0 RST 6.5 Reset Out IO/M WR RD
del bus de direcciones
A3
A2
A1
A0
RST 6.5
Reset Out
IO/M
WR
RD
D7
D6
D5
D4
D3
D2
D1
D0
74LS04
Dec
CS
RD WR
RD WR A1 A0
G
B
A
1/2 74LS139A
82C55
A/D ADC0801
Y3
Y2
Y1
Y0
PA7
PA0
PC7
PC0PB7
PB0
VIN (+)
INTR
74LS04
del sensor
Puerto A
Puerto C
Puerto B
de temperatura
bus de datos
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
CS
Reset
D7
D6
D5
D4
D3
D2
D1
D0

Figura 18. Conexión de los puertos y el convertidor a los buses

Dispositivo

Dirección

Binario

Hexadecimal

Convertidor A/D

00000000

00H

Puerto A

00000100

04H

Puerto B

00000101

05H

Puerto C

00000110

06H

Registro de comando

00000111

07H

Tabla 3. Direcciones de los dispositivos

En la figura 18 se pueden observar los siguientes aspectos:

1. A3A2 = 00 selecciona el convertidor y 01 selecciona el 82C55

2. Con A3A2 = 01, los bits A1A0 seleccionan los distintos elementos del 82C55

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
3. La señal IO/M´ = 1, habilita el decodificador, por lo que tanto el convertidor

3. La señal IO/M´ = 1, habilita el decodificador, por lo que tanto el convertidor como los elementos del 82C55 se pueden acceder con las instrucciones IN o OUT del microprocesador

4. El convertidor solicita interrupción por la línea RST 6.5 del microprocesador.

5. Todos los puertos son inicialmente colocados como entradas en el modo 0 al ser reseteado el 82C55 con la señal Reset Out proveniente del microprocesador.

Dispositivos periféricos. Además del convertidor A/D, el sistema digital debe constar de un display de dos dígitos para colocar el valor de la temperatura leída , una alarma luminosa cuando la temperatura sobrepase un valor preestablecido y un teclado de 4 switches para fijar este valor. Por tanto, la conexión de estos elementos se ilustra en la figura 19. Todos los puertos deben estar configurados en el modo 0. El display está conectado a través de decodificadores BCD/7 segmentos al puerto B el cual debe ser programado como un puerto de salida donde se almacenará el valor de la temperatura leída. La entrada RBI´ de las decenas está conectada a tierra para que el cero no se ilumine. El teclado de 4 switches tiene como misión establecer un valor de temperatura sobre el cual debe activarse la alarma. Este valor debe ser colocado en binario, así si se coloca el 0011, la alarma debe iluminarse si la temperatura es mayor de 30ºC, etc. Un switch cerrado coloca un 0 y abierto un 1. Los switches están conectados a las líneas PA4-PA7 del puerto A el cual debe ser programado como entrada.

El bit PC0 del puerto C es utilizado como señal para hacer iluminar la alarma. Así, cuando este bit sea 1 hace conducir al diodo emisor de luz infraroja del aislador óptico cerrando al TRIAC NTE5641 e iluminándose la lámpara. Por tanto, el puerto C debe ser programado como un puerto de salida.

El opto-aislador tiene como misión aislar eléctricamente las señales débiles de la alta corriente alterna de 60 HZ que circula por la lámpara de 40 vatios cuando ésta se encuentre iluminada y de las líneas de alimentación de 110 voltios.

La resistencia de 33 ohmios en serie con el condensador de 0.01 microfaradios tiene como objetivo minimizar la interferencia de radiofrecuencias cuando se conmuta una alta corriente con el TRIAC NTE5641 como la de la lámpara.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
PA4 PA5 PA6 PA7 PC0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 display +5v.
PA4 PA5 PA6 PA7 PC0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 display +5v.
PA4
PA5
PA6
PA7
PC0
PB7
PB6
PB5
PB4
PB3
PB2
PB1
PB0
display
+5v.
D C B A
D C B A
LT
LT
4.7K
74LS47A
74LS47A
RBO
RBO
RBI
g
RBI
c d e f
c d e
f
g
+5v.
a b
a
b
220
4.7K
ohmios
a b c d e
f
g
a b c d e
f
g
8
4
2
1
C
C
switches
unidades
alarma
NTE3050
NTE3050
+5V
ánodo común
ánodo común
lámpara
220 40 vatios
decenas
MOC3020
ohmios
MT1
+5V
470
74LS04
33
ohmios
TRIAC
ohmios
G
NTE5641
Opto-aislador
MT2
74LS47A : decodificador BCD/7 segmentos
0.01
microfaradios
110v
200 voltios

60 Hz

Figura 19. Display, switches y alarma

Software El programa requerido debe inicializar los puertos del 82C55, ordenar el inicio de la conversión al convertidor analógico/digital y esperar a que éste produzca una solicitud de interrupción por la línea RST 6.5 para leer su dato digital de salida.

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
La lectura del dato se hará en la rutina de servicio. Igualmente se hace una

La lectura del dato se hará en la rutina de servicio. Igualmente se hace una conversión de binario a BCD para llevar en este formato el dato al puerto B y alimentar los decodificadores BCD/7 segmentos. De forma similar se analiza el código colocado en los switches para la toma de la decisión de iluminar la alarma. En la tabla 4 se muestra el programa.

Programa para leer la temperatura de un líquido,actualizar alarma, visualizar la temperatura en un display y leer una temperatura establecida mediante switches

   

CONV

EQU

00H

; Dirección del convertidor

 
   

PTOA

EQU

04H

;Dirección del puerto A

 
   

PTOB

EQU

05H

;Dirección del puerto B

 
   

PTOC

EQU

06H

;Dirección del puerto C

 
   

COMAN

EQU

07H

;Dirección reg de comando 82C55

     

ORG

0000H

 

0000

C3

40 00

 

JMP

INICIO

 
     

ORG

0034H

;Dirección

del

salto

por

interrupción

 

0034

C3

55 00

 

JMP

SERV

 
     

ORG

0040H

;Dirección de comienzo

 

0040

3E

90

INICIO :

MVI

A,90H

;Programa los puertos y se lleva

 

0042

D3

07

 

OUT

COMAN

;al registro de comando del 82C55

0044

3E

00

 

MVI

A,00H

;Para desactivar la alarma y

 

0046

D3

06

 

OUT

PTOC

;se lleva al puerto C PC0=0

 

0048

31

FF 20

OTRA :

LXI

SP,20FFH

;Inicializa puntero de la pila en RAM

004B

3E

0D

 

MVI

A,0DH

;Para habilitar la línea RST 6.5 y

 

004D

30

 

SIM

 

;se lleva al registro de máscaras

 

004E

D3

00

 

OUT

CONV

;Inicie conversión

 

0050

FB

 

EI

 

;Habilita interrupción

 

0051

00

LAZO :

NOP

 

;Se queda esperando hasta que el

0052

C3

51 00

 

JMP

LAZO

;convertidor A/D interrumpa

 

;Lectura

del

dato

del

convertidor

analógico/digital

cuando

interrumpe

al

microprocesador

 

0055

DB

00

SERV:

IN

CONV

;Se lee el dato del convertidor

 

0057

CD

63 00

 

CALL

DMRA

;Tiempo para próxima lectura

 

005A

CD

73 00

 

CALL

BIBCD

;Transforma dato binario en BCD

 

005D

CD

91 00

 

CALL

DSPLY

;Actualiza display y alarma

 

0060

C3

48 00

 

JMP

OTRA

;Realizar siguiente lectura

 

;Subrutina de demora para producir un intervalo de tiempo adecuado entre lecturas

 

0063

F5

DMRA:

PUSH

PSW

;Guarda el dato en la pila

 

0064

3E

FF

 

MVI

A,FFH

 

0066

06

FF

EXT:

MVI

B,FFH

;Lazo exterior

 

0068

05

INT:

DCR

B

;Lazo interior

 

0069

00

 

NOP

   

006A

C2

68 00

 

JNZ

INT

 
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
006D 3D   DCR A   006E C2 66 00   JNZ EXT   0071

006D

3D

 

DCR

A

 

006E

C2 66 00

 

JNZ

EXT

 

0071

F1

 

POP

PSW

;Restituye el dato en el acumulador

0072

C9

 

RET

 

;Retorna

;Subrutina para efectuar la conversión de binario a BCD del dato del convertidor

0073

06 00

BIBCD:

MVI

B,00H

;Limpia registro B

0075

48

 

MOV

C,B

;Limpia registro C

0076

D6 0A

DIEZ:

SUI

0AH

;Resta 10 dec al dato

0078

DA 7F 00

 

JC

SUMA

;Si acarreo se hallaron las decenas

007B

04

 

INR

B

;En B quedan las decenas

007C

C3 76 00

 

JMP

DIEZ

 

007F

C6 0A

SUMA:

ADI

0AH

;La última resta no es válida

0081

D6 01

UNO:

SUI

01H

;Para colocar unidades en el reg C

0083

DA 8A 00

 

JC

ACOM

;Si acarreo se hallaron las unidades

0086

0C

 

INR

C

 

0087

C3 81 00

 

JMP

UNO

 

008A

78

ACOM:

MOV

A,B

;Las decenas al acumulador

008B

07

 

RLC

 

;Se reubica o acomoda en su sitio

008C

07

 

RLC

   

008D

07

 

RLC

   

008E

07

 

RLC

   

008F

B1

 

ORA

C

;Se colocan las unidades en A

0090

C9

 

RET

 

;A quedó con el dato en BCD

;Subrutina para actualizar el display y activar alarma de acuerdo a la posición de los Sw.

0091

D3 05

DSPLY:

OUT

PTOB

;Dato al display

0093

47

 

MOV

B,A

;Se guarda el dato en el reg B

0094

DB 04

 

IN

PTOA

;se lee la posición de los switches

0096

E6 F0

 

ANI

F0H

;Cero a los bits de menor orden

0098

B8

 

CMP

B

;Compara switches con el dato

0099

DA A3 00

 

JC

SET

;Si acarreo activar alarma

009C

3E 00

 

MVI

A,00H

;Para desactivar la alarma

009E

D3 06

 

OUT

PTOC

;Se coloca PC0 en 0

00A0

C3 A7 00

 

JMP

FIN

 

00A3

3E FF

SET:

MVI

A,FFH

 

00A5

D3 06

 

OUT

PTOC

;Se coloca PC0 en 1

00A7

C9

FIN:

RET

   
     

END

   

Tabla 4. Programa

Consideraciones finales El sistema digital descrito puede ser fácilmente utilizado en otras muchas aplicaciones pués constituye un pequeño microcomputador con puertos programables y 10 Kbytes de memoria, 8 Kbytes de EPROM y 2 Kbytes de RAM. El programa ilustrado en la tabla 4

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M
puede ser grabado en la EPROM con el programador universal del laboratorio de la universidad.

puede ser grabado en la EPROM con el programador universal del laboratorio de la universidad. Si el estudiante encuentra alguna dificultad en conseguir en el mercado de Cali el diodo de precisión LM4050, éste puede reemplazarse por un pequeño diodo zener de 3.9 voltios, ½ vatio, (por ejemplo, el NTE5007A) aunque no se obtenga la misma exactitud en la medición. Igualmente el ADC0801 puede ser reemplazado por el ADC0804, el cual tiene las mismas características diferenciándose solamente en la precisión. El diseño anteriormente descrito ya ha sido montado y debidamente comprobado su funcionamiento con resultados completamente satisfactorios, por lo que no contiene el más mínimo error, tanto en el hardware como en el software desarrollado.

Bibliografía 1.- www.intel.com 2.- www.national.com 3.- www.ti.com 4.- Barry B. Brey, “Los Microprocesadores Intel”, 5ª ed, Prentice-Hall, 2001 5.- Intel, “Microsystem Components Handbook” , Volúmenes 1 y 2, 1985

DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
DDE EEP PPA AAR RRT TTA AAM MME EEN NNT TTO OO DDE EE LLA
D
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OOS SS
GGU
G
UUI IIA AAS SS DDE EE LLA
D
L
AAB BBO OOR RRA AAT TTO OOR RRI IIO OO DDE EE SSI IIS SST TTE EEM MMA AA DDI IIG GGI IIT TTA AAL LL BBA
D
S
D
B
AAS SSA AAD DDO OO EEN
E
NN MMI IIC CCR RRO OOP PPR RRO OOC CCE EES SSA AAD DDO OOR RR
M