SISTEMA DIGITAL BASADO EN MICROPROCESADOR

Anuncio
GUIAS ÚNICAS DE LABORATORIO
SISTEMA DIGITAL BASADO EN MICROPROCESADOR
AUTOR: ALBERTO CUERVO
SANTIAGO DE CALI
UNIVERSIDAD SANTIAGO DE CALI
DEPARTAMENTO DE LABORATORIOS
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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
1
40
Vcc (+5v.)
X2
2
39
HOLD
RESET OUT
SOD
SID
3
38
4
37
5
36
TRAP
6
35
RST 7.5
RST 6.5
RST 5.5
7
34
8
33
9
32
INTR
10
31
8085
30
INTA
AD0
11
12
29
AD1
AD2
13
28
14
27
AD3
AD4
15
26
16
25
AD5
AD6
AD7
17
24
18
23
19
22
20
21
HLDA
(CLK) OUT
RESET IN
READY
IO/M
S1
RD
WR
ALE
S0
A15
A14
A13
A12
A11
A10
A9
A8
MICROPROCESADOR
Figura 1. Distribución de terminales
Solicitud por:
TRAP
RST 7.5
RST 6.5
RST 5.5
decimal
36
60
52
44
Bifurca a la dirección:
binario
0000000000100100
0000000000111100
0000000000110100
0000000000101100
hexadecimal
0024
003C
0034
002C
Tabla 1. Direcciones de bifurcación.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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
SOD SOE
5
X
4
3
2
1
0
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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
IE
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)´.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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 216 = 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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
Ciclo de lectura de memoria (Memory Read)
T1
T2
T3
T1
Reloj
A8-A15
AD0-AD7
parte alta de la dirección
parte baja de la
dirección
Dato
válido
dato
ALE
RD
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
X1
A15
A14
A13
A12
A11
A10
A9
A8
10 Kohmios
X2
20
picofaradios
+5V.
A15
A14
A13
A12
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
8085
R
ALE
Reset
RESET IN
+
C
R : 47 Kohmios
C : 10 microfaradios
C
Latch
oc
74LS373
Bus de
Direcciones
Bus de
Datos
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
D7
D6
D5
D4
D3
D2
D1
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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.
A15
.......
A0
0000 0000 0000 0000
8 Kbytes
2 Kbytes
64 Kbytes
EPROM
RAM
0001 1111 1111 1111
0010 0000 0000 0000
0010 0111 1111 1111
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
G´ : entrada de habilitación
BA:entradas, B mayor orden
Y0-Y3: salidas
Memoria RAM
G´: habilitación de salida
S´: entrada de selección
W´:
habilitación
de
escritura
A0-A10: líneas de dirección
DQ1-DQ8: entrada/salida
Memoria EPROM
CE´: entrada de selección
OE´: habilitación de salida
A0-A12: líneas de dirección
DQ0-DQ7: salida de datos
Tabla 2. Funciones de las líneas.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
RST 6.5
WR
RD
IO/M TRAP
ALE RST 5.5
RST 7.5
INTR
HOLD
A15
INTA
A14
HLDA
A13
S1
A12
S0
A11
SID
A10
SOD
A9
A8
AD0
AD1
AD2
AD3
AD4
Ready
AD5
AD6
AD7
CLK OUT
4.7K
Reset Out
on/off
47 Kohmios
Reset In
microprocesador
Reset
X1
10 microfaradios
+5v.
A la alimentación
de los CIs
10 Kohmios
X2
20 picofaradios
74LS373
A15
C OC
DEC
B A
G
1/2 74LS139A
Y3 Y2 Y1 Y0
CE OE A12 .....A0
Vcc EPROM 27C64
Vpp
PGM´ DQ7.....DQ0
+5v.
alimentación
A0
GW A10 ..... A0
S RAM TMS4016
DQ8.... DQ1
D7
Figura 7. Memoria
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
CS
1
20
Vcc
RD
2
19
CLK R
WR
3
18
DB0
17
DB1
16
DB2
15
DB3
A/D
CLK IN
4
INTR
5
VIN(+)
VIN(-)
6
7
14
DB4
A GND
8
13
DB5
VREF/2
9
12
DB6
D GND
10
11
DB7
ADC0801
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.
Inicie conversión
Conversión
terminada INTR
CS
CS
WR
RD
Dato
INTR
3er estado
(a)
3er estado
(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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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/28 = 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
3.984 v
78.125 mV
62.5 mV
46.875 mV
31.25 mV
0 v.
00000011
00000010
00000001
00000000
15.625 mV
00000101
00000100
entrada
analógica
VIN
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
A/D
CLK R
R
CLK IN
CLK
C
Frec =
1
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.
V+
V+
NC
NC
NC
-
1
8
2
7
3
6
4
5
+
NC
NC
R
R
salida
10 mv/ºC
salida
2.98v a 25ºC
10 mv/ºC
10K
ajuste
LM335
circuito básico
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/28 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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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
3
2
WR
LM4050-4.1
10K
150
= 20 ppm/ºC
picofaradios
T
+5v.
VR
10 mV/ºC
1.2K
A GND
VIN(+)
VREF/2
sensor de
temperatura
2.73v
0.01
microfaradios
9.1K / 5%
al bus
de datos
DB0
RD A/D DB1
CS
DB2
DB3
CLK R
DB4
DB5
CLK IN
DB6
DB7
D GND
selección
LM335
Vcc INTR
330
ohmios
1K
VIN(-)
LM4050-4.1
diodo de precisión
de referencia
7.5K
5%
1.28v
1K
R1
R2
3.9K / 5%
3.3K / 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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
RD
WR
A0
A1
RESET
CS
82C55
Vcc: 26
GND : 7
A1 A0
0 0
0 1
1 0
1 1
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10
7
Puerto A
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
6
5
4
3
2
1
0
1
Grupo B
Puerto C : PC3-PC0
1=entrada
0=salida
Puerto B
1=entrada
0 = salida
Puerto B
5
36
9
8
15
6
D0
D1
D2
D3
D4
D5
D6
D7
Modo
0=Modo 0
1=Modo 1
Grupo A
Puerto C
Bus de datos
byte de comando A
34
33
32
31
30
29
28
27
Puerto C : PC7-PC4
1=entrada
0 = salida
Puerto A
1=entrada
0 = salida
Selección
Puerto A
Puerto B
Puerto C
Registro de comando
7
0
byte de comando B
6 5 4 3 2 1
X
X
0
X
Bit Set/Reset
1 = Set
0 = Reset
selección de 1 bit
(a)
Modo
00 = modo 0
01 = modo 1
1X = modo 2
(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,
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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.
puerto A
STBA
dato del dispositivo
BufferA lleno
IBFA
INTRA
PC4
PC5
PC3
PC6,PC7
puerto B
RD
WR
Solicitud de interrupción
STBA
IBFA
RD
INTRA
PA0-PA7
dato
al dispositivo
WR
BufferB lleno
OBFB
PC1
PC2
PC0
82C55
dato leído por
el microprocesador
dato almacenado
en el puerto
2
OBFB
ACKB
INTRB
INTRB
ACKB
PB0-PB7
dato enviado
al puerto
dato leído
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
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
Modo 1
entrada salida
PC0
INTRB
INTRB
PC1
IBFB
OBFB
PC2
STBB
ACKB
PC3
INTRA
INTRA
PC4
STBA
E/S
PC5
IBFA
E/S
PC6
E/S
ACKA
PC7
E/S
OBFA
(a)
D7
D6
Programación como entrada
D5
D4
D3
D2
E/S
E/S
IBFA
INTEA
INTRA
INTEB
Grupo A
D7
D6
OBFA
INTEA
D0
IBFB
INTRB
Grupo B
Programación como salida
D5
D4
D3
D2
E/S
D1
E/S
INTRA
Grupo A
INTEB
D1
D0
OBFB
INTRB
Grupo B
(b)
Figura 16. Bits del puerto C, (a) resumen modo 1 y (b) lectura del puerto C
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
dato del microprocesador
al 82C55
INTRA
PC3
bus periférico
PA0-PA7
PC7
OBFA
PC6
ACKA
RD
WR
WR
OBFA
INTRA
82C55
PC4
STBA
PC5
IBFA
PC0-PC2
E/S
ACKA
STBA
3
IBFA
bus
periférico
RD
INTR= INTE2.IBF.STB.RD + INTE1.OBF.ACK.WR
dato del
periférico
al 82C55
dato del 82C55
al periférico
dato del 82C55
al microprocesador
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
A3
A2
A1
A0
del bus de direcciones
RST 6.5
Reset Out
bus de datos
IO/M
WR
RD
D7
D6
D5
D4
D3
D2
D1
D0
CS
B A
CS
Reset
D7
D6
D5
D4
D3
D2
D1
D0
Dec
G
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
74LS04
A/D ADC0801
82C55
1/2 74LS139A
Y3 Y2 Y1 Y0
VIN (+)
RD WR
INTR
A1 A0
RD WR
PA7.....PA0 PC7.....PC0PB7.....PB0
74LS04
del sensor
de temperatura
Puerto A
Puerto C
Puerto B
Figura 18. Conexión de los puertos y el convertidor a los buses
Dispositivo
Convertidor A/D
Puerto A
Puerto B
Puerto C
Registro de comando
Dirección
Binario
Hexadecimal
00000000
00H
00000100
04H
00000101
05H
00000110
06H
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
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
PA4
PA5
PA6
PA7
PC0
PB7
PB6
PB5
PB4
PB3
PB2
PB1
PB0
display
+5v.
DC B A
LT
RBO 74LS47A
RBI c d e f g
LT D C B A
RBO 74LS47A
RBI c d e f g
220 a b
ohmios
a b
a b c d e f g
C
C
+5V
+5v.
4.7K
a b c d e f g
NTE3050
ánodo común
decenas
4.7K
8
2
1
switches
unidades
NTE3050
ánodo común
MOC3020
+5V
74LS04
4
470
ohmios
alarma
lámpara
220 40 vatios
ohmios
MT1
33
ohmios
TRIAC
G
Opto-aislador
74LS47A : decodificador BCD/7 segmentos
NTE5641
MT2
0.01
microfaradios
200 voltios
110v
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.
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
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
DDEEPPAARRTTAAM
MEENNTTOO DDEE LLAABBOORRAATTOORRIIOOSS
GGUUIIAASS DDEE LLAABBOORRAATTOORRIIOO DDEE SSIISSTTEEM
A
D
I
G
I
T
A
L
B
A
S
A
D
MA DIGITAL BASADOO EENN M
MIICCRROOPPRROOCCEESSAADDOORR
Descargar