Está en la página 1de 349

ESCUELA POLITÉCNICA NACIONAL

ESCUELA DE INGENIERÍA

DISEÑO Y CONSTRUCCIÓN DE UN PROTOTIPO PARA


MEDICIÓN DE TEMPERATURA UTILIZANDO
TERMOCUPLAS

PROYECTO PREVIO A LA OBTENCIÓN DEL TITULO DE


INGENIERO EN
ELECTRÓNICA Y TELECOMUNICACIONES

ALFONSO BASTIDAS GALARZA

DIRECTOR: ING. FERNANDO FLORES


CO-DIRECTOR: ING. PABLO HIDALGO

Quito, Febrero 2002


DECLARACIÓN

Yo, Alfonso Bastidas Galarza, declaro que el presente trabajo es de mi


autoría; que no ha sido previamente presentado para ningún grado o
calificación profesional; y, que he consultado las referencias
bibliográficas que se incluyen en este documento.

La Escuela Politécnica Nacional, puede hacer uso de los derechos


correspondientes a este trabajo, según lo establecido por la Ley,
Reglamento de Propiedad Intelectual y por la Normativa Institucional
vigente.

tidas Galarza
:-*£•

CERTIFICACIÓN

Certificarnos que el presente trabajo fue desarrollado por Alfonso Bastidas


Galarza, bajo nuestra supervisión.

Ipftj. FernáryJo Flores C. *ablo Hidalgo ; L.


^
DIRECTOR DEL PROYECTO CO-DIRECTOR DEL PROYECTO

V
DEDICATORIA

Este trabajo va dedicado a las personas que aunque ausentes marcaron


'* y dieron a mi vida el sentido y ejemplo que han prevalecido y que me han
llevado a ser un mejor ser humano.

A mi padre, a mi madre y a mi hermano Boris quienes desde el cielo me


siguen guiando.

A mi adorado hijo Boris Andrés, quien a pesar de su corta edad, me ha


enseñado lecciones de amor y vida que me han conducido a llevar a feliz
término este trabajo, que no es más que la manifestación evidente de mi
amor hacia ellos.
AGRADECIMIENTOS

A Dios, por haberme dado la vida.

A la Escuela Politécnica Nacional, porque los conocimientos recibidos en


sus aulas me permiten desempeñar mi vida profesional
satisfactoriamente.

A los Ingenieros Fernando Flores y Pablo Hidalgo, por su paciencia y por


sus acertados y oportunos consejos para la consecución del presente
proyecto.

A mis hermanos, porque juntos iniciamos el aprendizaje de la vida.

A Alvaro Cevallos y Paulina Egas por su invaluable amistad y por su


incondicional apoyo.

Al Ing. Ramiro Valenzuela y la Sra. Anita Viteri por su desinteresada


ayuda.

Y a todos aquellos que de alguna manera contribuyeron a la culminación


de este trabajo.
CONTENIDO

Pag.

índice i
índice de figuras v
índice de tablas vii
Resumen vüi

f
CAPITULO I
Generalidades

1.1 introducción 1
1.2 Objetivos 2
1.3 Descripción General del Equipo 3

CAPITULO II
Consideraciones Teóricas

2.1 Medición de Temperatura 5


r 2.2 Transductores 6
2.2.1 Resistencias Detectoras de Temperatura (RTD) 7
2.2.2 Termistores 12
2.3 Termocuplas 17
2.3.1 Medición del Voltaje de la Termocupla 22
2.4 Aplicación Utilizando el Microprocesador 33

CAPITULO III
Diseño del Hardware

3.1 Diagrama de Bloques 35


3.2 Fuente de Poder 38
3.3 El Microprocesador Z80 40
3.3.1 Registros 40
3.3.2 Interrupciones 43
3.3.3 Setde Instrucciones 44
3.3.4 Descripción de Pines 45
3.4 Circuitos de Reloj e Inicialización 47
3.4.1 Circuito de Reloj (CLK) 47
3.4.2 Circuito de Inicialización (RESET) 50
11

3.5 Conexión del [iP con memoria 54


3.6 Decodificación de Teclado y Display .............................................. 58
3.6.1 El C.l. INTEL 8279 59
3.6.1.1 Descripción Funcional 59
3.6.1.2 Distribución de pines 60
3.6.1.3 Principios de Operación 62
3.6.2 Circuito Implementado 64
3.7 Amplificación del Voltaje de las Termocuplas 72
3.7.1 C.l. AD594/AD595 72
3.7.1.1 Principios de recalibración 75
3.7.1.2 Voltajes de Salida 76
3.7.2 Circuitos de Amplificación Implementados ............................... 78
3.8 Multiplexado de los Voltajes de las Termocuplas ........................... 85
3.9 Conversión Análogo-Digital 94
3.9.1 Controlador Paralelo de Entrada-Salida (PIÓ) 94
3.9.1.1 Modos de Operación 95
3.9.1.2 Descripción de Pines 96
3.9.2 Conversón Digital-Análogo DAC1000 ........................................ 99
3.9.3 Circuito Muestreador-Retenedor LF398 104
3.9.4 Comparador de Voltaje LM311 106
3.9.5 Amplificador Operacional LF356 107
3.9.6 Referencia de Voltaje LH0070 108
3.9.7 Circuito Implementado 109

CAPITULO IV
Diseño del Software

4.1 Programación del C.l. INTEL 8279 ................................................. 117


4.1.1 Comandos 117
4.1.1.1 Selección de los Modos de Teclado y Display 117
4.1.1.2 Programación del Reloj 118
4.1.1.3 Lectura de la RAM FIFO/Sensores 119
4.1.1.4 Lectura de la RAM del Display ............................................ 119
4.1.1.5 Escritura a la RAM del Display 120
4.1.1.6 Inhibición / Blanqueo de Escritura al Display ...................... 120
4.1.1.7 Limpiar (CLEAR) 121
4.1.1.8 Terminar Interrupción / Establecer Modo de Error 121
4.1.2 Palabra de Estado 122
4.1.3 Lectura de Datos 122
4.1.4 Escritura de Datos 122
4.1.5 Descripción de los Modos de Operación 122
4.1.5.1 Modo de Barrido de Teclado, 2 Teclas (2-Key Lockout) ..... 123
4.1.5.2 Modo de Barrido de Teclado, N Teclas (N-Key Rollover) ... 123
4.1.5.3 Barrido de Teclado - Modos Especiales de Error ............... 123
4.1.5.4 Modo Matriz de Sensores 124
111

4.1.5.5 Formato de Datos 124


4.1.5.6 Display- Ingreso por la Izquierda 125
4.1.5.7 Display- Ingreso por la Derecha 126
4.1.5.8 Display-Auto Incremento 127
4.1.6 Formatos de Display de 8/16 Caracteres 129
4.1.7 Estado de la FIFO 129
4.2 Programación del PIÓ 130
4.2.1 Modos: 0 , 1 0 2 130
4.2.2 Modo 3 131
4.2.3 Deshabilitación de Interrupciones 133
4.3 Programa de Inicialización 133
4.3.1 Subrutinas Usadas en el Programa de Inicialización ................ 142
4.3.1.1 Subrutina CLEAR 142
4.3.1.2 Subrutina DISPY 143
4.3.1.3 Subrutina DELAY 144
4.3.1.4 Subrutina CLDB 144
4.4 Programa para Decodificación de Teclado (KEYB) 145
4.4.1 Subrutinas Invocadas desde la Subrutina KEYB 160
4.4.1.1 Subrutina STAG 160
4.4.1.2 Subrutina COSG 160
4.4.1.3 Subrutina NTYTY 162
4.4.14 Subrutina SNSEG 163
4.5 Subrutinas para Funciones de Tecla Pulsada 164
4.5.1 Subrutinas para el Modo de Calculadora 164
4.5.1.1 Subrutina ENTRY 164
4.5.1.2 Subrutinas SUMA, RESTA, MULT y DIV 165
4.5.1.3 Subrutina SIGN 167
4.5.1.4 Subrutina POINT 169
4.5.1.5 Subrutina WAIT 171
4.5.1.6 Subrutina ENTER 172
4.5.1.7 Subrutina ÍDEM 177
4.5.1.8 Subrutina IDEMO 178
4.5.1.9 Subrutina C7SEG 179
4.5.2 Subrutinas para Modo Medición de Temperatura ..................... 181
4.5.2.1 Subrutina ATDC 182
4.5.2.1.1 Subrutina DISTP 193
4.5.2.1.2 Subrutina ROUBCD 194
4.5.2.2 Subrutina CALFS 195
4.5.2.3 Subrutina NUMTER 196
4.5.2.4 Subrutina CONFIG 197
4.5.2.4.1 Subrutina SSCALE 198
4.5.2.5 Subrutina SECÓNOS 199
4.5.2.6 Subrutina SCALE 199
4.5.2.7 Subrutina MOSTRAR 199
4.5.2.8 Subrutina NTCIN 200
4.5.2.9 Subrutina BADTY 200
IV

4.5.2.10 SubruíinaTYPEIN 201


4.5.2.11 Subrutina MOSTRARG 201
4.5.2.12 Subrutína CALO 202
4.6 Conversión Análogo-Digital Utilizando un Conversor
Digital-Análogo y el Microprocesador 203
4.6.1 Subrutina ADCONV ...,. 203
4.7 Linealización 208
4.7.1 Subrutina EVPOL 212
4.8 Aritmética de Punto Flotante 214
4.8.1 Ejemplo de Número Normalizado en Punto Flotante 216
4.8.2 Subrutinas para Operaciones en Punto Flotante 218
4.8.2.1 Subrutinas AFP y SFP 219
4.8.2.2 Subrutina MFP 221
4.8.2.3 Subrutina DFP 221
4.8.2.4 Subrutina BBCD 222
4.8.2.5 Subrutina BCDBIN 224

CAPITULO V
Experimentación, Conclusiones y Recomendaciones

5.1 Experimentación 226


5.2 Conclusiones 234
5.3 Recomendaciones 235

Referencias Bibliográficas 237

Anexos

Anexo A: Listado de los Programas para el Funcionamiento


del Equipo A1

Anexo B: Manual de Operación del Equipo B1

Anexo C; Características Técnicas de los Elementos Utilizados ..... C1


ÍNDICE DE FIGURAS

Fig. Pag.

2.1 Operación de la RTD 7


2.2 Efecto de la ¡mpedancia de los hilos de medición 9
2.3 Puente de resistencias 10
2.4 RTD separada del puente 10
2.5 Puente con 3 hilos 11
2.6 Fuente de corriente 11
2.7 Operación del Termistor 13
2.8 Termistor en un puente 15
2.9 Efecto Seebeck 17
2.10 Efecto Peltier 18
2.11 Temperatura vs. Voltaje Termocuplas K, J, E y T 19
2.12 Temperatura vs. Voltaje Termocuplas R, S y B 20
2.13 Junturas para medición 22
2.14 Midiendo el voltaje 23
2.15 Juntura de referencia 24
2.16 Termocupla tipo J 25
2.17 Voltajes 26
2.18 Junturas separadas 26
2.19 Eliminando el recipiente con hielo 27
2.20 Uniendo los bloques isotérmicos 27
2.21 Ley de ios metales intermedios 28
2.22 Aplicando la ley al ejemplo 28
2.23 Circuito final 29
2.24 Midiendo la temperatura del bloque de referencia 29
2.25 Circuito de compensación 30
3.1 Diagrama de Bloques 36
3.2 Fuente de Poder 39
3.3 Registros del jaP Z~80 41
3.4 Distribución de pines 45
3.5 El C.l. SN74124 48
3.6 Circuito de reloj 49
3.7 Inicialización 52
3.8 Conexión Memoria 55
3.9 El C.l. INTEL 8279 61
3.10 Modos de las líneas de barridos 63
3.11 Conexión Teclado y Display 65
3.12 Conexión de un Display 69
3.13 Diagrama de Bloques del C.l. AD594/AD595 73
3.14 Amplificación Termocuplas Ky J 79
3.15 Amplificación Termocuplas E y T 80
3.16 El C.l. AD7501 85
3.17 Multiplexado Entradas 88
3.18 Conexión de la señal +ALM 89
3.19 Conexión de la señal +ALM añadida R; 90
3.20 El C.l. SN74151A 91
3.21 Controlador Paralelo de Entrada/Salida (PIÓ) 96
3.22 Conversor Digital-Análogo DAC1000 100
3.23 Justificación Izquierda y Derecha 101
3.24 Escalare (ladder) R-2R 103
3.25 Obteniendo un Voltaje de Salida 103
3.26 Muestreador-Retenedor(Sample and Hold) LF398 105
3.27 Comparador de Voltaje LM311 106
3.28 Amplificador Operacional LF356 107
3.29 Referencia de Voltaje LH0070 108
3.30 Conversión Análogo-Digital 110
5.1 Fuente de Poder y Tarjeta Principal ............................................ 226
5.2 Termocuplas tipos K, J, E y T 228
5.3 Circuitos de Amplificación de las Termocuplas ........................... 229
5.4 Teclado y Display 230
5.5 Vista posterior tarjeta principal 231
5.6 Equipo ensamblado completamente ...........................;............... 232
5.7 Proceso de desarrollo y depuración de los programas ............... 233
Vil

ÍNDICE DE TABLAS

Tabla Pag.

2.1 Comparación de las escalas de temperatura 6


2.2 Coeficientes alfa (a) para materiales de RTD 8
2.3 Estándares Industriales de RTD 9
2.4 Símbolo ANSÍ y Aleaciones de las Termocuplas 21
2.5 Coeficientes de los polinomios 31.
209
2.6 Sensibilidad del voltímetro 32
3.1 Características de los registros 42
3.2 Funcionamiento del Flip-Flop J-K 50
3.3 Direccionamiento de Memoria 56
3.4 Compuerta AND 74LS08 57
3.5 Funcionamiento del Decodificador 74LS138 57
3.6 Compuerta OR 74LS32 67
3.7 Direccionamiento de Dispositivos de E/S 67
111
3.8 MultiplexorAD7501 86
3.9 MultiplexorSN74151A 92
3.10 Retenedor (Latch) de 8 líneas SN74LS373 93
Vlll

RESUMEN

El presente proyecto de titulación está orientado al diseño y construcción de


una unidad experimental para medición de temperatura. El equipo a
construirse será utilizado para el desarrollo de prácticas demostrativas o
investigación en el campo de la medición digital.

El capítulo I enfoca el objetivo de este proyecto como una unidad experimental


de medición, y hace una descripción general de cómo estará constituido el
equipo.

En el capítulo II se hace un análisis de los tipos de transductores de


temperatura y se profundiza en las características de las termocuplas, que son
los sensores de temperatura que se utilizarán en el equipo. Analiza también la
forma como el mícroprocesador Z-80 intervendrá para realizar la medición de
temperatura, utilizando varios tipos de termocuplas.

El capítulo III abarca todo lo relacionado con el diseño circuital del equipo,
desde su diagrama de bloques, hasta una descripción pormenorizada de cada
uno de los bloques, como son: fuente de poder, circuitos de reloj e
inicialización, decodificación de teclado y display, amplificación de las señales
generadas por las termocuplas, multiplexado de las mismas, pues se usarán 4
tipos diferentes de termocuplas; y, transformación de las señales análogas a
digitales (conversión A/D), para que sean procesadas por el microprocesador.

En el capítulo IV se describe la programación del microprocesador Z-80 para


conseguir que el equipo funcione como un dispositivo de medición de
temperatura de propósito general, es decir: manejo de teclado y display como
elementos de entrada-salida, conversión análogo-digital utilizando un
conversor digital-análogo y el microprocesador, aplicando el método de
aproximaciones sucesivas. Como las curvas de comportamiento de las
termocuplas no tienen una relación lineal, se hace necesario, utilizando
regresión matemática, obtener un polinomio que se aproxime lo máximo
posible a las curvas de las termocuplas; por esta razón, después de obtenidos
los coeficientes de los polinomios de las curvas de cada termocupla, se los
utiliza en el equipo, para que después de efectuada una medición, la evalúe en
el polinomio correspondiente. Para que sea posible realizar esta evaluación,
es necesario implementar en el equipo, aritmética de punto flotante, con por lo
menos las cuatro operaciones básicas y conversión a números BCD, para que
los resultados de la medición puedan ser mostrados en el dsiplay. Como una
manera de verificar las subrutinas de punto flotante, se implementará en forma
opcional, que el equipo funcione como una calculadora con las cuatro
operaciones básicas. Todo lo relacionado con aritmética de punto flotante, y la
linealización de las curvas de las termocuplas se describen en este capítulo.

•t
x

En-.el>xcá'pítulo V se presenta un-resumen de los pasos seguidos en la


construcción del equipo; se hace una evaluación de jo resultados
experimentales obtenidos después de terminado el diseño y construcción del
mismo, y se finaliza con las conclusiones y recomendaciones pertinentes.

Finalmente en la parte de anexos se presenta un manual de la operación del


equipo, el listado de todos los programas del microprocesador Z-80, y las
características técnicas de los elementos usados en el diseño y construcción
de este prototipo.

te»
CAPITULO I

GENERALIDADES

1.1 INTRODUCCIÓN

Siendo la temperatura una magnitud que interviene en procesos industriales


complejos tales como destilación, control de hornos y calderos, generación
eléctrica a base de vapor de agua, refrigeración, etc., así como también en
trabajos experimentales y de investigación, es necesario que se la mida de la
forma más exacta posible.

Es por ello que el presente Proyecto de Titulación está orientado al diseño y


construcción de una unidad experimental de medición de temperatura, utilizando
como sensores 4 tipos diferentes de termocuplas, que podrá ser utilizada en
trabajos de investigación donde intervenga dicho parámetro, y de igual forma en
prácticas demostrativas, especialmente en el campo de medición digital, ya que
la unidad a construirse está basada en un microprocesador.

En el capítulo I se plantean los objetivos a los cuales se desea llegar con el


diseño y construcción de esta unidad experimental para medición de temperatura,
utilizando para la operación del mismo, el microprocesador Z-80, que será el
encargado de controlar la mayor parte de las funciones que debe ser capaz de
realizar el equipo. En este capítulo también se presenta una descripción general
de las partes que constituyen el equipo.

En el capítulo II se hace un análisis teórico de los fenómenos gracias a los cuales


se puede sensar la temperatura y luego medirla; tipos de sensores existentes y
sus características, rangos de utilización, formas de construcción y posibles
aplicaciones; escalas utilizadas para la medición de temperatura; y se profundiza
en las características de las termocuplas que son los sensores de temperatura
que se utilizan en el presente trabajo. Se analiza también la forma como el
microprocesador interviene en la medición, de acuerdo a las señales obtenidas
de las termocuplas.

El capítulo III abarca todo lo relacionado con el diseño circuital del equipo,
describiendo pormenorizadamente cada uno de los bloques, como son: fuente
de poder, circuitos de reloj e inicialización, decodificación de teclado y display,
amplificación de las señales generadas por los sensores, multiplexado de las
señales amplificadas de las 4 termocuplas, y transformación de estas señales
análogas a digitales para que puedan ser manipuladas por el microprocesador.
2

El capítulo IV se encarga de explicar la programación del microprocesador Z-80


para que el equipo funcione como un dispositivo de medición de temperatura;
entre las tareas que debe realizar el microprocesador están: manejo de teclado
y display, conversión análogo-digital, linealización de las señales generadas por
las termocuplas, para lo cual es necesario implementar subrutinas de aritmética
de punto flotante, con por lo menos las 4 operaciones básicas y conversión a
números BCD, para que los resultados de la medición puedan ser mostrados en
el display; control de multiplexores, etc.

En el capítulo V se presenta un resumen de las etapas de diseño y construcción


del equipo, se evalúan los resultados experimentales obtenidos y se finaliza con
las conclusiones y recomendaciones pertinentes, después de haber conseguido
que el equipo funcione de acuerdo a los objetivos planteados.

En la parte de anexos se presenta un manual de operación detallada del equipo


con el propósito de facilitar su utilización, el listado de todos los programas del
microprocesador para el funcionamiento del equipo, y las características técnicas
de todos los elementos utilizados.

1.2 OBJETIVOS

Entre los objetivos más importantes del diseño y construcción de este prototipo
de medición de temperatura, están los siguientes:

• Familiarización con los fenómenos termoeléctricos gracias a los cuales se han


podido fabricar sensores de temperatura a través de ios cuales se la puede
medir.

• Conocimiento de las características de los sensores existentes en la industria,


y disponibles en el mercado, y de los que se han escogido las termocuplas,
para luego poder manipular las señales generadas por las mismas de la mejor
forma posible.

• Diseño de la circuitería apropiada, basada en un microprocesador, para


conseguir un dispositivo digital de medición de temperatura, que pueda ser
utilizado independientemente de cualquier otro tipo de equipo.

• Desarrollar todos los programas del microprocesador Z-80, necesarios para


el funcionamiento de todos los bloques constitutivos del equipo y que serán
controlados por el microprocesador. Debido a que la relación temperatura-
voltaje de las termocuplas no es lineal, será necesario desarrollar un pro-
cedimiento de linealización para conseguir que la medición sea lo más exacta
3

posible. Se utilizará para ello un proceso de regresión matemática con el cual


se obtendrán los coeficientes de un polinomio que representará aproximada-
mente la forma de la curva de la relación temperatura-voltaje de cada
termocupla. Obtenido el polinomio, cada medición de voltaje deberá ser
evaluada en el mismo para obtener la temperatura. Para posibilitar la
evaluación del polinomio, el microprocesador deberá tener la capacidad de
realizar operaciones aritméticas básicas. Por esta razón se implementarán
subrutinas de aritmética en punto flotante y conversión a números BCD, para
que los resultados de una medición puedan ser mostrados en el display.
Estas subrutinas de punto flotante podrían tener otro tipo de aplicaciones.

Obtener los resultados experimentales a través de los cuales se puedan


verificar las bondades y limitaciones del equipo, de donde se desprenderán
recomendaciones que podrían servir en futuros trabajos que se realicen en
el campo de la medición de temperatura.

Finalmente conseguir que el equipo funcione como un medidor de


temperatura de propósito general cuyo rango de operación estará limitado por
el tipo de termocupla utilizada, y con la posibilidad de medir secuencialmente
4 temperaturas diferentes.

1.3 DESCRIPCIÓN GENERAL DEL EQUIPO

El elemento más importante del equipo es el microprocesador Zilog Z-80 que se


encargará de controlar la mayoría de funciones para la operación del mismo. El
microprocesador para su funcionamiento requiere de elementos periféricos
adicionales como son: memoria EPROM (Erasable Programmable Read Only
Memory) de donde el microprocesador leerá las instrucciones de las diferentes
subrutinas, memoria RAM (Random Access Memory) que se utilizará para
almacenar resultados intermedios e información temporal; circuitos de
decodificación de memoria, de inicialización (Power On Reset) y de reloj.

Como dispositivo de entrada se utiliza un teclado de 19 teclas que accionan igual


número de interruptores, y como dispositivo de salida, un conjunto de 6
indicadores luminosos de 7 segmentos y punto decimal (display's) en los cuales
se mostrará la temperatura medida, y dos diodos emisores de luz o LED's que
indicarán la escala de temperatura. Los dispositivos de entrada-salida estarán
controlados por el circuito integrado INTEL 8279 que es un interfaz programable
de teclado y display, el que a su vez será programado y comandado por el
microprocesador.
4

Las señales de voltaje generadas por las termocuplas, que están en el orden de
ías decenas de milivoltios, serán amplificadas por los circuitos integrados
ANALOG DEVICES AD-594 y AD-595, fabricados para amplificar voltajes de
termocuplas con compensación de juntura fría. Las señales amplificadas de las
termocuplas ingresarán al equipo por intermedio de un multiplexor análogo, cuya
salida estará conectada al conversor análogo-digital.

El conversor análogo-digital se lo implementará utilizando un conversor digital-


análogo de 10 bits con su respectivo amplificador operacional, un circuito
muestreador-retenedor (Sample and Hold) y un comparador. Los 10 bits de
entrada digitales del conversor estarán conectados a un PIÓ que es un
controlador paralelo de entrada-salida de la familia del microprocesador Zilog Z-
80, a través del cual el microprocesador realizará la conversión análogo-digital
utilizando el método de aproximaciones sucesivas.

Obtenido el valor digital de una medición, el microprocesador realizará la


corrección respectiva de la medida o Idealización, por intermedio de las
subrutinas de punto flotante que se desarrollarán para el efecto; y, finalmente
mostrará el resultado en el display.

Como está previsto que el equipo pueda medir temperaturas de 4 tipos diferentes
de termocuplas en una forma secuencial, el teclado servirá para programar el
equipo, es decir para escoger opciones como: número de termocuplas
conectadas, tipo de cada una de ellas, cantidad de tiempo que se debe mostrar
la medición de cada termocupla, escala de temperatura y, si en algún momento
se requiere observar la medición de una o dos de las termocuplas conectadas,
la posibilidad de escogerlas. Aprovechando la disponibilidad del teclado, se
implementará en forma opcional, que el equipo funcione como una calculadora
con las cuatro operaciones básicas y con números de 6 cifras máximo, dado que
se disponen de 6 displays; está opción permitirá verificar la operación correcta
de las subrutinas de punto flotante y de conversión de números binarios en punto
flotante a números BCD (binario codificado en decimal) y viceversa.

El equipo necesitará para su funcionamiento de fuentes de voltaje de + 5 VDC y


±15 VDC) para energizar los diferentes elementos y circuitos integrados que se
emplean en cada uno de los bloques. Por esta razón se diseñará la fuente de
poder con los voltajes indicados, que será parte constitutiva del equipo.
CAPITULO

CONSIDERACIONES TEÓRICAS

2.1 MEDICIÓN DE TEMPERATURA

El sensar la temperatura se logra normalmente con la ayuda de dispositivos


termoeléctricos tales como la termocupla, resistencia detectora de temperatura
RTD (por sus símbolos en inglés) o el termistor. Un dispositivo termoeléctrico es
aquel que convierte el calor (temperatura) en un correspondiente flujo de
corriente eléctrica o nivel de voltaje.

Existen tres efectos termoeléctricos que intervienen decisivamente en la


generación de electricidad por medio de la temperatura;

El primero llamado efecto Seebeck, denominado así en honor al físico alemán


Thomas Seebeck, quien fundió dos alambres de metales diferentes en ambos
extremos, calentó una de las junturas y descubrió que una corriente eléctrica fluía
desde uno de los alambres hacia el otro. Él logró que los electrones fluyan
desde un alambre de cobre a uno de acero. Este efecto se desarrolló en lo que
ahora conocemos como termocupla.

El segundo llamado efecto Peltier, por el físico francés Jean Peltier, quien aplicó
una corriente eléctrica a dos alambres de metales diferentes, unidos en uno de
sus extremos. Si los electrones se movían desde el alambre de cobre hacia el
de acero la juntura se calentaba, y si los electrones se movían desde el alambre
de acero hacia el de cobre la juntura se enfriaba. La razón de este efecto es que
los electrones al moverse desde un estado de energía más alto (el acero) a uno
más bajo (el cobre), crean un exceso de energía que calienta la juntura, y en el
caso inverso, al moverse desde un estado de energía más bajo (cobre) hacia uno
más alto (acero) requieren más energía, que la obtienen enfriando la juntura.

El tercer efecto termoeléctrico llamado efecto Faraday, en honor a Michael


Faraday, quien a través de la experimentación encontró que la resistencia
eléctrica de ciertos materiales disminuye al aumentar la temperatura, diciéndose
de estos materiales que tienen un .coeficiente de temperatura negativo.
Materiales con esta característica son llamados termistores.

Metales tales como el platino y el níquel tienen un coeficiente de temperatura


positivo. Estos metales son conocidos como resistencias detectoras de
temperatura (RTD).
6

Los materiales termoeléctricos se escogen por la habilidad que tengan de ofrecer


una relación uniforme de voltaje - temperatura.

La temperatura se mide en algunas escalas en grados. Las dos más usadas son:
Fahrenheit (°F) y Celsius (°C) conocida también como Centígrados. La unidad
básica de temperatura en el sistema internacional (SI) es el grado Kelvin (°K)
usada en trabajos científicos. Cada una de estas escalas tiene características
especiales que se resumen en la Tabla 2.1.

Tabla 2.1 Comparación de fas escalas de temperatura.

KELVIN CELSIUS FAHRENHEIT


FENÓMENO
(°K) (°C) (°F)
Ebullición del agua 373.15 100 212
Temperatura del cuerpo
310.15 37 98.6
humano
Temperatura ambiente 295.15 22 72
Congelación del agua 273.15 0 32
Cero absoluto 0 -273.15 -459.67

Las fórmulas para convertir de Fahrenheit a Celsius y viceversa son las


siguientes;

= 9/5°C+32

Donde: °C Temperatura en grados Celsius; y,


°F Temperatura en grados Fahrenheit

2.2 TRANSDUCTORES

Como se señaló anteriormente, los dispositivos termoeléctricos más comunes


disponibles para medición de temperatura son: termocuplas, resistencias
detectoras de temperatura o RTD y termistores. Ya que las termocuplas son los
transductores de temperatura más comúnmente usados, y los que se han
7

escogido para la realización del presente trabajo, se los analizará en el siguiente


numeral. A continuación se cubren los otros dos tipos de sensores.

2.2.1 RESISTENCIAS DETECTORAS DE TEMPERATURA (RTD)

La Figura 2.1 explica el funcionamiento de una RTD mediante un circuito simple


que consta de una fuente +V, la RTD, y un amperímetro.

RTD rr RTD

AMPBRI METRO M/IPERIMETRO

a. Con calor. b. Sin calor


(Resistencia aumenta) (Resistencia disminuye)

Figura 2.1 Operación de la RTD.

Cuando se aplica calor a la RTD, la resistencia de ésta se incrementa y la


corriente a través del amperímetro disminuye (Figura 2.1.a). Luego, cuando se
quita el calor, la resistencia de la RTD disminuye y la corriente en el amperímetro
aumenta (Figura 2.1.b). El amperímetro puede estar calibrado para que los
cambios de corriente representen cambios de temperatura.

Las RTD portante, tienen un coeficiente positivo de temperatura, lo que significa


que al aumentar la temperatura aumenta su resistencia, y al disminuir la
temperatura, la resistencia disminuye también. La mayoría de conductores de
electricidad como el cobre poseen coeficiente positivo de temperatura, conocido
como alfa (a), que es la característica térmica que se usa industrialmente para
fabricar las RTD.
En la Tabla 2.2 se pueden observar valores típicos de los coeficientes de
temperatura alfa (a) de algunos materiales para RTD.

Tabla 2.2 Coeficientes alfa (a) para materiales de RTD.

COEFICIENTES ALFA
MATERIAL RTD
(a)
0.0038 Cobre
0.0039 Platino
0.0045 Tungsteno
0.0067 Níquel

Las RTD operan en rangos de temperatura desde -400°F a 1700°F. Las RTD
son más eficientes que otros sensores de temperatura ya que su respuesta es
más lineal. El mejor material para RTD es el platino, que es muy usado en
mediciones de temperatura en laboratorio, entre -270 °C y 660 °C. Las
precauciones que se toman con otros tipos de sensores son innecesarias con la
RTD de platino. Frecuentemente se utilizan alambres de cobre para conectar el
sensor con el instrumento de medida. Como la calibración es absoluta, no es
necesario una juntura fría de compensación. La respuesta lineal elimina redes
correctivas y errores de interpretación.

En la Tabla 2.3 se listan algunos valores de resistencia estándares, desarrollados


por la industria para las RTD, a temperaturas específicas.

El corazón de una RTD típico, es el elemento sensor, hecho de alambre de


platino envuelto en un núcleo de cerámica. El elemento sensible es
cuidadosamente aliviado de esfuerzos e inmovilizado para evitar estiramientos
o daños

El elemento sensor estándar está montado dentro de una vaina de acero


inoxidable de manera que brinde buena transferencia térmica y protección contra
la humedad y por medio del cual se mide la temperatura.

Como consecuencia de su gran salida eléctrica, la RTD proporciona una entrada


segura a indicadores, registradores, controladores, medidores, lectores de datos
y computadores.
Tabla 2.3 Estándares Industriales de RTD.

TEMPERATURA RESISTENCIA
(°F) (Q)
0 93.01
32 100.00
100 114.68
200 135.97
300 156.90
400 177.47
500 197.70
600 217.56
700 237.06
800 256.21
900 274.99

Debido a los pequeños valores de resistencia que presentan las RTD (ver Tabla
2.3), se debe tomar muy en cuenta el hecho de que los hilos de medición que
llegan al sensor, podrían presentar una impedancia de algunos ohmios o
decenas de ohmios; por lo tanto una pequeña impedancia de los hilos puede
contribuir con un error significativo en la medición de temperatura.

R = 5 Ohms

RTD
100 Ohms

R = 5 Ohms

Figura 2.2 Efecto de la impedancia de los hilos de medición.

Considerando una impedancia de los hilos de medición de 10 Q (Figura 2.2),


conectados a una RTD típica que presenta un valor de 100 Q a O °C, y un a =
10

0.0039; lo que significaría un aumento de +0.39 Q/°C, se obtendría con los 10


de impedancia de los hilos de medición, un error de:

6ñor =
ion 26 °C
0.39
El método clásico de evitar este problema ha sido el uso de puentes (Figura 2.3).

R3

RTD

Figura 2.3 Puente de resistencias.

El voltaje de salida del puente es una indicación indirecta de la resistencia de la


RTD. El puente requiere cuatro hilos de conexión, una fuente de alimentación
externa, y tres resistencias que tengan un coeficiente de temperatura igual a
cero.

Para evitar someter los tres resistores que completan el puente a la misma
temperatura de la RTD, ésta se separa del puente a través de un par de hilos
extensores (Figura 2.4).

R3

RTD

Figura 2.4 RTD separada del puente.


11
Estos hilos extensores hacen regresar al problema que se tenía inicialmente, su
¡mpedancia afecta la lectura de temperatura. Este efecto puede ser reducido
usando una configuración en puente con tres hilos (Figura 2.5).

RTD

Figura 2.5 Puente con 3 hilos.

Si los hilos A y B son exactamente ¡guales en longitud, los efectos de su


¡mpedancia se cancelarán ya que cada uno está en una rama opuesta del
puente. El tercer hilo, C, actúa como un hilo de medición y no lleva corriente.

El puente mostrado en la figura 2.5, crea una relación no-lineal entre los cambios
de resistencia de la RTD y e! voltaje de salida del puente. Ésta se aumenta a la
ya no lineal característica resistencia-temperatura de la RTD, por lo que se
requerirá una ecuación adicional para convertir la salida de voltaje de! puente a
la ¡mpedancia equivalente de la RTD.

Una técnica utilizada para aliviar los problemas asociados con el puente, es la
de conectar una fuente de corriente y un voltímetro remoto (Figura 2.6).

RTD

Figura 2.6 Fuente de corriente.


12

La lectura de voltaje del voltímetro es directamente proporcional a la resistencia


de la RTD, así que solamente se requiere una ecuación de conversión. El
voltímetro mide únicamente la caída de voltaje sobre la RTD y la longitud de los
hilos de medición no afectarían esta lectura. La única desventaja de usar 4 hilos
es que se necesita un hilo de extensión más que para el puente con 3 hilos. Este
es el precio que hay que pagar si se requiere mayor precisión en la medición de
temperatura.

Las RTD son dispositivos más lineales que las termocuplas, sin embargo, para
aplicaciones muy exigentes, se requiere un ajuste de su curva característica. La
ecuación de Calendar-Van Dusen ha sido utilizada por años para aproximar la
curva de las RTD:

RT = Ro+Roa "L -i IL
ioo 100 v ioo y
Donde; RT Resistencia a la temperatura T
Ro Resistencia a T = O °C
a Coeficiente de temperatura a T = Ó °C
(típico +0.00392 Q/n/°C)
5 1.49 (valor típico para platino con un a = 0.00392)
P O para T > O
0.11 para T < O (típico)

Los valores exactos para los coeficientes a, (3 y 5 se determinan probando la RTD


en cuatro temperaturas diferentes y resolviendo las ecuaciones resultantes. Esta
ecuación fue reemplazada posteriormente por un polinomio de orden 20, para
lograr un ajuste más exacto.

2.2.2 TERMISTORES

En la Figura 2.7 se conecta un termistor en un circuito con amperímetro para


explicar su funcionamiento. Al aplicar calor al termistor (Figura 2.7.a), éste
disminuye su resistencia, el flujo de corriente aumenta y el amperímetro refleja
este incremento. Cuando el calor es retirado (Figura 2.7.b), el termistor aumenta
su resistencia y por tanto, la corriente en el amperímetro disminuye. El termistor,
por tanto, ha sensado el cambio de temperatura y este cambio puede ser
observado en el amperímetro. De lo explicado se concluye que el termistor tiene
un coeficiente negativo de temperatura.

1 Manual OMEGA "Temperature Measurement Hand Book and Encyclopedia" Edición 1985
13

rr
CALOR

AMPERÍMETRO AMPERÍMETRO

a. Con calor b. Sin calor


(Resistencia disminuye) (Resistencia aumenta)

Figura 2.7 Operación del Termistor.

La palabra .termistor se deriva de dos palabras: térmico y resistor, Los


termistores son extremadamente sensibles.

Algunos pueden disminuir su resistencia tanto como un 5% por cada grado


celsius de elevación de temperatura. Los termistores son hechos de óxidos
metálicos mediante procesos de sinterización que consisten en "unir metales u
otros polvos prensándolos en frío, para darles la forma deseada, y calentarlos
después hasta formar un cuerpo duro y cohesivo".2

Un ejemplo de la extremada sensibilidad de los termistores a las diferencias de


temperatura se demuestra con niveles de resistencia de un termistor práctico,
que da una relación de resistencia de 30 entre +25°C y +125°C¡ y una relación
de 9 entre 0°C y +50°C. De ta! manera que a pesar de que los termistores son
no-lineales, ofrecen extremada sensibilidad a pequeños cambios de temperatura.

Los termistores ofrecen significativas ventajas en términos de igualación de


niveles de ímpedancia, para necesidades de circuitos de compensación o
instrumentación disponibles. Por ejemplo, es posible escoger un sensor con un
4% o mayor sensibilidad por °C en niveles de resistencia de 100 a hasta 30 MQ
a 25°C. Ofrecen también significativas ventajas de fabricación pues pueden ser

2 "Diccionario de Electrónica Inglés-Español", Editorial Omega, Inc. 1963-Frank J. Lagueruela


14
montados en una gran variedad de substratos, y con diversidad de tamaños, que
se escogen de acuerdo a las necesidades de medición.

Las principales desventajas de los termistores para aplicaciones en mediciones,


son sus significativos cambios de sensibilidad (4.9% a 0°C, 4.1% a +30°C, y 3.8%
a +50°C); y una significativa no linealidad en sensitividad de resistencia absoluta
por grado de temperatura (a 0°C, 486 Q por °C; a 30°C, 100 n por °C; y a 50°C,
39Hpor 0 C).

Óxidos metálicos tales como manganeso (Mn), níquel (Ni), cobalto (Co), cobre
(Cu), hierro (Fe) y uranio (U) son usados por la industria para fabricación de
termistores.

Los termistores son fabricados de formulaciones especiales de óxidos metálicos


pulverizados, comprimidos en un pequeño disco, y luego sinterizados. La mezcla
de los metales, la temperatura de sinterízación y el medio ambiente determinan
la inclinación del termistor y sus características. El disco sinterizado es revestido
con plata, y un proceso patentado de remoción de material ajusta el nivel de
resistencia de manera que todos los termistores de un tipo y valor dados presen-
tan casi idénticas características. Los terminales son adheridos y cada termistor
es probado individualmente en varias temperaturas. El producto final es
encapsulado en substancias epóxicas y codificados con colores para identificar
sus valores de resistencia.

El diseño de puentes con termistores, aunque es susceptible de análisis


rigurosos, puede ser generalizado para propósitos menos exigentes.

La resistencia del medidor debe ser más grande que la resistencia del termistor
a la temperatura más baja de operación del puente a diseñar. A continuación se
exponen algunos criterios de diseño de un puente práctico (Figura 2.8).

La selección de la impedancia del sensor depende grandemente de la


temperatura que se va a medir; debe tener un nivel razonable de resistencia en
la temperatura de interés. El puente está nulo cuando RT = Rn.

Para máxima linealidad, R2 = R3 = RT en la mitad del rango de temperatura.

El voltaje del puente debería ser escogido considerando la disipación de calor


propia del sensor. El máximo voltaje a través del termistor (ETh) podría ser
determinado por EI = P.RT, donde P es la disipación permisible para un error por
calor propio aceptable, y RT es la resistencia del termistor a la mitad del rango.

Si se va a utilizar un amperímetro como indicador, RM (resistencia del medidor)


debería ser aproximadamente 10 veces RTh a la máxima temperatura (el más
15

bajo valor de resistencia del termistor). Se puede usar una fuente de corriente
constante, en lugar de un voltaje constante, o puentes de corriente.

R2

R3

Figura 2.8 Termistor en un puente.

Cuando se use un voltímetro como indicador, RM debería ser por lo menos 10


veces R™ a la temperatura más baja (máxima resistencia del termistor).

La alta resistividad del termistor proporciona una ventaja diferente para la


medición. En este caso no se requeriría una medición de 4 hilos como en el caso
de la RTD. Por ejemplo, un valor de resistencia de un termistor común a 25 °C
es de 5000 Q, con una variación de resistencia típica de 4%/°C, es decir 200
Q/°C; los hilos de medición con una resistencia total de 10 O. producirían un error
de:
ion = 0.05 °C
200
Este error equivale a un factor 500 veces menor que e! obtenido en el caso de
la RTD (26 °C/0.05 °C « 500).

Por cuanto los termistores están construidos con elementos semiconductores,


son más susceptibles de descalibraciones permanentes a altas temperaturas que
las RTD o las termocuplas. Por esta razón el uso de !os termistores está
generalmente limitado a bajas temperaturas (pocos cientos de grados
centígrados), y los fabricantes previenen que exposiciones prolongadas, aun muy
abajo de los límites máximos de operación, causarán que el termistor salga de
la tolerancia especificada.

Los termistores pueden ser confeccionados de tamaños muy pequeños, lo cual


permitiría una rápida respuesta a los cambios de temperatura. Esto también
16

significa que su pequeña masa térmica los hace especialmente susceptibles a


errores de auto calentamiento.

Los termistores son mucho más frágiles que las RTD o las termocuplas y, por
tanto deben ser montados cuidadosamente para evitar aplastamientos, roturas
o separación de los hilos de medición.

La palabra que mejor describe al termistor es sensibilidad. De los tres tipos de


sensores que se están analizando, el termistor es el que presenta un cambio de
parámetro (resistencia) más grande con la temperatura. El precio que se paga
por esta gran sensibilidad es una pérdida de linealidad. El termistor es un
dispositivo extremadamente no-lineal, no linealidad que depende grandemente
de los parámetros en los procesos de construcción. Por tal motivo los fabricantes
no han estandarizado las curvas de respuesta de los termistores, como lo han
hecho con las curvas de las termocuplas y RTD.

La curva de un termistor particular puede ser aproximada muy estrechamente


usando la ecuación de Steinhart-Hart:

1 = A + B\r\R + (.
T

Donde: T = Temperatura en grados Kelvin


R = Resistencia del termistor
A, B, C = Constantes de ajuste de la curva

A, B y C se encuentran seleccionando tres puntos de la curva proporcionada por


el fabricante y resolviendo las tres ecuaciones simultáneas. Si los puntos se
escogen de manera que no abarquen más de 100 °C dentro de la parte central
del rango de temperatura del termistor, esta ecuación se aproxima a una muy
notable precisión de ± 0.02 °C.

Una ecuación más simple, que tendrá un tiempo de cálculo menor es la siguiente:

T = C 1
InR - A

Donde A, B y C se encuentran igualmente seleccionando tres puntos de la curva


resistencia-temperatura del termistor y resolviendo las tres ecuaciones
simultáneas resultantes. Esta ecuación debe ser aplicada sobre un rango de
temperatura más estrecho, para tratar de lograr una precisión como la de la
ecuación de Steinhart-Hart.

1 Manual OMEGA "Temperatura Measurement Hand Book and Encyclopedia" Edición 1985
17

2.3 TERMOCUPLAS

Las termocuplas se basan en el efecto Seebeck que se explicó anteriormente. La


Figura 2.9.a explica gráficamente este efecto.

Al calentar una de las junturas, una corriente de electrones fluye desde uno de
los alambres, hacia el otro que es de diferente tipo. La juntura que se calienta
se le llama la "juntura caliente", mientras que la otra se le llama "juntura fría". En
la Figura 2.9.b, la juntura fría se reemplaza por un voltímetro para proporcionar
un camino cerrado a la corriente y medir la diferencia de potencial de la juntura
caliente. Su polaridad y magnitud dependen del tipo de material de los metales
utilizados en la juntura.

ACERO / ACERO

COBRE N COBRE

a. Efecto Seebeck b. Midiendo el Potencial

Figura 2.9 Efecto Seebeck.

En la Figura 2.10 se puede observar eí efecto Peltier. Un alambre de acero y


otro de cobre están unidos en sus extremos. Una batería ha sido colocada en
serie con ei alambre de acero. Al fluir los electrones desde el acero (estado de
energía más alto) hacia el cobre (estado de energía más bajo), la juntura se
calienta por el exceso de energía de los electrones. Al fluir éstos desde el cobre
hacia el acero la juntura se enfría, porque suministra la energía que necesitan los
electrones para pasar de un estado de energía más bajo a uno más alto.

Aunque el efecto Peltier no se lo puede aplicar en un transductor o sensor, es


conveniente mencionarlo como un efecto termoeléctrico.

Las termocuplas son escogidas por su habilidad para proporcionar una relación
uniforme de voltaje versus temperatura, es decir, que cuando cambie la
temperatura, la termocupía debería producir un cambio lineal en el voltaje de
salida. Algunas termocuplas operan bien en altas temperaturas, otras operan
mejor en bajas temperaturas. A algunas no les afecta la corrosión, la humedad
o la oxidación. Otras pueden afectarse al exponerlas a determinados elementos.
18
COBRE COBRE

Fría Caliente

Figura 2.10 Efecto Peltier.

El tipo de termocupla escogida debe satisfacer los requerimientos de la


aplicación, por ello se han establecido estándares. Las termocuplas son
designadas por tipos, con una letra. Las que usan metales comunes (llamados
material base) son de los tipos T, E, J y K, que son reconocidas por la ANSÍ
(American National Standard Institute). Las que usan metales nobles son más
costosas, pero son capaces de operar a más altas temperaturas y son más
resistentes a la oxidación y a la corrosión. Éstas son de los tipos B, R y S
reconocidas también por la ANSÍ. Hay también tipos 1 hasta 5 que han sido
estandarizadas por la industria, pero que no tienen símbolo de la ANSÍ.

La Tabla 2.4 indica los tipos de termocupías reconocidas por la ANSÍ y las
combinaciones de las aleaciones metálicas usadas para fabricarlas.

Después del nombre del material hay signos (+) y (-); la polaridad positiva (+)
establece el metal con el estado más alto de energía.

Las termocuplas no generan grandes cantidades de voltaje. De ahí que es


necesario escoger la termocupla dependiendo del rango de temperatura que se
desee medir en una aplicación particular Otro factor para escoger la termocupla
adecuada es su habilidad para producir un voltaje de salida.

Las Figura 2.11 y 2.12 representan las curvas de temperatura versus milivoltios
para los diversos tipos de termocuplas. En estas figuras se puede notar que las
termocuplas de metales comunes (T, E, J, K), tienen el voltaje de salida en el
orden de decenas de milivoltios pero operan en rangos de temperatura
comparativamente bajos; las de metales nobles (R, S, B) en cambio, operan en
rangos de temperatura relativamente altos pero tienen salidas de voltaje más
bajas

Cada tipo de termocupla tiene capacidades específicas y rangos de utilización


que pueden ser revisados en los manuales de los fabricantes cuando se desee
escoger una termocupla adecuada para un trabajo particular.
TERMOCUPLAS TIPOS K, J, E y T
Figura 2.11 Temperatura vs. Voltaje

70

60

50

40

30

20

10

o-l
200 400 600 800 1000 1200 1400
TERMOCUPLAS TIPOS R, S y B
Figura 2.12 Temperatura vs. Voltaje

25-

20

^ 15
¿
IJJ

O
> 10

200 600 800 1000 1200 1400 1600 1800


21

Tabla 2.4y Símbolo ANSÍ y Aleaciones de las Termocuplas.

Símbolo Aleación de la Termocupla


ANSÍ
T Cobre (+) vs. Constantan (-)
E Chromel (+) vs. Constantan (-)
J Acero (+) vs. Constantan (-)
K Chromel (+) vs. Alumel (-)
Tungsteno
Tungsteno (+) vs.
G1 ' 26% Rhenium
Tungsteno Tungsteno
C'/ (+) vs.
5% Rhenium 26% Rhenium
Platino
R Platino (+) vs.
13% Rhodio
Platino
S Platino (+) vs.
10% Rhodio (

Platino Platino
B (+) vs.
6% Rhodio 30% Rhodio

La juntura para medición es la juntura caliente, esta juntura es especialmente


construida en un tubo que proporciona un soporte a la juntura, mientras logra
sensar el medio cuya temperatura se quiere medir, sin que este soporte sea
afectado por la temperatura del medio. Este material se llama envoltura o vaina
y está hecho de metales tales como inconel o acero inoxidable. La vaina o
envoltura está aislada de la juntura con cerámica u óxido de manganeso. Existen
tres modelos básicos de junturas que son: juntura expuesta (exposed), juntura sin
tierra (ungrounded) y juntura con tierra (grounded).

La Figura 2.13.a muestra una juntura expuesta, que es recomendable para


medidas de temperatura de gases no corrosivos, estáticos o fluyentes, donde el
tiempo de respuesta debe ser mínimo. La juntura se extiende más allá de la
vaina metálica protectora para dar respuesta rápida. La vaina aisladora está
sellada en el punto de entrada para prevenir la entrada de humedad o gas.

1 Estas [etras no son simblos ANSl.


; 22
La Figura 2.13.b muestra una juntura sin tierra. Este tipo es recomendado para
mediciones de temperatura de gases y líquidos corrosivos, estáticos o fluyentes,
en aplicaciones eléctricas críticas. El alambre soldado de la juntura está
físicamente aislado de la vaina de la termocupla por cerámica dura y altamente
pura.

a. Expuesta. b. Sin Tierra. c. Con Tierra.

Figura 2.13 Junturas para medición.

La Figura 2.13.c ilustra una juntura con tierra. Esta juntura es recomendada para
medir temperaturas de gases y líquidos corrosivos, estáticos o fluyentes, y para
aplicaciones con altas presiones. La juntura de esta termocupla está soldada a
la vaina protectora, logrando una respuesta más rápida que la del tipo sin tierra.

2.3.1 MEDICIÓN DEL VOLTAJE DE LA TERMOCUPLA

Para medir el voltaje generado por la termocupla es necesario conectar un


voltímetro, y los puntos de conexión del mismo, que generalmente son de cobre,
forman dos nuevas termocuplas, como se puede observar en la Figura 2.14, en
donde se ha conectado una termocupla tipo T (cobre-constantan) a un voltímetro.

Interesa leer en el voltímetro, solamente el voltaje de salida de la juntura J1 (V-j),


pero al conectarlo con ese propósito, se han formado dos junturas adicionales:
J2 y Ja. Como J3 es una juntura cobre-cobre, ésta no crea un voltaje de salida
térmico y por tanto V3=0. J2 en cambio es una juntura cobre-constantan que
genera un voltaje V2 en oposición a V-i. Entonces la lectura resultante en el voltí-
23

metro (V), será la diferencia de los voltajes V1 y V2 generados por las junturas J-j
y J2 respectivamente; es decir, será proporcional a la diferencia de temperatura
de las junturas J-i y J2. De lo anterior se desprende que no se podrá conocer la
temperatura de J-, sin antes encontrar la de J2.

Una forma de determinar la temperatura de J2 es colocarla físicamente en un


recipiente con hielo, forzando a que su temperatura sea 0°C y estableciendo que
J2 sea una juntura de referencia. Como los puntos de conexión del voltímetro
son junturas cobre-cobre, no generan ningún voltaje y entonces la lectura V del
voltímetro será proporcional a la diferencia de temperatura entre J-t y J2 (Figura
2.15).
J3

Cu
Cu
J1
V

C
Cu
CALOR

VOLTÍMETRO

Circuito Equivalente.

Figura 2.14 Midiendo el voltaje.

Para pequeños cambios de temperatura, la relación voltaje-temperatura de las


termocuplas estandarizadas es casi lineal, por tanto se tendría:

AF =

Donde a es la constante de proporcionalidad, denominada coeficiente Seebeck.


24

De la Figura 2.15 se puede deducir que la lectura del voltímetro será:

V = (V,- F 2 ) = <

Siendo tj1 y tj2 temperaturas absolutas.

Cu
_j_ • Cu i
A Cu
J1
v V1

Cu + V2 — C J C
CU CALOR

VOLTÍMETRO

J2

HIBLO

Circuito Equivalente.

Cu +
J1
v V1
T
V2 -
Cu C

J2
V T=0°C

Figura 2.15 Juntura de referencia.

Si se las especifica en grados centígrados se tiene;

(°C) + 273.15
Por tanto:
V = •,, + 273.15) -(r,i + 273.15
7 =
25

Y, como Tj_ = 0°C:

F = a (ir
\i - 0°C)
/
V = a Tr

Debe notarse sin embargo, que el voltaje de la juntura que está a la temperatura
del hielo V2í no es cero voltios, ya que éste es función de la temperatura
absoluta.

Añadiendo el voltaje de la juntura que está a la temperatura del hielo, la lectura


de voltaje V está referida a 0°C. Este método es muy seguro ya que la
temperatura del hielo puede ser controlada en forma precisa. La Agencia
Nacional de Estándares (National Bureau of Standards NBS), usa la temperatura
del hielo como el punto de referencia fundamental para obtener las tablas de las
termocuplas (ver apéndice C). En estas tablas se puede por tanto convertir
directamente del voltaje a la temperatura de la termocupla.

La termocupla tipo T, cobre-constantan, que se ha analizado es un ejemplo


particular, porque el hilo de cobre es del mismo metal que el terminal del
voltímetro. Si se conecta una termocupla tipo J, hierro-constantan, el hilo de
hierro incrementa el número de junturas de metales diferentes en el circuito
(Figura 2.16), ya que en los dos terminales del voltímetro se forman dos junturas
cobre-hierro.

Cu

VOLTÍMETRO

HIELO

Figura 2.16 Termocupla tipo J.

Este circuito ofrecerá una medición confiable, siempre y cuando los dos
terminales del voltímetro estén a la misma temperatura, de manera que los
26

voltajes generados por las dos junturas que se formaron al conectar el voltímetro,
como están en oposición, se cancelen (Figura 2.17).

Si los dos terminales del voltímetro no están a la misma temperatura, aparecerá


un error en la lectura. Por tanto, para evitar ese error, los terminales de cobre del
voltímetro se los debe extender con hilos del mismo material para que las dos
junturas cobre-hierro sean colocadas en un bloque isotérmico (igual
temperatura).

J3|

V3 +
-*- <y
Cu Fe
~TTl
_JJJ n
LJ =V SI V3 = V4
V VI Y
"TU n
IU LJ = V4 Sí Tj = T,
Cu Fe 1 ** -J^J JA

- •+• <w
VOLTÍMETRO V4 ^

J4 1

Figura 2.17 Voltajes.

El bloque isotérmico es un aislador eléctrico, pero buen conductor de! calor, y


sirve para mantener las junturas J3 y J4 a la misma temperatura (Figura 2.18). La
temperatura absoluta de! bloque isotérmico no afecta la lectura ya que las dos
junturas cobre-hierro están actuando en oposición.

CU

VOLTÍMETRO

HIELO

Figura 2.18 Junturas separadas.


27

En estas condiciones aun se mantiene la relación:

V = a (r, - 0°C)

Si se reemplaza el recipiente con hielo con otro bloque isotérmico que esté a una
temperatura TREF (Figura 2.19), como J3 y J4 se mantienen aun a la misma
temperatura, se tiene todavía que:

V = a

Cu

VOLTÍMETRO

REF

Figura 2.19 Eliminando el recipiente con hielo.

Este circuito es todavía inconveniente porque se tiene dos termocuplas


conectadas. Se va a tratar de eliminar el alambre de hierro entre J4 y JREF, para
lo cual primero se unen los dos bloques isotérmicos (Figura 2.20).

REF

Figura 2.20 Uniendo los bloques isotérmicos.

Con esto, no se ha cambiado el voltaje de salida, es decir:


28

y
Y = \-\ — TREF
(T

Para conseguir eliminar el alambre de hierro entre J4 y JREF, se hará uso de la


"ley de los metales intermedios" que es una ley empírica que dice: un tercer metal
(en este caso el hierro), insertado entre dos metales diferentes de la juntura de
una termocupla, no tendrá efecto en el voltaje de salida, mientras las dos junturas
formadas por el metal adicional estén a la misma temperatura (Figura 2.21).

MetalA MetalB MetalC MetalA Me&C

Y V TREF
V 'REF
Bloque Isotérmico

Figura 2.21 Ley de los metales intermedios.

Si se aplica esta ley empírica a este ejemplo se puede eliminar el alambre de


hierro entre las junturas J4 y JREF (Figura 2.22), con lo cual las junturas J3 y J4 se
convierten en las junturas de referencia (Figura 2.23).

Cu Cu

REF
REF
Bloque Isotérmico

Figura 2.22 Aplicando la ley al ejemplo.

Resta entonces, medir directamente la temperatura del bloque isotérmico


(junturas de referencia J3 y J4), y usar esta información para encontrar la
temperatura de la termocupla J-i.

Esto se lo podría hacer por ejemplo usando un termistor, cuyo valor de


resistencia es función de la temperatura absoluta. Si se coloca las junturas J3 y
J4 , y el termistor en el bloque isotérmico (Figura 2.24), se puede proceder de la
siguiente manera, utilizando un multímetro digital bajo el control de un
computador:

Se mide la resistencia de! termistor RT para encontrar la temperatura TREF,


y se convierte la misma al voltaje equivalente de la juntura de referencia,
VREF-
29

Se mide el voltaje V y se resta el voltaje VREF) con lo cual se encuentra


finalmente se convierte el voltaje Vn a la temperatura Tj

REF

Figura 2.23 Circuito final.

A este procedimiento se le conoce como Compensación por Software, ya que se


requiere la intervención de un computador para compensar el efecto de la juntura
de referencia. Para medir la temperatura de! bloque isotérmico se puede usar
cualquier elemento sensor que tenga una característica proporcional a la
temperatura absoluta: una RTD, un termistor o un sensor de circuito integrado.

Cu Beque Isotérmico

Fe
J1
V T1

^
CALOR
Cu
VOLTÍMETRO

T,REF

Figura 2.24 Midiendo la temperatura del bloque de referencia.

En lugar de medir la temperatura de la juntura de referencia, se podría tratar de


colocar un voltaje térmicamente controlado que cancele aquel generado por la
juntura de referencia. Se utiliza para ello un puente de resistencias, con una de
ellas sensible a la temperatura, que esté integrada al bloque isotérmico de las
junturas de referencia (Figura 2.25). El puente está alimentado con una batería
de mercurio o una fuente de poder de corriente directa muy estable. El voltaje
de salida es proporcional al desbalance creado entre la temperatura equivalente
30

preestablecida de la juntura de referencia T2| y la temperatura de la termocupla


de medición TV Se puede utilizar como temperatura de referencia preestablecida
0°C.

Si la temperatura ambiente alrededor de la juntura de referencia varía, un voltaje


térmicamente generado aparece, y produce un error en la lectura. Sin embargo,
un voltaje automático, igual y opuesto se introduce en serie con este error
térmico, y por lo tanto lo elimina, y se mantiene la temperatura equivalente de la
juntura de referencia sobre un amplio rango de variación de la temperatura
ambiente. Este método es conocido como Compensación por Hardware.

Bloque
Isotérmico

Figura 2.25 Circuito de compensación.

Los dos métodos de compensación han permitido simular, como referencia, la


temperatura del hielo. Se debe ahora tomar la lectura de voltaje y convertirla a
temperatura; pero, como se puede observar de las Figuras 2.11 y 2.12, la
relación temperatura-voltaje de las termocuplas no es lineal, lo que significa que
la conversión voltaje a temperatura no se podría hacer usando un factor de
escala solamente: aunque para ia termocupla tipo K, que es la que presenta una
curva casi lineal, si se lo hace, en el rango de O a 1000 °C.

Una conversión más segura se obtendría leyendo el voltímetro y consultando las


tablas de la NBS (National Bureau of Standards) (Ver Apéndice C). Para ello se
podría almacenar los valores de las tablas en un computador, pero esto podría
consumir una cantidad de memoria demasiado grande. Una solución más viable
es aproximar los valores de las tablas utilizando regresión matemática; es decir,
obtener un polinomio de grado n que se aproxime lo mejor posible a la curva
respectiva.

Este polinomio sería de la forma:


31

T = an 4- CL 4- 4- a3 x + ¿r

Donde: T = Temperatura
x = Voltaje de la termocupla
a = Coeficientes del polinomio; únicos para cada termocupla
n = Orden máximo del polinomio

Así como n se incremente, la exactitud del polinomio se mejora. Un valor


representativo es n = 9, para una precisión de ± 1°C. Se podrían usar polinomios
de menor grado en rangos de temperatura menores.

En la Tabla 2.5 se pueden observar los coeficientes de los polinomios para varias
termocuplas, la misma que ha sido tomada del Manual OMEGA "Temperature
Measurement Hand Book and Encyclopedia", Edición 1985. En esta tabla se
puede observar los rangos de temperatura en los cuales se podrían usar los
polinomios, así como también la precisión que se obtendría.

Tabla 2.5 Coeficientes de los Polinomios.

TIPO K TIPO J TIPO E TIPO T TIPO R TIPO S


Níquel Níquel Platino Platino
Hierro (+) Cobre (+}
10% Cromo (+) 10% Cromo (+) 13%Rod¡o(+) 10%Rodio{+)
Versus Versus Versus
Versus Versus Versus
Níquel-5% (-)
Consíantan (-) Constantan (-)
(Aluminio Silicio) Constanían (-) Platino (-) Platino (-}

0°C a 1370°C 0°C3760°C -100°Ca1000°C -160°Ca400°C 0°C a 1000°C 0°Ca1750°C


±0.7°C ±0.1°C ±0.5°C ±0.5°C ±0.5°C ±1°C
8vo. Orden 5to. Orden 9no. Orden 7mo. Orden 8vo. Orden 9no. Orden

ao 0.226584602 -0.048868252 0.104967248 0.100860910 0.263632917 0.927763167


ai 24152.10900 19873.14503 17189.45282 25727.94369 179075.491 169526.5150
32 67233.4248 -218614.5353 -282639.0850 -767345.8295 -48840341.37 -31568363.94
33 2210340.682 11569199.78 12695399.5 78025595.81 1.90002 E+10 8990730663
34 -860963914.9 -264917531.4 -448703084.6 -9247486589 -4.82704 E+12 -1.63565 E+1 2
as 4.83506 E+10 2018441314 1.10866 E+10 6.97688 E+1 1 7.62091 E+1 4 1.88027 E+1 4
36 -1.18452 E+12 -1. 76807 E+1 1 -2.66192 E+13 -7 .20026 E+1 6 -1.37241 E+1 6
a? 1.38690 E+13 1.71842 E+12 3.94078 E+1 4 3.71496 E+18 6.17501 E+17
as 6.33708 E+1 3 -9.19278 E+12 -8.031 04 E+1 9 -1.56105 E+19
39 2.06132 E+13 1. 69535 E+20
32

En lugar de calcular directamente cada exponencial, al computador se lo puede


programar para que calcule los polinomios de manera recurrente, poniéndolos
de la forma:

T ~ 4- x.an}

Con lo cual se ahorra tiempo de ejecución del computador.

Como el cálculo de polinomios de grado alto consume mucha cantidad de tiempo


del computador, se lo puede disminuir usando polinomios de orden más bajo,
para rangos de temperatura más pequeños; para lo cual, la curva característica
de la termocupla se la divide en varios sectores, y cada sector se lo aproxima por
un polinomio de tercer orden.

Todos los procedimientos indicados asumen que el voltaje de la termocupla


puede ser medido en una forma precisa y fácil; sin embargo, observando las
tablas de las termocuplas se nota que sus voltajes de salida son muy pequeños.
En la Tabla 2.6 se pueden ver los coeficientes Seebeck de cada termocupla
como la variación del voltaje por °C, y la sensibilidad que se necesitaría del
voltímetro con el cual se mediría el voltaje de cada termocupla.

Tabla 2.6 Sensibilidad del voltímetro.

SENSIBILIDAD
COEFICIENTE
TIPO VOLTÍMETRO
TERMOCUPLA SEEBECK
PARA0.1°C
(MV/°C) (HV)
K 40 4.0
J 51 5.1
E 62 6.2
T 40 4.0
R 7 0.7
S 7 0.7

Por todas estas razones, se debe tener mucho cuidado al seleccionar el método
y el instrumento que se utilicen para obtener la medición de temperatura.
33

2.4 APLICACIÓN UTILIZANDO EL MICROPROCESADOR

Del análisis que se ha realizado de las termocuplas, que son los sensores que
se van a utilizar en el presente trabajo, para conseguir una medición precisa de
la temperatura se va a proceder de la siguiente manera: se mide el voltaje
generado por aquellas, para lo cual se utilizan los circuitos integrados AD594 y
AD595 de la casa Analog Devices que son amplificadores para termocuplas con
compensación de juntura fría. De esta manera se logra aumentar estos voltajes
tan pequeños hasta niveles que puedan ser leídos con mayor facilidad, y el
voltaje amplificado estará referido ya a la temperatura del hielo 0°C, Como se va
a usar 4 termocuplas diferentes que son de los tipos K, J, E y T, para cada una
de ellas se utilizará un amplificador de los mencionados.

Los voltajes de las termocuplas ya amplificados adecuadamente, van a ser


transformados de análogos a digitales utilizando el conversor digital-análogo de
10 bits DAC1OOOLCN de la casa National Semiconductors, un circuito
muestreador-retenedor y un comparador, los mismos que estarán controlados por
el microprocesador Z-80 de la Zilog, y para lograr la conversión se hará uso del
método de aproximaciones sucesivas que se implernentará en la programación
del microprocesador. Como se tendrían 4 voltajes diferentes, éstos van a ser
transformados a señales digitales uno por vez; por esta razón se debe utilizar un
multiplexor análogo que vaya seleccionando sucesivamente cada uno de los
voltajes; así mismo este multiplexor estará controlado por el microprocesador.

Obtenidos los voltajes en forma digital, se va ahora a obtener la medida de la


temperatura utilizando los polinomios correspondientes a cada termocupla cuyos
coeficientes se pueden observar en la Tabla 2.5; es decir, se tiene que evaluar
el voltaje leído de la termocupla en el respectivo polinomio. Esto significa que el
microprocesador debe tener la capacidad de realizar operaciones matemáticas
que le permitan efectuar esa evaluación. Por esta razón es necesario desarrollar
aritmética de punto flotante de manera que el microprocesador pueda realizar
la evaluación de los polinomios poniéndolos en forma recurrente; de esta manera
no es necesario calcular exponenciales y las operaciones aritméticas requeridas
para evaluar el polinomio serían las de suma, resta y multiplicación.

Resta ahora presentar la medida en una forma apropiada; en este caso se lo


hará digitalmente en un conjunto de 6 displays, los cuales serán manejados
también por el microprocesador.

En consecuencia el microprocesador será el elemento que servirá para realizar


la tarea de aproximación de las curvas características de cada termocupla.
Adicionalmente y aprovechando la potencialidad del mismo, realizará funciones
adicionales como son las de controlar la conversión análogo-digital, el
multiplexor, el circuito de barrido de teclado y display, etc.; funciones que se ex-
34

plicaron en forma general en el capítulo anterior, y que se describirán


detalladamente en los capítulos subsiguientes.
CAPITULO III

DISEÑO DEL HARDWARE

3.1 DIAGRAMA DE BLOQUES

En la Figura 3.1 se puede observar el diagrama de bloques del equipo. Allí se


nota que el elemento más importante es el microprocesadorZ-80 (abreviado ¡aP),
quien se encargará de controlar el funcionamiento de todo el equipo.

Para su operación el ¡aP necesita de una señal de reloj que es la que controla la
acción más simple que tiene lugar en la unidad central de proceso (CPU). Esta
señal debe ser generada por un circuito externo, y para que exista sincronización
con los circuitos que controlan las tareas de entrada-salida, esta señal también
debe estar conectada a estos circuitos.

Otra señal importante es la de RESET o inicialización, que debe recibir el jjp


cuando se enciende el equipo y que le permite leer la primera instrucción desde
la dirección OOOOH. Esta señal también está conectada a los circuitos de
entrada-salida de manera que se mantengan en un estado inactivo hasta que
reciban las primeras órdenes del ¡aP.

El jjP está conectado a la memoria EPROM (Eraseable Programmable Read Only


Memory) a través de las 8 líneas bidireccionales de datos, 16 líneas de
direcciones y algunas señales de control, conexión que le permitirá leer desde
esta memoria las instrucciones que debe ejecutar para cumplir con las diferentes
tareas.

De una manera similar a la conexión de la memoria EPROM, se encuentra la


memoria RAM (Random Access Memory), en donde el ¡iP almacenará resultados
intermedios e información temporal. En esta memoria también estará localizado
el Síack (pila de datos), que el jjP usa para instrucciones de salto a subrutinas
o retorno de interrupciones.

El circuito que controla la operación del teclado y display es el INTEL 8279, que
es programado por el (jP y que le alivia de tareas como el barrido del teclado o
el refresco del display. Se conecta al (iP a través de las 8 líneas de datos y de
algunas de direcciones y de control. Aquel a su vez se conecta con la matriz de
teclado que contiene 19 interruptores arreglados en 3 columnas por 8 filas, con
DIAGRAMA DE BLOQUES

U i 1 U U U 1 í O O
U . U , U . l_l . U . U .

DISPLAY
T\.

G D D D
D D D D
D D D D
D Q D G
I l D D

TECLADO

10 BITS 5 CONVERSOR
CONTROUDOR
DIGITAL/
PARALELO
CXWROL !_
ANÁLOGO ! REF.de
ENTRADA
WLTAJE
SÁLICA

P 1 0

TERMOCUPLAS AMPLIFICADORES COMP

«<: AD595
K ¿

J AD594
MLA.TJ FLEXORES

MUESTREADOR
AD595 RETENEDOR

AD594
37

la última columna de solo 3 filas; y al display, que contiene 6 indicadores de 7


segmentos y punto decimal cada uno, y 2 diodos emisores de luz (LED's) para
indicación de escala. Utiliza 3 líneas para barrer el teclado, 7 para barrer los 6
indicadores y el arreglo de los 2 LED's, 8 líneas para el refresco de los 7
segmentos y el punto decimal de cada indicador y 8 líneas de entrada que le
permiten identificar la tecla pulsada. Cuando se ha detectado una tecla pulsada,
el circuito INTEL 8279 genera una señal de interrupción al pP, el cual la atiende
conforme a la identificación de la tecla pulsada que llevó a cabo el circuito 8279.

Los voltajes generados por las termocuplas, que son de los tipos K, J, E y T, se
amplifican a través de los circuitos amplificadores AD594/AD595 con
compensación de juntura fría, uno por cada termocupla, y cuyas salidas se
conectan a un multiplexor análogo que será controlado por el ¡jP a través del
controlador paralelo de entrada salida (PÍO), De esta forma se podrá procesar
la señal de cada termocupla secuencialmente, es decir una por vez.

La conversión análogo-digital de las señales ya amplificadas de las termocuplas


se la realiza con la ayuda de un conversor digital-análogo de 10 bits, que es
manejado por el controlador paralelo de entrada salida (PIÓ), el cual tiene 2
pórticos de 8 líneas cada uno, es decir 16 líneas, 10 de las cuales entran al
conversor. Para lograr la conversión de análogo a digital, la señal amplificada
de cualquier termocupla es retenida en el circuito muestreador-retenedor, cuya
línea de control sale desde el PÍO; el jiP a través del PÍO envía un código digital
al conversor digital-análogo, el cual a través de un amplificador operacional de
salida genera un voltaje análogo correspondiente al código digital enviado desde
el nP. Este voltaje y el de la termocupla, retenido en el circuito muestreador-
retenedor, son comparados en un circuito comparador cuya salida es
realimentada al (j,P a través de una de las líneas del PIÓ; dependiendo del
resultado de la comparación, el ¡iP envía un nuevo código digital al PIÓ y este
al conversor, de manera que el valor análogo correspondiente se aproxime más
a la muestra del voltaje amplificado de la termocupla y que ha sido retenido. Este
proceso se repite hasta que el ¡iP complete el código digital de 10 bits
equivalente al valor de voltaje que se ha querido convertir. A este procedimiento
se le conoce como el método de aproximaciones sucesivas.

El conversor digital-análogo necesita de una referencia de voltaje muy precisa


que debe ser proporcionada externamente para que el error de conversión sea
mínimo.

Obtenido el valor digital de la muestra de voltaje de una de las termocuplas, el


|jP se encargará de realizar la aproximación a la curva voltaje-temperatura de
cada termocupla utilizando para ello los coeficientes del polinomio respectivo.
Esta aproximación se realiza exclusivamente en base a la programación del \¿P
Z-80 y que será desarrollada en el siguiente capítulo.
LM340

FUENTE DE PODER

110 ^

NOTA: Condensadores en mlcrofaradíos


Resistencias en ohmios

LM7915

oo
40

equipo y provoque errores en la amplificación de las señales de las termocuplas


o en la conversión análogo-digital.

El otro regulador de + 5 VDC es el LAS1405 con capacidad de corriente de 3 A


que alimentará a todos los elementos y circuitos integrados que requieran de ese
voltaje y que son la mayoría; por esta razón se ha escogido este regulador con
esa capacidad de corriente.

El transformador T2 de 110 VAC / 32 VAC con toma central para las fuentes de +
15 VDC y -15 VDC que tiene conectado el puente rectificador de onda completa de
4 diodos NTE5304 con capacidad de corriente de 1.5 A; la toma central está
conectada a tierra de manera que la mitad del voltaje rectificado se utilice con el
regulador positivo y la otra mitad con el negativo. Así mismo se conectan 2
condensadores de 2.200 jiF, 35 VDCl que actúan como filtros; y que, como en el
caso del otro condensador de filtro, tienen conectada en paralelo una resistencia
de 100 Kíl Los voltajes de salida de los condensadores medidos con respecto
a tierra son de + 21 VDC y - 21 VDc que están dentro del rango de tolerancia del
voltaje de entrada de los reguladores.

El regulador de + 15 Voces el LM7815 y el de -15 VDC es eí LM7915, ambos con


hasta 1 A de capacidad de corriente, y ha sido necesario implementarlos porque
algunos elementos necesitan de estas polarizaciones.

A la entrada de los 4 reguladores se ha conectado un condensador de 0.01 ¡_iF


para filtrar ruidos de alta frecuencia; y, a la salida de 3 de ellos, excepto el de +
5 VDC que alimenta al display, se han conectado condensadores de 47 jaF, 35
VDCJ para disminuir el rizado.

3.3 EL MICROPROCESADORZ-80

A continuación se presenta un resumen de las características más importantes


del pP Z-80, y especialmente de aquellas que permitirán realizar el diseño del
equipo . Se describirá también brevemente cada uno de los pines del JJ.P.

3.3.1 REGISTROS

En la Figura 3.3 se muestran 3 conjuntos de registros que tiene disponibles el


Z-80.
41

REGISTROS PRINCIPALES REGISTROS ALTERNOS

A ACUMULADOR F BANDERAS A1 ACUMULADOR F' BANDERAS

B PROPÓSITO GENERAL C PROPÓSITO GENERAL B1 PROPÓSITO GENERAL C1 PROPÓSITO GENERAL

D PROPÓSITO GENERAL E PROPÓSITO GENERAL D' PROPÓSITO GENERAL E' PROPÓSITO GENERAL

H PROPÓSITO GENERAL L PROPÓSITO GENERAL H' PROPÓSITO GENERAL L1 PROPÓSITO GENERAL

8 BITS

16 BITS

IX REGISTRO ÍNDICE

IY REGISTRO ÍNDICE

SP APUNTADOR DE PILA

PC CONTADOR DE PROGRAMA

I VECTOR INTERRUPCIONES R REFRESCO MEMORIA

8 BITS

FLIP-FLOPS DE ESTADO DE INTERRUPCIONES

0 = INTERRUPCIONES DESHABITADAS ALMACENA IFF1 DURANTE

1 = INTERRUPCIONES HABILITADAS ATENCIÓN A NMI

FLIP-FLOPS DE MODO DE INTERRUPCIONES

IMFa IMFb

0 0 MODO DE INTERRUPCIÓN O
0 1 NO USADO
1 0 MODO DE INTERRUPCIÓN 1
1 1 MODO DE INTERRUPCIÓN 2

Figura 3.3 Registros del \iP Z-80.

El primer conjunto consiste de un grupo duplicado de registros de 8 bits: un grupo


principal y otro alterno (designados como registros prima [']). Los dos grupos
están conformados por el acumulador, el registro de banderas y 6 registros de
42

propósito general. La transferencia de datos entre estos dos grupos de registros


se consigue con una instrucción de intercambio (Exchange).

El segundo conjunto está formado por 6 registros con funciones específicas que
son: I registro de interrupciones, R registro de refresco, IX e IY registros índices,
SP apuntador de pila (Stack Pointer) y PC contador de programa.

Tabla 3.1 Características de los registros.

Tamaño
Registro Comentarios
(Bits)

A,A' Acumulador 8 Almacena un operando o el resultado de una operación.

F,P Banderas 8 Ver Set de Instrucciones.

B.B1 Propósito General 8 Puede ser usado separadamente o como un registro de 16 bits con C.

C,C' Propósito General 8 Igual que B.

D,D' Propósito General 8 Puede ser usado separadamente o como un registro de 16 bits con E.

E,E' Propósito General 8 Igual que D.

H,H' Propósito General 8 Puede ser usado separadamente o como un registro de 1 6 bits con L.

L,L' Propósito General 8 Igual que H.

Nota; Los registros de 16 bits se combinan así:


- (B,C) B - Byíe más significativo C - Byte menos significativo
- (D,E) D - Byte más significativo E - Byíe menos significativo
- (H,L) H - Byte más significativo L - Byte menos significativo

Almacena los 8 bits más significativos de la dirección de memoria para


Interrupciones
procesamiento de interrupciones con vectores

Realiza el refresco de memoria dinámica, transparente al usuario,


Refresco de Memoria incrementando y colocando este registro automáticamente en la barra de
direcciones durante el ciclo de traída de cada instrucción.

IX Registro índice 16 Usado para díreccionamiento ¡ndexado.

IY Registro Índice 16 Igual que IX.

Retiene la dirección del tope de la pila de datos. Ver instrucciones PUSH o


SP Apuntador de Pila 16
POP.

PC Contador de Programa 16 Retiene la dirección de la próxima instrucción.

IFF1-IFF2 Habilitación Interrupciones Flíp-Flops Encendido o apagado para indicar el estado de la interrupción.

IMFa-IMFb Modo Interrupciones Füp-Flops Refleja el modo de la interrupción.

E! tercer conjunto consiste de dos flip-flops de estado de interrupciones y dos


adicionales que identifican el modo de interrupción en un instante particular.
En la Tabla 3.1 se presenta información adicional de cada uno de los registros
mencionados.

3.3.2 INTERRUPCIONES

El jaP Z-80 acepta 2 señales de entrada de interrupciones: NMI e INT. La NMI


es una interrupción sin máscara y tiene la prioridad más alta. INT tiene una
prioridad más baja y debe ser habilitada por software para que pueda operar.

El Z-80 tiene un modo único de respuesta para el servicio de la interrupción sin


máscara NMI; no puede ser deshabilitada por el programa, y por tanto será
aceptada siempre por la CPU (Unidad Centra] de Proceso). Después del
reconocimiento de la señal NMI, la CPU salta a la localidad de memoria 0066H,
que normalmente contiene el inicio de la subrutina de servicio de la interrupción.

La interrupción con máscara INT en cambio, puede ser deshabilitada por el


programa y tiene 3 modos programables disponibles que son:

Modo 0. El dispositivo que provoca la interrupción coloca una instrucción en la


barra de datos que generalmente es una instrucción de salto a una de ocho
direcciones de inicio (Restart) localizadas en la página O de memoria,

Modo 1. Es muy similar a la operación de la interrupción sin máscara NMI, con


la diferencia de que al ser reconocida la CPU salta a la localidad de memoria
0038H.

Modo 2. Este modo de interrupción ha sido diseñado para facilitar el trabajo del
l_iP Z-80 con los periféricos de su misma familia. El dispositivo que provoca la
interrupción selecciona la dirección de inicio de la rutina de servicio, colocando
un vector de 8 bits en la barra de datos, durante el ciclo de reconocimiento de la
interrupción. La CPU forma un apuntador, usando este byte como los 8 bits
menos significativos y el contenido del registro I como los 8 bits más
significativos, que señala una dirección en memoria donde se inicia la rutina para
atender la interrupción.

Se puede también implementar un sistema de interrupciones en cadena, por


prioridades, que están determinadas por la ubicación física de los dispositivos
periféricos que provocan las interrupciones. Para ello, cada dispositivo periférico
de la familia del Z-80 dispone de una línea de entrada (IEI), y una línea de salida
(IEO) para habilitación de interrupciones. El dispositivo con la prioridad más alta
tiene conectada la línea de entrada IEI al pP, y la línea de salida IEO se conecta
a la línea de entrada IEI del dispositivo que tiene la siguiente prioridad, y así
44

sucesivamente formando la cadena. Este arreglo permite al |aP seleccionar un


dispositivo con prioridad más alta en el evento de interrupciones simultáneas. El
dispositivo que provoca una interrupción, deshabilita su línea de salida IEO
conectada al dispositivo siguiente de más baja prioridad, hasta que sea atendido;
después de lo cual, la habilita, permitiendo que el dispositivo de más baja
prioridad pueda ser atendido.

3.3.3 SET DE INSTRUCCIONES

El ¡jP Z-80 tiene un set de instrucciones muy versátil que incluye operaciones
tales como movimiento de bloques, que permiten una eficiente y rápida
transferencia de datos entre memoria y dispositivos de entrada-salida. Dispone
de operaciones a nivel de bit en cualquier localidad de memoria.

En el Apéndice C se puede encontrar una descripción más detallada de la


operación, los códigos nemónicos, el estado de banderas (Flags) y comentarios
de cada una de las instrucciones.

El set de instrucciones ha sido dividido en las siguientes categorías:

Instrucciones de carga de 8 bits.


Instrucciones de carga de 16 bits.
Intercambio, transferencia de bloques y búsqueda.
Operaciones aritméticas y lógicas de 8 bits.
Aritmética de propósito general y control de la CPU.
Operaciones aritméticas de 16 bits.
Rotaciones y desplazamientos.
Operaciones de encendido, apagado y prueba de bits.
Saltos relativos y absolutos.
Llamadas y retornos a subrutinas e interrupciones.
Operaciones de entrada y salida.

Existen implementados una variedad de modos de direccionamiento que permiten


una rápida y eficiente transferencia de datos entre registros, localidades de
memoria, y dispositivos de entrada-salida. Entre estos modos de direccio-
namiento están: inmediato, inmediato extendido, página cero modificado, relativo,
extendido, indexado, por registro, por registro indirecto, implícito y por bit.
45

3.3.4 DESCRIPCIÓN DE PINES

El u,P Z-80 es un circuito integrado de 40 pines cuya distribución se puede


apreciar en la Figura 3.4. A continuación se describen las funciones de cada uno
de ellos.

Z-80 CPU
_ 270 30
M1 AO 31
19, A1 32
~ _ 2C£ TÍREQ A2 33
CONTROL DEL
22Q IORQ A3 34
SISTEMA WR A4 35
RD A5 36
28 A6 37
REFSH A7 BUS DE
38
18Q A8 39 DIRECCIONES
HALT A9 40
24 A10 1
WAIT A11 2
CONTROL DEL A12
16 3
CPU I NT A13
17 4
NW A14 5
26 A15
RESET 14
25 DO 15
CONTROL DE 23, BUSRQ D1 12
BUSES 8USAK D2 8
D3 BUS DE
6 7
11 •CLK D4 9 DATOS
29 -t-SV D5 10
GND D6 13
D7

Figura 3.4 Distribución de pines.

A0-A15. Bus de direcciones de 16 bits (salidas, activas en alto, 3 estados). El bus


de direcciones permite acceder hasta 64 Kbytes de memoria o pórticos de
entrada-salida (E/S) para intercambio de datos.

D0-D7. Bus de datos (entrada/salida, activa en alto, 3 estados). Constituye un


bus de datos de 8 bits bidireccional usada para intercambio de datos con
memoria y con dispositivos de E/S.

M1. Ciclo de máquina (salida, activa en bajo). M1 junto con MREQ indican que
el ciclo de máquina actual es el ciclo de traída de! código de operación de la
ejecución de una instrucción. M1 junto con IORQ indican un ciclo de
reconocimiento de una interrupción,

MREQ. Pedido de memoria (salida, activa en bajo, 3 estados). Indica que el bus
de direcciones contiene una dirección válida para una operación de lectura o
escritura con memoria.
46

IORQ. Pedido de entrada-salida (salida, activa en bajo, 3 estados). Indica que


el byte menos significativo de la barra de direcciones contiene una dirección de
E/S válida para una operación de lectura o escritura. Esta señal también se
genera simultáneamente con M1 durante un ciclo de reconocimiento de una
interrupción para indicar que un vector de respuesta a la interrupción puede ser
colocado en e! bus de datos.

WR. Escritura (salida, activa en bajo, 3 estados). Indica que el bus de datos de
la CPU contiene datos válidos para que sean almacenados en la localidad de
memoria o en el dispositivo de E/S direccionados.

RD. Lectura (salida, activa en bajo, 3 estados). Indica que la CPU desea leer
•S datos desde memoria o desde un dispositivo de E/S. La localidad de memoria
o el dispositivo de E/S direccionados deben usar esta señal para ingresar los
datos en el bus de datos de la CPU.

RFSH. Refresco (salida, activa en bajo). Junto con MREQ indica que los 7 bits
menos significativos del bus de direcciones del sistema pueden ser usados como
una dirección de refresco a sistemas de memorias volátiles dinámicas.

HALT. Estado de detenimiento (salida, activa en bajo). Indica que la CPU ha


ejecutado una instrucción de detenimiento (Halt) y está esperando una
interrupción NMI o INT (si esta última está habilitada), antes de volver a operar.
Mientras está detenida, la CPU ejecuta instrucciones de no operación (Nop) para
.£ mantener el refresco de memoria.
•w

WAIT. Espera (entrada, activa en bajo). Indica a la CPU que la localidad de


memoria o el dispositivo de E/S direccionados no están listos para una
transferencia de datos. La CPU continua en un estado de espera mientras esta
señal esté activa.

INT. Pedido de interrupción (entrada, activa en bajo). Es generada por un


dispositivo de E/S. La CPU acepta un pedido al final de la instrucción que está
ejecutando si el flip-flop interno (IFF) de habilitación de interrupciones controlado
por programa está habilitado. Necesita un resistor externo de pulí up (le obliga
a alcanzar el voltaje de polarización).
•A
^" NMI. Interrupción sin máscara (entrada, se dispara con flanco negativo). Tiene
una prioridad más alta que INT. Es reconocida siempre al final de la ejecución
de una instrucción, independientemente del estado del flip-flop de habilitación de
interrupciones y, automáticamente forza a que la CPU salte a la localidad de
memoria 0066H.

RESET, Arranque (entrada, activa en bajo). Reinicializa la CPU apagando el


flip-flop de habilitación de interrupciones, limpia el registro PC y los registros I y
47

R, y establece el estado de interrupciones al modo 0. Durante el tiempo de


arranque los buses de direcciones y datos van al estado de alta impedancia y
todas las salidas de control van a un estado inactivo. La señal de RESET debe
estar activa por un mínimo de 3 ciclos completos de reloj antes de que la
operación de arranque se haya completado.

BUSREQ. Pedido de buses (entrada, activa en bajo). Tiene una prioridad más
alta que la señal NMI y es siempre reconocida al final de cada ciclo de máquina.
Esta señal forza a que los buses de direcciones y datos y las señales de control
MREQ, IORQ, RD y WR de la CPU vayan al estado de alta impedancia para que
otro dispositivo las pueda controlar. Requiere de un resistor externo de pulí up.

BUSACK. Reconocimiento de buses (salida, activa en bajo). Indica a algún


dispositivo que requiere acceso a los buses que los buses de direcciones y datos
y las líneas de control MREQ, IORQ, RD y WR de la CPU, han entrado en su
estado de alta impedancia. La circuiteria externa puede entonces controlar esas
líneas.

CLK. Señal de reloj con niveles TTL. Período: 400 ns mínimo; ancho de pulso
en alto: 180 ns mínimo; ancho de pulso en bajo: 180 ns mínimo, 2.000 ns
máximo; flancos de subida y bajada: 30 ns máximo. Voltaje de entrada en bajo
(VILC): - 0,3 V mínimo, 0.45 V máximo; voltaje de entrada en alto (V|Hc): Vcc - 0.6
V mínimo, Vcc + 0.3 V máximo.

+ 5 V (Vcc) y GND. Alimentación de corriente continua.

3.4 CIRCUITOS DE RELOJ E INICIALIZAC1ON

Como se puede concluir de la descripción que hemos hecho del |j,P Z-80, dos
señales externas necesarias para que opere adecuadamente son: la de reloj CLK
y la de inicialización RESET. Se pasa entonces a describir el diseño de cada
una de estas señales.

3.4.1 CIRCUITO DE RELOJ (CLK)

Para el diseño de esta señal se ha escogido al circuito integrado SN74S124 que


es un Oscilador Controlado por Voltaje (VCO) cuyas principales características
son las siguientes:
48

Dos VCO independientes en un circuito integrado de 16 pines.

La frecuencia de salida se establece por un único componente externo que


puede ser: un cristal, para operación con frecuencia fija y de alta estabilidad,
o un condensador, para operación con frecuencia fija o variable.

Voltajes de polarización separados para aislar las entradas de control de


frecuencia, de la circuiteria de salida,

Un rango de frecuencia desde 1 Hz a 60 MHz.

En la Figura 3.5 se puede observar al C.l. 74S124 con sus dos VCO's separados,
y la distribución de pines.

Si la entrada de habilitación EN está en bajo, la salida está habilitada, si EN está


en alto la salida está en alto también.

Si el C.l. 74S124 se usa con un cristal, la respuesta de baja frecuencia se puede


mejorar conectando un condensador de bajo valor (pF). Si va a operar a la
frecuencia fundamental de un cristal, la entrada de control de frecuencia FC debe
estar en alto (5 V) y la entrada de rango RNG en bajo (O V) para obtener una
máxima estabilidad sobre variaciones de temperatura y de voltaje de fuente.

SN74S124

4 16 12 16
CX1 VCC 15 CXI VCC 15
-VCC -VCC

5 9 13 8
CX2 GND 8 CX2 GND g
6,,
-GND 11g
-GND
3 EN 14^ EN
2
RNG 1 RNG j10
FC Y ¿ FC Y

Figura 3.5 El C.L SN74S124.

En el circuito implementado en el presente trabajo que se presenta en la Figura


3.6, se ha escogido utilizar uno de los VCO disponibles, con un cristal cuya
frecuencia fundamental es de 3.704 MHz, a uno de cuyos pines se ha conectado
un capacitor de 27 pF; la entrada de control de frecuencia FC se ha conectado
a + 5 V y la entrada de rango RNG a O V, de acuerdo a las recomendaciones del
fabricante para obtener máxima estabilidad. La entrada de habilitación EN se
conecta a O V con lo cual el circuito va a estar oscilando continuamente. Los
pines de alimentación VCc y ~VCc se conectan juntos, ya que no se tiene fuente
de voltaje separada para control; igualmente GND y -GND.
49

A la salida del VCO se tendrá una frecuencia de oscilación igual a la del cristal,
es decir 3.704 MHz., pero como se está usando la versión del Z-80 de hasta 2.5
MHz., se va a dividir esta frecuencia a la mitad; para ello se utiliza el C.l. SN7476
que es un Flip-Flop J-K doble con preset y clear, cuyo funcionamiento se lo
puede comprender observando la Tabla 3.2. Allí se puede ver que el circuito
oscila cuando las entradas preset, clear, J y K están en alto y que la frecuencia
de oscilación será la mitad de la frecuencia de la señal conectada a la entrada
de reloj CLK (que es la salida del VCO), es decir se ha reducido la frecuencia a
1.852 MHz. con la cual el pP que se está utilizando ya puede trabajar.
Adicionalmente con el uso del flip-flop J-K se consigue una señal de reloj con un
duty cycle aproximado del 50% (la mitad del período en alto y la otra mitad en
bajo).

+ 5 Vdc
ci

A
4 16
CX1 VCC 15 > 330
L_27 ~VCC
3.704 i 1 :~
pF
MHz I 1
5
CX2 GND
~GND
9
8 ,
4
*!•
. -o n 15 l
^ ^^o2 , rríT^
— f°
2
EN
RNG 1 S^ 1.852 MHz
FC Y 37

16 , 0 , 14 «09
74S124 '

7476 L

r.iRn irrn DF RPI ni

Figura 3.6

Con esta frecuencia de reloj que se ha conseguido, se tiene un período de:

1 1
T = = 0.54
f 1.852 MHz

Este período T de 0.54 ¡j,s = 540 ns cumple con las especificaciones del
fabricante del |j,P Z-80 de ser mayor a 400 ns, como se indicó en la descripción
de la señal de entrada de reloj del uP.

Igualmente, como la señal de reloj de pP necesita un nivel de voltaje de entrada


en alto (V!Hc) mínimo de VCc - 0.6 V y el voltaje de salida en alto (VOH) típico del
flip-flop es de 3.4 V, no se podría cumplir con este requerimiento; por esta razón
50

se coloca a la salida del flip-flop J-K un inversor con colector abierto (open
collector) y una resistencia de pulí up de 330 Q. para subir el voltaje de salida de
la señal de reloj hasta VCc. Este inversor es el C.l. SN7406 que contiene 6
inversores con colector abierto y salidas de alto voltaje.

Tabla 3.2 Funcionamiento del Flip-Flop J-K.

ENTRADAS SALIDAS
PRESET CLEAR CLOCK j K Q Q
L H X X X H L
H L X X X L H
L L X X X H* H*
H H Jl_ L L Qo Qo
H H JL H L H L
H H J1_ L H L H
H H JL H H OSCILACIÓN

'Configuración no estable

La resistencia de 330 Q a más de subir el voltaje hasta VCc cuando la salida del
inversor esté en alto, debe limitar la corriente de salida en bajo (!OL) del mismo,
cuando su salida está en bajo, para que no sobrepase la máxima permitida, que
el fabricante especifica en 40 mA,

Entonces:
VCC -Vsal 5V - 0.2 V
y r
= 14.5
R 330 n
Donde V^ es el voltaje de saturación del transistor interno de salida, del inversor.

Por tanto la resistencia de 330 n limita la corriente de salida en bajo I0u del
inversor a 14.5 mA que está por debajo de la máxima especificada.

3.4.2 CIRCUITO DE INICIALIZACIÓN (RESET)

El |_iP, como se pudo notar al describirlo, necesita de una señal de arranque


(RESET) a través de la cual realiza una secuencia de inicialización que le
51

permite; apagar el fljp-flop de habilitación de interrupciones, establecer el estado


de las mismas en Modo O y borrar los registros I (vector de interrupciones), R
(refresco) y PC (contador de programa). Debido a que se ha borrado el registro
PC, cuando se inicie la operación después que la señal de RESET esté inactiva,
el [oP leerá la primera instrucción desde la localidad de memoria OOOOH.

Esta señal debe permanecer activa por un período mínimo de 3 ciclos completos
de reloj, para que la secuencia de inicialización se complete adecuadamente. En
este caso, como el período de reloj es T = 0.54 fis, esta señal debería
permanecer inactiva por lo menos 3 T = 1.62 |is.

De lo anterior se desprende que se debe implementar un circuito que produzca


la señal de RESET al encender el equipo (Power On Reset), de manera que el
jiP realice su secuencia de inicialización inmediatamente después de haberlo
energizado.

El circuito diseñado se presenta en la Figura 3.7. Se ha utilizado el C.l. Timer


NE555, 2 condensadores, 2 resistencias y uno de los inversores con colector
abierto del C.l. 7406, con la respectiva resistencia de pulí up. Se muestra el
diagrama interno del Timer 555 para mayor claridad en la explicación.

El funcionamiento del circuito es el siguiente:

Al encender el equipo, el condensador C-\s un cortocircuito y empieza a


cargarse a través de la resistencia de 1 MO. La salida del Timer depende del
Flip-Flop que está en la condición de apagado (reset), es decir: Q estaría en 1L
(uno lógico) y como se invierte en el buffer de salida, la salida del Timer está en
0L. El transistor Q-i del Timer está saturado y por tanto mantiene descargado al
condensador C2 por la conexión con el terminal Discharge. La entrada de Reset
se conecta a VCc para que no tenga ningún efecto en el funcionamiento del Flip-
Flop.

Cuando el voltaje del condensador d, que está conectado a la entrada Trigger,


ha llegado a VCc/3 que es el voltaje de referencia del Comparador 2, su salida
enciende (set) el Flip-Flop, por tanto la salida Q pasa a 0L y el transistor Q-] se
abre, permitiendo que el condensador C2 empiece a cargarse a través de la
resistencia de 1.2 MQ. Con el cambio de estado del Flip-Flop, la salida del Timer
también cambia a 1L.

Como el voltaje del capacitor C2 está aplicado a la entrada Threshold, cuando


llega a 2Vcc/3 que es la referencia del Comparador 1, su salida apaga (reseí) el
Flip-Flop, Q pasa a 1L, Qi se satura y descarga el condensador C2l y la salida del
Timer pasa a 0L.
INICIALIZACION


53

Se ha producido entonces en la salida del Timer un pulso positivo; pero como lo


que el }_iP requiere es un pulso negativo, se invierte el pulso a través del C.l.
7406 que al ser una compuerta con colector abierto, necesita de una resistencia
de pulí up cuyo valor de 330 O se justificó cuando se analizó el circuito de reloj.

La duración del pulso se puede calcular con la ecuación de voltaje sobre el


condensador C2 que es:

.J_ ^
RC
V
y C-y
= V
Y CC

Se calcula el tiempo para cuando el voltaje del condensador es 2Vcc/3:

V,
= -RCln I

= I.IRC = 1.1 x 1.2MÍ1 x 0.1 ¿¿F = 0.132-s

Éste es un tiempo bastante mayor si se lo compara con los 3 ciclos de reloj que
necesita el jiP, pero con ello se garantiza que ¡j,P no sea afectado con los
transitorios que se producen en las fuentes de poder al encender el equipo.

Adicionalmente se ha provisto al equipo de un interruptor-pulsador conectado en


paralelo con el condensador d, de tal manera que se puede reinicializar al jiP
sin necesidad de apagar al equipo, en caso de que así se requiera. El
condensador d entonces, evita que los rebotes que normalmente se producen
en el interruptor, afecten a la entrada Trigger del Timer. Este condensador,
desde luego, produce un retardo adicional previo, cuyo valor se puede calcular
aplicando la misma fórmula que se usó para C2; pero en este caso, se debe
calcular el tiempo para cuando el voltaje en d es Vcc/3:

t = -RCln 1-—M = - - R C l n f l - — I
I VCc) \j

t = OARC = 0.4 x 1MH x 0.1 ¿¿F = 0.04 s


54

3.5 CONEXIÓN DEL jiP CON MEMORIA

Como se conoce, el jaP necesita leer las instrucciones que debe ejecutar desde
algún dispositivo de memoria en donde previamente se han grabado todos los
códigos binarios que el ¡_iP entiende y ejecuta. Las memorias de programa
escogidas para nuestro caso son las del tipo EPROM (Eraseable Programmable
Read Only Memory), que permiten grabar los códigos correspondientes a las
instrucciones o a datos invariables, aplicando a la memoria, externamente (en un
programador), un voltaje de programación (21 VDC). Si se requiere, por otro lado,
cambiar la información ya grabada en la memoria, se la debe exponer a luz
ultravioleta durante algunos minutos, para proceder luego a grabar la información
modificada nuevamente.

Es necesario también disponer de memoria de lectura/escritura o memoria RAM


(Random Access Memory), en donde el pP almacena información temporal como
puede ser: los resultados de operaciones intermedias, el resultado de una
medición de temperatura, o las direcciones de localidades de memoria a donde
el (j.P tiene que regresar a leer las siguientes instrucciones, luego de haber
ejecutado saltos a subrutinas o atención a interrupciones. Esas localidades se
almacenan temporalmente en la memoria RAM, a través de la pila de datos que
el (j,P controla con el registro apuntador de pila SP (Stack Pointer).

Inicialmente se consideró utilizar 4 Kbytes (4096 bytes) de memoria EPROM para


el desarrollo del programa y 2 Kbytes (2048 bytes) de memoria RAM, repartidos
en 3 chips: 2 memorias EPROM 2716 con capacidad de 2 Kbytes (2048 bytes)
cada una, y 1 memoria RAM 6116, también de 2 Kbytes de capacidad. Pero,
conforme se fue desarrollando el programa, los 4 Kb. de EPROM no fueron
suficientes y fue necesario entonces, aumentar esta memoria hasta 6 Kb., para
lo cual se sustituyó una de las memorias 2716 de 2 Kb. por otra, con capacidad
de 4 Kb.: la EPROM 2732.

En la Figura 3.8 se puede observar la forma cómo se han conectado las 3


memorias mencionadas con el JJ.P para que pueda intercambiar información con
cualquiera de las memorias a través de las 8 líneas del bus de datos bidireccional
(Data Bus), seleccionando alguna localidad de memoria, para lo cual utiliza las
líneas del bus de direcciones (Address Bus).

La Tabla 3.3 explica las direcciones a las cuales responden cada una de las
memorias de acuerdo a su capacidad; a las memorias EPROM se las ha ubicado
en los primeros 6 Kb. y a la memoria RAM de 6 a 8 Kb. Allí también aparecen las
líneas de direcciones del fiP, y los valores entre los cuales direcciona a cada
memoria.
*»'

A a G D | E

\cc

30 8 9
MI fQ 31 ^_ 7 fiO 00 10
19,, 32 6 A1 01 11
Q A2 02
IORQ /3 34 4 A3 03 14
WR fi¿ 35 3 A4 04 15 4
RD /& 36 2 Ai 05 16
6 37 1 fB 06 17
REFSH fi y 38 23 A7 07
fi& 39 22 AS
HtT /3 40 19 A9
24 A10 1 21 A10
WAiT A11 2 A11
16 Al 2 3 18
INT . Al 3 4 - EPROM
17 20
NMI A14 OE/VPP
26 A15 0 - 4 KB
nnccr RESET 2732
14
25 D0 15
Q 23 c 1 12
BUSAK D2 8
B 03 7
•aK D4 9 3
D5 10
D6 13
D7

ZBO-CPU a 9
7 fiO 00 10
6 A1 01 11
5 fiZ 02 13
4 A3 O3 14
3 A4 04 15
2 A5 05 16
CONEXIÓN 1 fi6 06 17
23 A? 07
A 22 AS
1 19 fia
3 A10
MEMORIA 2 18
2 20 CE"
Q 21 OE EPROM 2
74LS08 VPP
z> 2716
4-6KB

5 1
T 8 9
T 7
fiO DO 10
vx 2 6 A1 01 11
5 A2 02 13
> Y4 > ) A3 03 14
4
<D A4 04 15
3
2 A5 05 16
1 C G2B Y7 > 0 fiB 06
1 17
23 A7 07
74LS138
22
19 AS
1 1
A10
18
20 CE RAM
21 OS
WE 6-8KB
6116

A B C D | E

en
56

Analizando la Tabla 3.3 se nota que ha sido necesario dividir a la configuración


total de memoria en bloques o páginas de 2 Kb. debido a que existen 2 chips con
esa capacidad (una 2716 y una 6116); esas dos memorias se direccionan con 11
líneas (de la A0 a la A10) y la primera con 12 (de la A0 a la AH). Para que el ¡iP
pueda direccionar adecuadamente a las memorias, necesita de un circuito
decodificador que le permita seleccionar uno de los chips, de acuerdo a la
dirección de memoria a la cual quiere acceder. En la Tabla 3.3 aparecen
sombreadas las líneas con las cuales se puede diferenciar a cada chip. Esas
líneas son: AH y A12.

Tabla 3.3 Direccionamiento de Memoria.

Ais AH Ai3 Ai2 An Aio As Aa A? Ae As Ai As Az Ai Ao HEX DEC MEMORIA

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000 0000
4. 4.
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 07FF 2047 EPROM
2732
0 0 0 0 1 - 0 0 0 0 0 0 0 0 0 0 0 0800 2048 4Kb.
4. 4-
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 OFFF 4095

0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1000 4096 EPROM


4. J. 2716
0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 17FF 6143 2Kb,
0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1800 6144 RAM'
4- 4- 6116
0 0 0 1 , 1 1 1 1 1 1 1 1 1 1 1 1 1FFF 8191 2Kb.

Para la decodificación se ha utilizado el C.I. 74LS138 que es un decodificador de


3 a 8 líneas que decodifica una de ocho líneas de salida, dependiendo de las
combinaciones binarias de las 3 líneas de entrada de selección, y cuyo
funcionamiento se explica en la Tabla 3.5.

Si se conectan las dos líneas de direcciones mencionadas, a las líneas de


selección A y B del decodificador, y adicionalmente la línea de dirección A13 a la
línea de selección C, se podría seleccionar a las memorias en grupos de 2 Kb.,
conectando las salidas del decodificador Y0, Y1f Y2 y Y3l que se ponen en bajo
(0(_) cuando la combinación binaria de las líneas de selección son O, 1, 2 o 3
respectivamente, a las entradas de habilitación CE de cada memoria, que tam-
bién seleccionan al chip cuando reciben un nivel bajo (0L).

Como la primera memoria es de 4 Kb, se necesita un circuito que seleccione


dicha memoria poniendo un nivel bajo en la línea de selección CE de la misma,
cuando se pongan en bajo las salidas Y0 o Y-i del decodificador. Esto se lo
57

consigue con una compuerta AND, C.l. 74LS08, cuyo funcionamiento se observa
en la Tabla 3.4.

En donde: la primera condición, ambas salidas del decodificador en 0 Lj nunca se


va a dar; la segunda y tercera condiciones, una de las dos salidas del
decodificador en 0Lj producen en la salida de la compuerta un 0Lj que es lo que
se requería; la cuarta condición, ambas salidas del decodificador en 1 Lj que
significaría que ese bloque de 4 Kb. no está seleccionado, producen a la salida
de la compuerta un 1i_, lo que no seleccionaría ese chip de memoria.

Tabla 3.4 Compuerta AND 74LS08.

ENTRADAS
SALIDA
Yi Yo
0 0 0
0 1 0
1 0 0

1 1 1

Tabla 3.5 Funcionamiento del Decodificador 74LS138.

ENTRADAS
SALIDAS
HABILITACIÓN SELECCIÓN

Gi G2* C B A Yo Y, Y2 Y3 Y4 Ys Ye Y7
X H X X X H H H H H H H H
L X X X X H H H H H H H H
H L L L L L H H H H H H H
H L L L H H L H H H H H H
H L L H L H H L H H H H H
H L L H H H H H L H H H H
H L H L L H H H H L H H H
H L H L H H H H H H L H H
H L H H L H H H H H H L H
H L H H H H H H H H H H L
58

Las entradas de habilitación del decodificador d, G2A V G2B se conectan así: d


a IL (5 V), y, G2A y G2B juntas a la salida del jjP MREQ, que es la línea de
selección de memoria del pP, activa en bajo. Cuando esta salida esté en alto,
el decodificador estaría en la primera condición de la tabla de funcionamiento:
eso es, todas las salidas en alto, es decir sin habilitar ninguno de los chips de
memoria. Cuando MREQ esté en bajo en cambio, el decodificador estaría en
cualquiera de las condiciones GI en alto y G2 en bajo, con lo cual podría
seleccionar cualquiera de los chips de memoria.

Con el circuito implementado, el joP selecciona un solo chip de memoria a la vez,


y los que no han sido seleccionados ponen sus buses de datos y direcciones en
el estado de alta impedancia, igual que cuando no selecciona ninguno, con lo
cual no se recargan las barras de datos y direcciones del pP. Como el C.l.
74LS138 es un decodificador de 3 a 8 líneas, y para el caso presente se utilizan
solamente 4 de las 8 salidas, se podrá, si así se requiere, aumentar hasta 4
páginas de memoria de 2 Kb., conectando las salidas del C.l. 74LS138 (Y4 a Y7)
a los chips de memoria que se aumenten.

Cuando se va a realizar una operación de lectura con las memorias EPROM o


RAM, éstas necesitan un nivel bajo en sus entradas OE (output enable), con lo
cual colocan los 8 bits correspondientes a la información almacenada en la
localidad de memoria seleccionada, en la barra de datos; estas líneas, por tanto,
están conectadas a la salida RD (lectura) del jjP. La memoria RAM, en la cual
también se puede almacenar o escribir información, necesita adicionalmente un
nivel bajo en la línea WE (write enable) que le permita aceptar la información que
se desea almacenar, desde la barra de datos; esta línea, por tanto, se conecta
a la salida WR (escritura) del pP.

De esta forma, con las líneas MREQ (pedido de memoria), RD (lectura) y WR


(escritura) se diferencia que el jjP quiera acceder a memoria, de cuando quiera
acceder a dispositivos de E/S, para los cuales se utilizará la línea IORQ (pedido
de entrada/salida).

A las líneas de entrada del pP que no se utilizan: WAIT (espera), NMI


(interrupción sin máscara) y BUSREQ (pedido de buses) que se activan en bajo,
se las conecta a 5 V a través de una resistencia, para garantizar que se manten-
gan en un nivel alto que es su estado inactivo.

3.6 DECODIFICACION DE TECLADO Y DISPLAY

Para aliviar al ¡iP de las tareas de barrido y decodificación de teclado,


eliminación de rebotes y refresco del display, que son los dispositivos de E/S
59

utilizados en el presente trabajo, se ha usado el C.L INTEL 8279 que justamente


es una Interfaz Programable para Teclado y Display. Por esta razón vamos a
describir las principales características de este chip.

3.6.1 EL C.l. INTEL 8279

Es un dispositivo de interconexión para teclado y display de propósito general,


diseñado para usarse con un (iP. La porción del teclado puede interconectarse
con un arreglo o matriz de hasta 64 interruptores, y la ubicación de la tecla
detectada, después de efectuar la eliminación de rebotes, se almacena en una
memoria interna, de donde el pP puede leerla. La detección de una tecla
pulsada, produce una interrupción al pP. La porción del display puede
interconectarse con indicadores de diferentes tipos, displays de segmentos;
numéricos o alfanuméricos así como con simples indicadores. Así mismo
dispone de una RAM interna para esta porción, que puede ser modificada o leída
por el (j,P.

3.6.1.1 DESCRIPCIÓN FUNCIONAL

El C.L INTEL 8279 ha sido diseñado para conectarse directamente con la barra
de datos de un pP, el cual puede programar cualquiera de los modos de
operación del 8279 y que son los siguientes:

Modos de Entrada

* Barrido de teclado - con las líneas de barrido codificadas (matriz de 8x8


teclas) o decodificadas (matriz de 4x8 teclas). Cada tecla pulsada genera un
código de 6 bits que corresponde a la posición de la tecla pulsada. La
posición de la tecla y el estado de las líneas SHIFT y CNTL/STB se
almacenan en una RAM interna tipo FIFO (primero en entrar, primero en
salir). El rebote producido por la pulsación de las teclas es eliminado auto-
máticamente en los modos de 2 teclas (2 key lockout) o N teclas (N key
rollover).

* Barrido de una matriz de sensores - con las líneas de barrido codificadas


(matriz de 8x8 interruptores) o decodificadas (matriz de 4x8 interruptores).
El estado de los interruptores (abierto o cerrado) se almacenan en una RAM
direccionable por el pP.
60

Entrada controlada externamente - los datos de las líneas de retorno se


transfieren a la RAM interna FIFO durante un cambio de estado de la línea
CNTL/STB.

Modos de salida

* Displays de 8 o 16 dígitos multiplexados, que pueden estar organizados


como dobles de 4 bits, o simples de 8 bits; en este último caso las salidas de
refresco B0-B3 y A0-A3 corresponden a los 8 bits así: B0 = D0 y A3 = D7.

* Formatos de ingreso por la izquierda o por la derecha.

Entre otras características del 8279 están:

* La programación del modo de operación se realiza desde el jiP.

* Dispone de una graduación de la frecuencia del reloj (Clock Prescaler).

* Produce una señal de interrupción hacia el ¡aP cuando tiene datos de tecla
pulsada o cambio de sensor disponibles.

* RAM interna tipo FIFO de 8 bytes para almacenar la información del teclado.

* RAM de display interna de 16 bytes para el refresco del display, que también
puede ser leída por el JJ.P.

3.6.1.2 DISTRIBUCIÓN DE PINES

En la Figura 3.9 se tiene al C.l. INTEL 8279, que es un chip de 40 pines, los
cuales tienen las siguientes funciones:

IRQ. Interrupción al jaP (salida, activa en alto). Se pone en alto cuando existe
algún dato en la memoria RAM del teclado. Se pone en bajo con cada lectura de
esta memoria por el ¡aP, y retorna a alto, si todavía existe información. En el
modo de sensores, esta línea se pone en alto cuando se detecta un cambio.

DB0-DB7. Bus de datos bidireccional. Todos los datos y comandos entre el jjP
y el 8279 se transmiten a través de estas líneas.
61.

RD, WR. Lectura y escritura (entradas, activas en bajo). Habilitan a las líneas de
datos internas para enviar o recibir datos hacia o desde el uiP.

CS. Línea de selección del chip (entrada, activa en bajo).

A0. Línea de datos o comandos (entrada). Un nivel alto en esta línea indica que
las señales recibidas o enviadas se interpretan como comandos o estados. Un
nivel bajo indica que esas señales son datos.

INTEL 8279
4 38
IRQ RLO 39
12 RL1 1
13 DBO RL2 2
14 DB1 Rl_3 5
15 DB2 RL-4 6 DATOS DEL
16 DBS RL5 7 TECLADO
17 DB4 RL6 8
18 DBS RL7
INTERCONEXIÓN 19
DB6 36
CON EL < DB7 SHIFT 37
ig0 CN7UST8
MICROPROCESADOR RD" 32
WR SLO 33
22^ SL1 34 BARRIDO
21 CS SL2 35
AO SL3
9 27
RESET OUTAO 26
3 OUTA1 25
OUTA2 24
40
OUTA3 DATOS DEL
ALIMENTACIÓN 20 VCC 31
VSS OUTBO DISPLAY
30
23Q OUTB1 29
BORRAR DISPLAY BD OUTB2 28
OUTB3

Figura 3.9 El C.l. INTEL 8279.

RESET. Inicialización (entrada, activa en alto). Después del arranque el 8279


queda en los modos siguientes:

Arreglo de display: 16 caracteres de 8 bits, ingreso por la izquierda.


Barrido de teclado codificado con 2 teclas.
Graduación de reloj en 31.

CLK. Señal de reloj (entrada). Igual a la usada por el sistema.

Vcc, VSs- Alimentación: fuente y referencia.

BD. Salida para apagar el display (activa en bajo).


62

RL0-RL7. Líneas de retorno de barrido (entradas). Conectadas a [a matriz de


interruptores. Disponen de un pulí up activo interno que las mantiene en alto,
hasta que el cierre de un interruptor las ponga en bajo. Sirven como una entrada
de 8 bits en el modo de ingreso controlado externamente (Strobed Input Mode).

SHIFT. Entrada alterna. El estado de esta línea se ingresa conjuntamente con


la posición de la tecla pulsada en el modo de barrido de teclado, lo que permitiría
dar dos posibilidades a cada tecla. Dispone de un pulí up activo interno que la
mantiene en alto hasta que el cierre del interruptor la ponga en bajo.

CNTL/STB. Entrada. En los modos de barrido de teclado, se la usa como otra


entrada alterna, y su estado se ingresa conjuntamente con la posición de la tecla
pulsada. En el modo de ingreso controlado externamente (Strobed Input Mode),
el cambio de estado de esta línea ingresa los datos a la RAM interna. Dispone
de pulí up activo interno que la mantiene en alto hasta que el cierre del
interruptor la ponga en bajo.

SL0-SL3. Líneas de barrido (salidas). Usadas para barrer la matriz del teclado
y el arreglo de dígitos del display. Pueden ser codificadas (1 de 16) o
decodificadas (1 de 4).

OUT Ao-Aa, OUT B0-B3. Salidas de refresco del display. Las señales de estas
salidas se sincronizan con las líneas de barrido (SL0-SL3) para multiplexar los
dígitos del display. Los 2 pórticos de 4 bits pueden ser apagados
independientemente. Pueden ser consideradas también como un solo pórtico de
8 bits.

3.6.1.3 PRINCIPIOS DE OPERACIÓN

La sección de control de E/S usa las líneas CS, A 0j RD y WR para controlar el


flujo de datos hacia y desde los varios registros internos. El flujo de datos hacia
y desde el 8279 se habilita con un 0L en la línea CS. Cuando el chip no está
seleccionado (CS = 1L), se coloca en el estado de alta impedancia.

Un contador interno que es un divisor de frecuencia por N (-s- N prescaler), puede


programarse para obtener una frecuencia interna de 100 KHz que da un tiempo
de barrido de teclado de 5.1 ms y un tiempo de eliminación de rebotes de 10.3
ms. Otro contador interno divide la frecuencia interna básica para proveer los
tiempos apropiados para barrido de filas y columnas de la matriz de teclado, y
para el refresco del display.
63

Las líneas de barrido son controladas por un contador que tiene dos modos. En
el modo codificado (encoded), proporciona un conteo binario que debe ser
decodificado externamente para obtener las líneas de barrido para el teclado y
el dísplay. En el modo decodificado (decoded) el contador decodifica los 2 bits
menos significativos y proporciona 4 líneas de barrido. Se debe notar que si el
teclado está en el modo decodificado, también lo estará el display, y por lo tanto
solamente los primeros 4 dígitos de la RAM del dispiay se mostrarán. En el modo
codificado, las líneas de barrido son salidas activas en alto; en el modo
decodificado, son salidas activas en bajo. La Figura 3.10 muestra las formas de
onda de las líneas de barrido en los dos modos.

So

S,

S2

S3

a. Barrido codificado.

S0 L
s,
S2

S3

b. Barrido decodificado.

Figura 3.10 Modos de las líneas de barrido.

En el modo de teclado las líneas de retorno se exploran para detectar si una tecla
ha sido pulsada en cada fila. Si el circuito de eliminación de rebote detecta
cerrado el interruptor de una tecla, espera aproximadamente 10 ms para
chequear si se mantiene cerrada; si así ocurre, la ubicación de la tecla en la
matriz, más el estado de las líneas SHIFT y CNTL/STB se transfieren a la
memoria FIFO. En el modo de barrido como matriz de sensores, el contenido de
64

las líneas de retorno se transfieren directamente a la fila correspondiente de la


memoria PIFO, en cada ciclo de barrido. En el modo de entrada con control
externo, el contenido de las líneas de retorno se transfieren a la memoria F1FO
en el flanco positivo del pulso de la línea CNTL/STB.

La memoria RAM de teclado de 8 bytes tiene una función doble. En los modos
de barrido de teclado o de entrada controlada externamente es una memoria
RAM tipo F1FO. Los nuevos ingresos se escriben en posiciones sucesivas de la
RAM y se leen en el orden que ingresaron. Un registro interno del estado de la
memoria F1FO, observa el número de bytes ingresados para ver si está llena o
vacía. Demasiadas escrituras o lecturas se reconocen como un error. Este
registro de estado de la PIFO, también puede ser leído por el ¡aP. La lógica de
este registro de estado, es la que proporciona la señal de interrupción al ¡o,P
cuando la memoria FIFO no está vacía. En el modo de matriz de sensores, esta
memoria es una copia del estado de los sensores. Cuando se detecta un cambio
en los sensores, se actualiza la memoria y se produce una interrupción.

Un registro interno de dirección del display, mantiene la dirección del byte que
se lee o escribe desde el p,P en esta memoria, y también el código del dígito que
se está mostrando' en el display. Las direcciones de lectura y escritura se
programan a través de comandos desde el ¡oP, así mismo si se establece o no un
modo de autoincremento luego de cada lectura o escritura. Esta memoria RAM
del display también puede ser leída directamente por el jj,P, de acuerdo al modo
programado. Si el display está organizado con dígitos dobles de 4 bits, las
direcciones de ambos dígitos se actualizan automáticamente de acuerdo con la
información que proviene del |j,P, quien además establece si la información que
corresponde a cada dígito se ingresa independientemente o como una sola
palabra de 8 bits. El ingreso de datos al display puede ser por la izquierda o por
la derecha.

Los comandos de programación del 8279 serán analizados detalladamente en


el siguiente capítulo, donde se cubre todo lo relacionado con el programa.

3.6.2 CIRCUITO IMPLEMENTADO

En la Figura 3.11 se puede observar la conexión del C.l. INTEL 8279 con el (j,P,
y de aquel con los arreglos de teclado y display.

La señal de reloj que se diseñó para el |jP se conecta también a la respectiva


entrada del 8279. En las especificaciones técnicas de este chip se encuentra
que el período mínimo del reloj es de 500 ns; como la señal obtenida del circuito
CONEXIÓN
TECLADO Y DlSPLAY
66

de reloj diseñado es de 540 ns, se está cumpliendo con las especificaciones de


reloj del 8279.

La señal de RESET para el 8279 es activa en alto, es decir se inicializa cuando


recibe un nivel alto en esta línea, a la inversa que para el pP; por esta razón se
invierte esta señal con una compuerta de! C.l. Inversor 7406 que, como es de
colector abierto, necesita de la resistencia de pulí up de 330 Q.

Cuando el 8279 detecte una tecla pulsada, va a provocar una interrupción al jjP,
poniendo un nivel alto en la línea IRQ; el pP en cambio, tiene la línea INT
(interrupción con máscara) activa en bajo, de tal forma que es necesario invertir
la seña! IRQ del 8279, utilizando otra compuerta del C.l. Inversor 7406 con la
resistencia de pul! up respectiva de 330 Q.

No se utiliza la interrupción sin máscara NMI del jiP porque va a realizar tareas,
como la conversión A/D, en las cuales no puede ser interrumpido; por tanto, a!
utilizar el otro tipo de interrupción INT (con máscara), se la puede habilitar o
deshabilitar por software de acuerdo a la tarea que realice el jiP.

El bus de datos del jiP D0 a D7 se conecta directamente con el bus de datos del
8279 DB0 a DB7, con el propósito de que a través de este bus se realice el
intercambio de datos o comandos entre el pP y el C.l. 8279.

El jaP Z-80 tiene la ventaja de que puede direccionar dispositivos de E/S


independientemente de memoria, para lo cua! utiliza el byte menos significativo
del bus de direcciones y la línea de salida 1ORQ (pedido de E/S). De esto se
desprende que se puede acceder hasta 256 (FFH) direcciones de E/S. En el
presente caso se va a utilizar 2 dispositivos: el 8279, y un PIÓ para la conversión
análogo-digital.

Como el PIÓ dispone de 2 pórticos paralelos, denominados A y B, necesita de


4 direcciones, 2 para cada pórtico, y de éstas, una para transferencia de
comandos y control, y otra para datos. El 8279 en cambio necesita de 2 direc-
ciones, una para comandos o status y otra para datos. La manera como se han
direccionado a estos dos dispositivos de E/S se la puede observar en la Tabla
3.7.

Las líneas de direcciones utilizadas para el PIÓ son 3: A0, A-i y A7, las dos
primeras se conectan a las líneas de selección de pórtico y datos o control, y la
tercera a la línea de habilitación del PIÓ que es activa en bajo. Para el 8279 se
utilizan dos líneas de direcciones: A0 y Ae, la primera, conectada a la línea de
datos o comandos AO y la segunda conectada a una de las entradas de una
compuerta OR, C.l. 74LS32; a la otra entrada de esta compuerta se conecta la
línea del pP IORQ (pedido de E/S); la salida se conecta a la línea CS (chip
select) del 8279. La Tabla 3.6 muestra el funcionamiento de la compuerta OR.
67

Como la línea de selección CS del 8279 es activa en bajo, este chip será
seleccionado únicamente cuando las líneas A6 e 1ORQ estén en bajo, es decir
cuando el jaP haga un pedido de E/S y con una dirección con la línea AG en bajo,
como la que se observa en la Tabla 3.7.

Observando la tabla se nota que las direcciones a las que responden el PIÓ y el
8279 se diferencian por las líneas Ae y A7, y aunque existen muchas otras
direcciones con esas líneas en 0L, en el desarrollo del programa se debe cuidar
de utilizar las direcciones de la Tabla 3,7 para no direccionar al mismo tiempo los
dos dispositivos.

Tabla 3.6 Compuerta OR 74LS32.

ENTRADAS SALIDA
CS
Ao IORQ 8279
0 0 0
0 1 1
1 0 1
1 1 1

En el numeral en el que se analice la conversión análogo-digital se explicará con


más detenimiento el direccionamiento del PIÓ, en lo que se relaciona a las líneas
de selección de pórtico y de datos o control.

Tabla 3.7 Direccionamiento de Dispositivos de E/S.

Ay Ae As A-t As Aa Ai Ao HEX FUNCIÓN DISPOSITIVO

0 1 1 1 1 1 0 0 7CH Pórtico A DATOS

0 1 1 1 1 1 0 1 7DH Pórtico B DATOS PÍO


Conversión
0 1 1 1 1 1 1 0 7EH Pórtico A CONTROL A/D
0 1 1 1 1 1 1 1 7FH Pórtico B CONTROL

1 0 1 1 1 1 1 0 BEH DATOS INTEL


1 0 1 1 1 1 1 1 BFH COMANDOS 0 STATUS 8279
68

Como las líneas de lectura/escritura RD y WR del pP y del 8279 son en ambos


casos activas en bajo, se conectan directamente, para el control del intercambio
de información entre los dos dispositivos.

La salida BD para apagar el display, no se la conecta, pues el apagado del


display se lo va a realizar por medio de la programación del 8279.

Las líneas de entrada SHIFT y CNTL/STB se las conecta a tierra (0L), porque no
se va a utilizar funciones alternas para las teclas, y se va a programar al 8279 en
el modo de barrido de teclado, en el cual no se necesita la entrada de STROBE.

E! teclado que consta de 19 interruptores, está arreglado en 3 columnas (C0 a C2)


por 8 filas (F0 a F7), teniendo la última columna, solamente 3 interruptores. A ios
interruptores de la columna C0 se los identifica con las teclas de la O a la 7, a los
de la columna C-i con las teclas 8, 9, A, B, C, D, E y F, y a los de la columna C2
con las teclas H, L y S (SHIFT).

El dispositivo de salida se lo ha conformado con tres C.l. MAN6710 que


contienen 2 displays de 7 segmentos y punto decimal cada uno, con ánodo
común; total 6 displays, y dos LED's o diodos emisores de luz que darán la
indicación de escala.

De lo anterior se desprende que se necesitan 3 líneas para e! barrido de ia matriz


del teclado que consta de 3 columnas, y 7 líneas para e! barrido del display que
consta de 6 display's y el arreglo de los dos LED's. Por esta razón se debe
utilizar las líneas de barrido del 8279 (SL0-SL3), en el modo codificado, pues se
necesitan 7 líneas, y en el modo decodificado se dispondría solamente de 4
(Figura 3.10.a); pero, para obtener las 7 líneas se debe recurrirá un circuito de
decodificación externo al 8279, que para este caso es el C.l. 74LS138 que es un
decodificador de 3 a 8 líneas y cuyo funcionamiento, que ya fue analizado
cuando se describió la decodificación de memoria, se lo puede observar en la
Tabla 3.5.

Si se conecta las 3 primeras líneas de barrido del 8279 a las entradas de


selección del 74LS138, se decodifica 1 de 8 líneas, dependiendo de las
combinaciones de las 3 líneas de entrada, con lo que se consigue las 7 líneas de
barrido que se requiere. Las salidas del decodificador Y0, YI y Y2, se las conecta
a las columnas de la matriz de teclado C0l C-i y C2 respectivamente. Al arreglo de
displays se conecta estas líneas de la siguiente manera: la línea Y7 al transistor
de habilitación Qi del display D-,, Y6 al transistor Q2 del display D2, Y5 al transistor
Q3 de D3, Y4 al transistor Q4 de D4, Y3 al transistor Q5 de D5, Y2 al transistor Q6 de':
De, y YI al transistor de habilitación Q7 del arreglo de los dos LED's de indicación
de escala.
69

Las líneas de habilitación del 74LS138 se las conecta así: d a 1 L y, G^y G2B a
la señal de RESET del 8279 (0L), de tal manera que el decodificador esté en
operación normal todo el tiempo para que se pueda realizar la operación de
barrido, y ponga todas sus salidas en alto solamente cuando el 8279 reciba una
señai de inicialización RESET (1L).

Las líneas de retorno RL0 a RL7 del 8279 se han conectado a las filas de la matriz
de teclado F0 a F7, respectivamente. Cada vez que una de las salidas del
decodificador se pone en 0Ll cualquier tecla pulsada en la fila correspondiente,
reflejará ese 0L en la línea de retorno respectiva; el circuito de eliminación de
rebotes del 8279 producirá el retardo necesario y, si la tecla aún se mantiene
pulsada, se ingresará a la RAM FIFO del 8279 la identificación de la tecla, es
decir la fila y columna en la cual está ubicada,

Las salidas de refresco de display del 8279, OUT AQ a A3 y OUT B0 a B3 se


conectan a las entradas del C.l. 74LS244 que es un Buffer (amplificador) de 8
líneas, con salidas de 3 estados, con el objeto de dar mayor capacidad de
corriente a estas salidas de refresco. Las salidas del C.l. 74LS244 se conectan
a 8 resistencias que servirán para limitar la corriente que circulará por los diodos
emisores de luz de cada segmento de los 6 displays; el otro lado de cada
resistencia se conecta al cátodo de cada uno de los 8 LED's de todos los
displays, LED's que pertenecen a los 7 segmentos y punto decimal de cada
display, correspondiendo el bit menos significativo al segmento a y el bit más
significativo al punto decimal (dp). En la Figura 3.12 se presenta un diagrama
que aclara la conexión de cada display, y que servirá para analizar la operación
completa de! circuito de refresco.
vcc

Rb

74LS138 DISPLAY ÁNODO COMÚN

h-
N

2G > R S R > R J> R > R *> R J


8279 ~° 1G > R ^
:£~^
^-C1
17
15
2A4
2A3
2Y4
2Y3
-1—^ I |
4~< 13 7 |
2A2 2Y2 9
^—< 11
2A1 2Y1 12
•T=r-< 8
1A4 1Y4 14
"rc"^ 6 1A3 1Y3
-^—C 4 1A2 1Y2
16
^—¿ 2 18
1A1 1Y1

74LS244

Figura 3.12 Conexión de un Display.


70

Cuando una de las líneas de salida del decodificador, que están conectadas a
las resistencias de base de los transistores Q de cada display, se pone en bajo
(0L), el transistor se satura, permitiendo el paso de la corriente hacia los LED's
de cada segmento del display; éstos se encenderán dependiendo del' estado de
las salidas del buffer 74LS244 que son controladas por las salidas de refresco
del 8279, en donde vendrá el código del carácter que se desea mostrar en el
display. Aquellas salidas que estén en un nivel bajo (0L), encenderán el LED
respectivo, en el caso contrario (1L) el LED se mantendrá apagado. Por lo tanto,
con las líneas de barrido del 8279 se selecciona el display a través de las salidas
del decodificador, y con las líneas de refresco del mismo y a través del buffer,
se enciende los segmentos del display, colocando en ellas, el código del carácter
que se quiere mostrar.

El transistor seleccionado para habilitar a cada display es el 2N2907A PNP que


tiene las siguientes características:

PNP-Si AF Pre-Amp, Driver, Sw


Voltaje Colector-Base (BVCBo): 80 V
Voltaje Colector-Emisor (BVCEo): 80 V
Voltaje Emisor-Base (BVEBo): 5 V
Corriente máxima de colector (Ic): 1 A
Máxima disipación de Potencia (Pd): 0.6 W
Frecuencia máxima (ft): 200 MHz

La corriente para el LED de cada segmento del display no debería ser mayor a
la corriente de salida en bajo I0i_ del C.l. 74LS244 recomendada por el fabricante
que es de 24 mA¡ con este dato se va a calcular el valor de la resistencia
conectada a cada segmento, tomando en cuenta que esta corriente circulará
solamente cuando el LED se encienda y por lo tanto cuando la salida del buffer
esté en 0L.
p _. V,Col - v, LED - v,OL
I.OL

Donde; VCo, Voltaje de colector del transistor Q


V C c - V s a t - 5 V - 0 . 2 V = 4.8V
VLED Caída de voltaje en el LED - 1.2 V
VOL Voltaje de salida en bajo del 74LS244
0.5 V
IOL Corriente de salida en bajo del 74LS244
24 mA

Por tanto:
71

4.8 V - 1.2 V - 0.5 V


R = = 129
24 mA

La corriente por el colector del transistor, en el caso más extremo, que ocurriría
cuando estén encendidos los 8 segmentos, sería:

* ~~ x I OL = 8 x 24 777,4 = 192 mA

Para garantizar que el transistor trabaje en saturación, se debe tener una relación
entre la corriente de colector y la corriente de base de 25 (!C/|B = 25) asumiendo
un hpE del transistor de 50, por lo tanto:

192 mA
7
•* D = = 7.7
25 25

Como la resistencia de base Rb del transistor está conectada a una de las salidas
del decodificador 74LS138, la corriente de base de cada transistor, cuando esta
salida esté en bajo (0L), no debe ser mayor a la corriente de salida en bajo IOL del
74LS138 recomendada por el fabricante que es de 8 mA; se calcula entonces el
valor de la resistencia Rb con esta corriente:

v,ce - VBE - VOL


Y v

i,OL
Donde: VBE Voltaje base-emisor de saturación del transistor Q
0.75 V
VOL Voltaje de salida en bajo típico del 74LS138
0.35 V
IOL Corriente de salida en bajo del 74LS138
8mA

Por tanto:
5 V - 0.75 V - Q.35 V
= 487.5
8 mÁ

Los valores de resistencias calculados con las corrientes recomendadas por el


fabricante, serían para el caso en que los displays estén encendidos
permanentemente, pero tomando en cuenta que el 8279 está barriendo y
refrescando continuamente todos los displays, en un tiempo especificado de 10.3
ms; así como también que el tiempo que mantiene encendido cada display está
especificado en 480 ¡as, se puede disminuir los valores de resistencias calculados
de tal manera de obtener una mejor intensidad luminosa de los diodos emisores
de luz, sin correr el riesgo de echarlos a perder por excesiva corriente, así como
72

tampoco el buffer que los está manejando, ya que el tiempo que permanecen
encendidos es pequeño comparado con el tiempo total de barrido. Por estas
razones se determinó experimentalmente que la mejor intensidad se obtenía con
resistencias de 10 £1, y se dejó el circuito del display trabajando con esos valores
de resistencias. Por las mismas razones anotadas, se disminuyó el valor de la
resistencia de base de los transistores aproximadamente a la mitad y se conectó
resistencias de 270 Q, que permiten que la corriente de base se eleve a 14 mA,
con lo cual se garantiza aún más que ios transistores trabajen en corte y
saturación.

Los dos LED's para indicación de escala se los ha arreglado como si fuesen un
display más, pero solamente con dos segmentos, de tal forma que el LED que
corresponde a °C está como el bit menos significativo y equivaldría a encender
o apagar el segmento a del display; el LED que corresponde a °F está como el
bit siguiente y equivaldría a encender o apagar el segmento b.

En la Figura 3.11, en la parte que corresponde a la tarjeta de display, se han


colocado números junto a cada terminal de resistencias y transistores, y también
números entre paréntesis junto a los pines de conexión de los displays: éstos
corresponden a los números de los identificadores de los zócalos donde están
ubicados los elementos mencionados. Igualmente como se ¡mplementaron tarje-
tas separadas para el teclado y para el display, en el diagrama se muestran los
conectores a través de los cuales se conectan las señales de estas dos tarjetas
con la tarjeta principal, con los números de identificación de cada señal en el
conector respectivo.

3.7 AMPLIFICACIÓN DEL VOLTAJE DE LAS TERMOCUPLAS

La amplificación del voltaje de las termocuplas que como se analizó en el


Capítulo II es muy pequeño, se la ha llevado a cabo utilizando los C.l. de la casa
Analog Device AD594/AD595 que son Amplificadores de Termocuplas con
Compensación de Juntura Fría. A continuación entonces, se presenta una
descripción de las características y funcionamiento de los mismos.

3.7.1 C.l. AD594/AD595

Son amplificadores de instrumentación completos y compensadores de la


termocupla de juntura fría en un solo chip. Combinan la referencia' de la
temperatura del hielo con un amplificador precalibrado para producir un alto nivel
73

de salida (10 mV/°C) directamente desde ia señal de la termocupla. Pueden ser


usados para amplificar su propio voltaje de compensación directamente,
permitiendo que operen como transductores de °C con un voltaje de salida de
baja impedancia.

Incluyen una salida de Alarma de Falla de Termocupla que indica si uno de los
hilos de la termocupla o ambos se han abierto. La salida de esta alarma tiene
una flexibilidad que le permite conectarse con cualquier tipo de circuitos como
compuertas TTL por ejemplo.

Pueden ser aumentados con una sola fuente y si se incluye una fuente negativa
se podrían medir temperaturas bajo 0°C. El autocalentamiento es mínimo, de tal
manera que cualquiera de los chips, sin carga, operará con una corriente total de
fuente de 160 |xA, pero es capaz de entregar más allá de ± 5 mA a la carga.

El C.l. AD594 viene precalibrado para igualar las características de la termocupla


tipo J (hierro-constantan) y el C.l. AD595 para la termocupla tipo K (chromel-
alumel). En los pines del chip se tienen disponibles los voltajes de! transductor
de temperatura y las salidas de control de ganancia, de tal forma que el circuito
puede ser recalibrado para otros tipos de termocuplas, aumentando dos o tres
resistencias.

En la Figura 3.13 se puede observar un diagrama de bloques del C.l.


AD594/AD595 así como la distribución de pines.

Figura 3.13 Diagrama de Bloques del C.l. AD594/AD595.

El AD594/595 se comporta como dos amplificadores diferenciales cuyas salidas


se suman y se usan para controlar un amplificador de alta ganancia A. En
74

operación normal, la salida de este amplificador en el pin 9, se conecta a la red


de realimentación en el pin 8. La señal de la termocupla aplicada a la etapa de
entrada en los pines 1 y 14, se amplifica con una ganancia G en el amplificador
diferencial, y luego es adicionalmente amplificada con una ganancia A en el
amplificador principal. La salida de este amplificador se realimenta a una
segunda etapa diferencial, a la entrada invertida. La señal realimentada se
amplifica en esta etapa y se conecta nuevamente al amplificador principal a
través de un circuito sumador. Debido a la inversión, la señal de realimentación
reduce la señal amplificada a un pequeño valor. Los dos amplificadores
diferenciales se construyen con ganancias idénticas G, de tal forma que la señal
de realimentación que se aplica al amplificador diferencial de la derecha, igualará
con mucha precisión la señal de entrada de la termocupla cuando la diferencia
•Jt; de las señales se reduce a cero. La red de realimentación se calibra durante la
fabricación de tal manera que la ganancia efectiva a la salida, en los pines 8 y
9, resulte en un voltaje de 10 mV/°C de la excitación de la termocupla.

Adicionalmente a la señal de realimentación, un voltaje de compensación de


juntura fría se aplica al amplificador diferencial de la derecha. La compensación
es un voltaje diferencial proporcional a la temperatura en °C del AD594/595. Esta
señal perturba la entrada diferencial del amplificador y por tanto la salida.del
mismo debe ajustarse para restaurar la entrada e igualar el voltaje aplicado de
la termocupla.

La compensación se aplica a través de unas resistencias de escalamiento de


,^ ganancia para que su efecto en la salida del amplificador principal sea también
de 10 mV/°C. Como resultado de esto, el voltaje de compensación aumenta al
efecto del voltaje de la termocupla, una señal que es directamente proporcional
a la diferencia de temperatura del AD594/595 y 0°C. Si la juntura de referencia
de la termocupla se mantiene a la temperatura del C.l. AD594/595, la salida del
mismo corresponderá a la lectura que se habría obtenido de la amplificación de
una señal de una termocupla referida a la temperatura del hielo (0°C).

El AD594/595 también incluye un detector de circuito abierto que conmuta un


transistor de alarma, que es un buffer con limitación de corriente que puede ser
usado para operar circuitos de alarma externos.

La red de compensación de la temperatura del hielo, tiene voltajes de salida


ft- disponibles con coeficientes de temperatura positivos y negativos (+TC y -TC,
pines 2 y 6). Estos voltajes se pueden usar con resistencias externas para
modificar la compensación de la temperatura del hielo y recalibrar al AD594/595
como se describirá más adelante.

La resistencia de realimentación está fijada en pines separados, así que su valor


puede ser modificado con una resistencia en serie, o puede ser reemplazada por
una resistencia externa conectada entre los pines 5 y 9. La disponibilidad
75

externa de la resistencia de realimentación permite ajustan la ganancia del


AD594/595.

Como medida de precaución, los terminales de compensación +C y -C, pines 2


y 6, que pueden entregar solamente pequeñas corrientes de calibración, no se
deben conectar a tierra o a una impedancia de muy bajo valor, pues el chip
podría dañarse permanentemente.

El AD594/595 tiene una compensación interna de frecuencia para relaciones de


realimentación (correspondientes a la señal de ganancia normal) de 75 o más.
Si se desean ganancias más bajas, se debe aumentar una compensación
adicional de frecuencia conectando un condensador de 300 pF entre el pin de
compensación COMP, pin 10, y la salida en el pin 9. El fabricante recomienda
un condensador adicional de 0.01 jiF entre los pines 10 y 11, COMP y V+.

3.7.1.1 PRINCIPIOS DE RECALIBRACION

La red de compensación de la temperatura del hielo del AD594/595 produce una


señal diferencial que es cero a 0°C y corresponde a la salida de una termocupla
referida a la temperatura del hielo, y que está a la temperatura del chip. La
salida positiva TC de este circuito de compensación es proporcional a la
temperatura absoluta y aparece como un voltaje en +T, pin 3. Es posible
disminuir esta señal cargándola con una resistencia conectada entre +T y COM
(común, pin 4), o incrementarla con una resistencia de pulí up conectada entre
+T y un voltaje positivo más grande TC disponible en +C, pin 2. Se debe notar
que el ajuste de +T se debe efectuar midiendo el voltaje que aparece en -T, pin
5. Para evitar una desestabilización del amplificador de realimentación, el
instrumento de medición debe ser aislado con unos pocos miles de ohmios en
serie con el hilo conectado a -T.

Al cambiar la mitad positiva TC de la salida diferencial del esquema de


compensación, se desplaza el punto de cero lejos de 0°C. El cero puede ser
restablecido ajustando el flujo de corriente en la entrada negativa del amplificador
de realimentación, en el pin -T. Una corriente en este terminal se puede obtener
con una resistencia conectada entre -C y -T, para balancear un incremento en
+T; o una resistencia entre -T y COM para compensar una disminución en +T.

Si la compensación se ajusta substancialmente para acomodar un tipo diferente


de termocupla, el efecto en el voltaje de salida final será un incremento o una
disminución proporcional. Para restablecer el voltaje de salida nominal de 10
mV/°C, se debe ajustar la ganancia para igualar las nuevas características de
compensación y los voltajes de entrada de la nueva termocupla. Cuando se
reduce la compensación la resistencia entre -T y COM automáticamente
incrementa la ganancia a un 0.5% del valor correcto. Si se requiere una
ganancia más pequeña, el valor nominal de la resistencia de realimentación
interna de 47 KH puede ser cambiado, colocando una resistencia externa en
paralelo o reemplazándola.

Se pueden conseguir reconfiguraciones más drásticas para otros tipos de


termocuplas sin comprometer seriamente la precisión de la calibración inicial,
siempre y cuando el procedimiento sea realizado a una temperatura constante
y usando como referencia la calibración de fábrica.

3.7.1.2 VOLTAJES DE SALIDA

Para lograr una salida proporcional a la temperatura de 10 mV/°C y compensar


con precisión la juntura de referencia sobre el rango de operación especificado
para el AD594/595 de O a 50 °C, la ganancia del chip se calibra durante el
proceso de fabricación para igualar las características de transferencia de las
termocuplas tipo J y tipo K a 25 °C.

Para la termocupla tipo J la variación del voltaje de salida entre O y 50 °C es de


O a 2.585 mV (ver tablas de las termocuplas en el Anexo C), de donde se obtiene
el coeficiente de temperatura TC:

AF ? 585 wV
K V = 51.7
AT 50 °C

La ganancia requerida para obtener 10 mV/°C a la salida sería:

Gj = ^ = 10 mVK = 193.4
TCj 51.7 /¿VI°C

Adicionalmente, como el AD594 se calibra para producir un voltaje de salida de


250 mV cuando se aplique una entrada de una termocupla que esté a 25 °C, se
debe introducir un voltaje de compensación (offset) que permita obtener esos 250
mV; es decir, se debe cumplir la siguiente función de transferencia:

OUT ' OFFSET /

Para encontrar el VOFFSET, se lo despeja de la ecuación anterior y se aplican los


valores conocidos a 25°C que son: AD5940ur - 250 mV y JOUT - 1.277 mV;
entonces:
77

_ OUT _ ,
Y OFFSET — n J OUT

>- OFF1FT
OFFSET ~ 193.4 ~ " 1'277 mV = 16

Por lo tanto la función de transferencia del AD594 quedaría:

/ÍD594
sij^s ,j -S'CíllT -— (V 7f~)[!T + 1 6 iuV]J x 1934
~'

Para la termocupla tipo K y el AD595 se efectúan los cálculos en forma similar,


por lo tanto: la variación del voltaje de salida de este tipo de termocupla entre O
y 50 °C es de 2.022 mV, entonces el coeficiente de temperatura TC es:

AK 2.022 mV ,_
AT 50 °C

La ganancia requerida para obtener 10 mV/°C a la salida sería:

^1 V
' Vs.Hrtr, 10 mV!QC
J- W III I I ^ =

TCK 40.44

El voltaje de compensación VOFFSET para obtener 250 mV a la salida, cuando la


temperatura de la termocupla sea de 25 °C, siendo el voltaje de salida de la
misma a esa temperatura, 1 mV; entonces:

^OFFSET

250 . . _
= U

Por lo tanto la función de transferencia del AD595 quedaría:

AD595OUT = (KOUT + 11 //7) x 247.3

Debido a que la salida de voltaje de las termocuplas no es lineal con respecto a


la temperatura, y como los C.l. AD594 o AD595 amplifican linealmente la señal
compensada, las funciones de transferencia obtenidas se deben usar para
calcular los voltajes de salida reales. Recíprocamente, del voltaje de salida de
los C.i. AD594 y AD595 se obtiene el voltaje de las termocuplas:
78

AD594,

K OUT 2413

Que son justamente las ecuaciones que se utilizarán para obtener el voltaje de
las termocuplas, luego de convertir el voltaje de salida de los C.l. AD594/595 de
análogos a digitales, para posteriormente evaluarlos en el polinomio de
aproximación o linealización correspondiente de cada termocupla.

Como normalmente sucede, las salidas de los amplificadores están sujetas a


errores de calibración, ganancia y sensibilidad a la temperatura.

3.7.2 CIRCUITOS DE AMPLIFICACIÓN IMPLEMENTADOS

Para la implementación de los circuitos (Figuras 3.14 y 3.15) se utilizaron


Conectores Miniatura (macho y hembra), específicos para cada termocupla, pues
tienen los puntos de conexión fabricados de las mismas aleaciones metálicas de
las cuales están construidas las diferentes termocuplas. Estos conectores son
de diferentes colores, lo que permite identificar con mayor facilidad el tipo de
termocupla a la cual pueden conectarse, así: amarillos, tipo K; negros, tipo J,
violetas, tipo E; y, azules, tipo T. El conector macho se conectó directamente a
la termocupla, y el conector hembra forma parte del circuito de amplificación, que
se lo implemento en una pequeña tarjeta de circuito impreso que va dentro de un
cajetín telefónico, el cual fue adaptado para albergar esta tarjeta. Con esto se
consigue que el punto de conexión de la termocupla con el amplificador, sea
isotérmico, es decir que la juntura de referencia que es el punto donde los
terminales de la termocupla se conectan al circuito de amplificación, esté a la
misma temperatura del C.l. AD594/595 que es el que realiza la compensación de
juntura fría.

Aprovechando la opción de alarma de la que dispone el AD594/595, se ha


colocado un LED y una resistencia de limitación de corriente conectadas al pin
12, +ALM; y el pin 13, -ALM a tierra. Cuando el transistor interno se ponga en
conducción, al detectar uno o ambos hilos de la termocupla abiertos, el LED se
encenderá indicando esta condición. El cálculo de la resistencia se lo efectúa
considerando que por el LED debe circular una corriente de 10 mA y que el
voltaje de polarización directa del mismo, es de 1.2 V; también que el voltaje de
saturación del transistor interno es de 0.2 V; por tanto:
TERMOCUPLA TIPO

K <~

AMPLIFICACIÓN TERMOCUPLAS K y J

TERUOCUPt-A TIPO

ñ'gura 3. í4 Amplificación Termocuplas KyJ.


TERMOCUPLA TIPO

AMPLIFICACIÓN TERMOCUPLAS E y T

TEHMGCUPLA TIPO

Figura 3.15 Amplificación Termocuplas EyT.


81

y _ 77 _ T/ 1577 -1917 - 0 2 K
£ = KCC 1^ K^ = 13K———{±±L— = 1360 Q
/ 10 mA

En la práctica se colocó una resistencia de 1.5 KH, con la que se consigue una
corriente de 9 mA.

El conector del cajetín telefónico se utiliza para traer al circuito de amplificación,


el voltaje de polarización de + 15 VDC y la referencia de tierra GND, y para llevar
la señal de salida del amplificador OUT, y la señal de alarma +ALM, a través de
un cable telefónico de 4 hilos. La señal +ALM será utilizada por el pP para
conocer que uno de los hilos de la termocupla, o ambos, están abiertos, y por lo
tanto para no realizar la conversión análogo-digital, y dar una indicación de
termocupla abierta en el display. En las Figuras 3.14 y 3.15 se puede apreciar
e! color de cada hilo del cable telefónico que se ha usado para cada señal.

Como el C.I. AD595 viene diseñado para igualar las características de la


termocupla tipo K (chromel-alumel), se usa este chip con ese tipo de termocupla;
los terminales de la termocupla se conectan a los pines de entrada del chip, y
como éstos tienen polaridad, el positivo se conecta al pin 1, +1N, y el negativo al
pin 14, -IN¡ el fabricante recomienda que si la termocupla no está referida a tierra
en el punto de medición, como es nuestro caso, se conecte el terminal positivo
a tierra, como se ha hecho en el circuito. Se ha polarizado al chip con + 15 VDC)
y por ello se conecta el pin 7, -V, de fuente negativa a tierra. La salida
amplificada se obtiene uniendo los pines 8, FB (realimentación), y 9, VO (voltaje
de salida).

El amplificador para la termocupla tipo J (hierro-constantan), se lo implemento de


la misma forma que para la termocupla tipo K, con la diferencia que se usó el C.i.
AD594, que viene diseñado para igualar las características de este tipo de
termocupla.

Para e! circuito de amplificación de la termocupla tipo E (chromel-constantan), es


necesario realizar el proceso de recalibración que se analizó en el numeral
3.7.1.1. Aunque los dos C.I. AD594 y AD595 se pueden configurar para
acondicionar la salida de la termocupla tipo E, las características de esta
termocupla difieren menos de la termocupla tipo J, que de la tipo K (ver Figura
2.11), por esta razón se ha escogido el C.I. AD594 para efectuar la recalibración.

Se calculan los parámetros de la termocupla tipo E: la variación del voltaje de


salida para este tipo de termocupla entre O y 50 °C es de 3.047 mV, entonces el
coeficiente de temperatura TC es;
82

AJ/ 3'047 mV = 6094


A7 50 °e

La ganancia requerida para obtener 10 mV/°C a la salida sería:

*W _ 10 mVF = 164.1
TCE 60.94

El voltaje de compensación VOFFSET para obtener 250 mV a la salida, cuando la


temperatura de la termocupla sea de 25 °C, siendo el voltaje de salida de la
misma a esa temperatura, 1.495 mV; entonces:

_ AD594OUT
* OFFSET

VOFFSET
OFFSET = - 1-495 mV = 28.5

Por lo tanto la función de transferencia del AD594, después de realizar la


recalibración para la termocupla tipo E, quedaría:

AD594oar = (EOUT + 28.5 ¿iV] x 164.1

Recíprocamente, el voltaje de salida de la termocupla tipo E, como función del


voltaje de salida del C.l. AD594:

_ J . ~-'nriT —~ -
E OÜT = -^—- - 28.5
OÜT 164.1

Que es la ecuación que se utilizará para obtener el voltaje de la termocupla tipo


E, luego de convertir el voltaje de salida del C.l. AD594 recalibrado, de análogo
a digital, para posteriormente evaluarlo en el polinomio de aproximación o
linealización correspondiente a esta termocupla.

*' Mientras se realice el proceso de recalibración, es importante mantener al


dispositivo a una temperatura constante. En el circuito implementado (Figura
3.15), se ha colocado las resistencias variables de recalibración R1( R2 y R3 en
unos pequeños zócalos, de tal forma que se las pueda retirar fácilmente cuando
se desee realizar el proceso de recalibración.

En primer lugar, se mide la temperatura del C.L AD594, uniendo las dos entradas
(+1N y -IN) y conectándolas a tierra, y conectando FB a VO. En esta condición
83

el AD594 funciona como un termómetro de °C, cuyo voltaje de salida es


proporcional a la temperatura del chip con una relación de 10 mV/°C. Midiendo
este voltaje entonces, se puede conocer la temperatura del chip. El voltaje
medido fue de 240 mV, y por tanto la temperatura 24 °C.

Luego se mide el voltaje en -T, pin 5, con un voltímetro de alta impedancia, para
aislar la capacitancia del punto de medición (el voltímetro usado tiene una
impedancia de 10 MQ). El voltaje del pin -T, a la temperatura medida, es de 8.3
mV. Para ajustar la compensación del C.I. AD594 para una termocupla tipo E,
una resistencia, R lt se ha colocado entre +C y +T, pines 2 y 3, para elevar el
voltaje de -T en una relación equivalente a la relación de las sensibilidades de
las dos termocuplas. Esta relación es:

- TC* - 60 - 94f* _ i 1R
7C, 51.7 i¿V

Multiplicando el voltaje inicial medido en -T por r, se determina


experimentalmente el valor de Rn requerido para elevar el voltaje de -T a ese
nivel.

= 9.8

El valor de Rn encontrado para elevar -T a 9.8 mV es de 1 .63 K£l

El punto del cero diferencial debe ahora ser desplazado a 0°C. Para ello se
multiplica el voltaje de salida original en VO por r, y se lo eleva a ese valor
conectando una resistencia, R2, entre -T y -C, pines 5 y 6, y cuyo valor se
determina experimentalmente.

VO1 = (ra)(l.!S) = ( 2 4 0 / w 7 ) ( l . l 8 ) = 283 mV

El valor de R2 encontrado para elevar VO a 283 mV es de 216 KÍL

Finalmente, la ganancia debe ser reajustada, de tal manera que el voltaje de


salida VO indique nuevamente la temperatura del chip. Para ello se aumenta una
^ resistencia R3, entre FB y -T, pines 8 y 5. VO entonces, debe regresar a la
*^' lectura inicial de 240 mV. El valor de R3 encontrado para conseguir los 240 mV
a la salida es de 246 KH. Con la conexión de R3l que está en paralelo con la
resistencia de realimentación interna del chip, se consigue modificar la ganancia
del amplificador a 164.2, calculada para la termocupla tipo E. El circuito final se
lo puede observar en la Figura 3.15.
84

Se calcula ahora los parámetros de la termocupla tipo T (cobre-constantan): la


variación del voltaje de salida para este tipo de termocupla entre O y 50 °C es de
2.035 mV, entonces el coeficiente de temperatura TC es:

TCT = -¥- = 2'035 = 40.7


T AT 50 °C

La ganancia requerida para obtener 10 mV/°C a la salida sería:

GT = V^ = 10 mVl°C = 245.7
T TCT 40.7 ¿/7/°C

Si se compara estos valores con los obtenidos para la termocupia tipo K: TCK -
40.44 |j.V y GK - 247.3, se nota que existe una similitud bastante grande de los
voltajes de salida de estas dos termocuplas en el rango O a 50 °C. Por esta razón
el C.l. AD595, que iguala las características de la termocupla tipo K, se puede
conectar directamente a la termocupla tipo T, sin que sea necesario realizar el
proceso de recalibración. Dentro del rango de temperatura ambiente de O a 50
°CJ el AD595 presentará un error de calibración a la salida de 0.2 °C si se lo
conecta a una termocupla tipo T. Este error se debe a que la compensación de
la temperatura del hielo, viene calibrada de fábrica para la salida de la
termocupla tipo K a 25 °C. Por lo tanto, para encontrar el voltaje de la termocupla
tipo T, se debe aplicar la función de transferencia del C.l, AD595, como si tuviese
conectada una termocupla tipo K, es decir:

_ AD595OUT
í our
OÜT —- — 11

En consecuencia, luego de realizada la conversión análogo-digital del voltaje de


salida del AD595, se encuentra el voltaje de la termocupla tipo T, aplicando la
ecuación anterior y, finalmente se evalúa este valor en el polinomio
correspondiente a esta termocupla para obtener la temperatura que se desea
medir. Debido a las no linealidades relativamente grandes asociadas con la ter-
mocupla tipo T, la salida del C.l. AD595 se desviará notablemente de la salida
deseada de 10 mV/°C; sin embargo, la compensación de juntura fría en el rango
de temperatura ambiente de O a 50 °C, se mantendrá segura.

De todas maneras, en el circuito impreso del amplificador de la termocupla tipo


T, se ha dejado las conexiones necesarias para efectuar el proceso de
recalibración, aumentando las resistencias requeridas, si así se desea (Figura
3.15).
85

3.8 MULTIPLEXADO DE LOS VOLTAJES DE LAS TERMOCUPLAS

Los voltajes amplificados y compensados de los 4 tipos de termocuplas, deben


ingresar al conversor análogo-digital en una forma secuencia!, es decir uno por
uno; para que esto sea posible se necesita de un multiplexor análogo mediante
el cual se pueda ir seleccionando cada una de las señales análogas provenientes
de los amplificadores de cada termocupla.

Para este propósito se ha utilizado el C.l. AD7501 de Analog Devices que es un


Multiplexor Análogo de 8 canales con tecnología CMOS, que conmuta 1 de 8
entradas, a una salida común dependiendo del estado de las 3 líneas de
direcciones binarias y de la entrada de habilitación. En la Figura 3.16 se
presenta un diagrama de bloques de este C.l.

Figura 3.16 El C.L AD7501.

Entre sus principales características se tiene:

- Voltajes Máximos de Polarización:

VDD -GND + 17 V

Rango de Voltaje Máximo en las Entradas Digitales:


86

VDDaGND

- Interfaz Directa con Tecnologías TTL, DTL o CMOS

- Voltaje Máximo entre los Terminales de Entrada:

25 V

En este caso se ha polarizado al C.l. AD7501 con ± 15 VDC; las entradas digitales
de selección estarán manejadas con niveles de voltaje TTL; y, como las entradas
análogas están conectadas a las salidas de los amplificadores de las
termocuplas que generan 10 mV/°C, y el equipo ha sido diseñado para medir
temperaturas de hasta 1.000 °C, en el caso extremo el voltaje de salida de los
amplificadores serfa de 10 V; portante, no se sobrepasa los rangos de operación
máximos del multiplexor. Más adelante se describirá el circuito implementado.

El funcionamiento del C.l. AD7501 se resume en la Tabla 3.8.

Tabla 3.8 Multiplexor AD7501

ENTRADAS SALIDA
(ENTRADA
A2 Ai Ao EN SELECCIONADA)
0 0 0 1 Si
0 0 1 1 S2
0 1 0 1 S3
0 1 1 1 S4
1 0 0 1 Ss
1 0 1 1 Se
1 1 0 1 87
1 1 1 1 S8

X X X 0 NINGUNA

Observando la tabla se nota que si la entrada de habilitación EN está en 0L no


se selecciona ninguna de las entradas, sin importar el estado de las líneas de
selección A0) A-i y A2; en cambio, cuando la línea de habilitación EN está en 1L|
la entrada que se conmute a la salida, dependerá de la combinación de las 3
líneas de selección.
87

En la Figura 3.17 se muestra el circuito implementado para el multiplexado de las


entradas. En el constan 4 cajetines telefónicos a los que se conectan los cables
telefónicos que provienen de los amplificadores de cada termocupla. A estos
cajetines telefónicos se los ha denominado PÓRTICO O a PÓRTICO 3, y a cada
uno de ellos se puede conectar el cable telefónico que provenga del amplificador
de cualquier tipo de termocupla; sin embargo, al encender el equipo, se debe
informarle, a través del teclado, el tipo de termocupla que se ha conectado a
cada pórtico. La forma de ingresar esta información al equipo, se analizará en
detalle en el siguiente capítulo que cubre todo lo relacionado con la
programación del |iP Z-80.

Los puntos de conexión de cada cajetín telefónico que traen las señales OUT y
+ALM de cada amplificador, se conectan a un zócalo de 14 pines en el que se
aloja un conector DIP ligado a un cable tipo fíat, que lleva estas señales al
conector de la tarjeta principal; en la Figura 3.17 se pueden observar los dos
conectores, con el número de pin que corresponde a cada señal. Los hilos de
alimentación + 15 VDC y GND se han interconectado entre los 4 cajetines, y se
utiliza un punto de conexión para cada uno de estos dos hilos en los cajetines
telefónicos. La alimentación de - 15 VDC necesaria para el circuito AD7501,
ingresa a la tarjeta principal a través del pin 1 del conector de la misma.

Las señales OUT0 a OUT3 provenientes de cada pórtico, ingresan a las entradas
Si a S 4 del multiplexor análogo AD7501 respectivamente, para que sean
seleccionadas secuencialmente de acuerdo al estado de las 3 líneas de
selección AQ, A-i y A2 y de la entrada de habilitación EN, La salida del multiplexor
análogo se conecta al circuito muestreador-retenedor que es uno de los
elementos a través de los cuales se realizará la conversión análogo-digital.

Como se había mencionado anteriormente, las señales +ALM disponibles en los


amplificadores de las termocuplas, a más de encender el LED de alarma en cada
uno de ellos, ingresará al [iP para informarle de esta condición, de manera que
no realice ía conversión A/D y de una indicación de termocupla abierta en el
display. Como esta señal tiene niveles de voltaje entre O y + 15 VDCj y el jjP Z-80
y sus periféricos trabajan con niveles de voltaje TTL, ha sido necesario
transformarla a estos niveles, utilizando el C.I. DS1489 que es un cuádruple
receptor de línea que tiene 4 inversores que aceptan voltajes de entrada de hasta
± 30 V, y entregan voltajes de salida en niveles TTL; además requieren un voltaje
de polarización de + 5 VDC. Cualquier característica adicional de este C.I. se la
puede revisar en el Apéndice C.

Debido a que la salida +ALM de los C.I. AD594/595 tienen conectados un LED
y la resistencia de limitación de corriente, si se conecta esta señal directamente
a la entrada del C.I. DS1489, se tendría un camino para la corriente, lo que
permitiría que el LED se encienda. En la Figura 3.18 encuentra esta conexión,
*'-

Am - Amo nito

Ro - Rofo
Ve - Vwds
N* . Veya

MULTIPLEXADO ENTRADAS

Figura 3.17 Muttiplexado Entradas.


89

donde aparecen el transistor de salida del C.l. AD594/595 conectado a la


resistencia del LED de alarma, y el circuito de una compuerta del C.l. DS1489.

-MSVdc

Figura 3.18 Conexión de la señal +ALM.

Cuando el transistor del C.l. AD594/595 esté abierto, lo que significa que no
existe condición de alarma, el LED debería permanecer apagado, pero como
existe un camino para la corriente a través del circuito de entrada.de la
compuerta del C.l. DS1489, el LED se va a encender sin existir condición de
aiarma. Se calcula esta corriente, sabiendo que el transistor del C.l. AD594/595
está abierto; que el transistor Qi de la compuerta está en conducción y que por
tanto el voltaje base-emisor (VBE) del mismo es de 0.65 V; y, por último que el
voltaje de conducción del LED es de 1,2 V; entonces:

V _ 77 _77 15 V - 1.2 F - 0.657


r , ' CC ¥ LED y BE
= 239 mA
1.5 KO. + 4KO.

Esta corriente es suficiente para que el LED se encienda, con baja intensidad si,
pero podría ser causa de confusiones; por esta razón se conecta una resistencia
R' en serie, como se puede apreciaren la Figura 3.19, para limitar esta corriente
de manera que el LED se mantenga apagado.

Esta resistencia disminuirá por supuesto el voltaje de entrada a la compuerta VIN)


y por tanto deberá tener un valor tal que no disminuya este voltaje más allá del
voltaje de umbral en alto (Input High Threshold Voltage VTH) especificado para
las compuertas del C.l, DS1489, y que es de 1.5 V máximo, lo que significa que
mientras V|N sea mayor a 1.5 V, este voltaje será considerado como un IL-

De la Figura 3.19 se encuentra que:


90

V _ Y _ 77
y CC * LED v BE

R + R1 + £,

— í> T i T/
- *!../! + Ks

+15 Vdc

Figura 3.19 Conexión de la señal +ALM añadida R'.

Reemplazando l-i en la segunda ecuación, se podrá encontrar el valor de R' que


garantice que V!N no sea menor que el voltaje de 1.5 V que se ha mencionado.

y _ y - v \ CC ' LED ' BE \ 77


~r i
í BE
R + R 1 + Rt

De donde se puede despejar R':

T/ _ T/
' IN * BE

Y, reemplazando los valores respectivos:

42§ra(l5F-1.2F-0.65F) + (l.5 JCQ + 4 JSTQ )( 0.65 F-1.5 F )


1.5 F - 0.65 F

= 56
91

En el circuito implementado se utilizó una resistencia de 47 KQ, con lo cual se


tiene una corriente I-, de:

CC *LED *BE 15 V - 1.2 V - 0.65 V


R + R< + R 1.5 KQ + 47 KQ, + 4

Que.es lo suficientemente baja como para que el LED no se encienda.

Se calcula ahora el voltaje de entrada a la compuerta VÍN:

Vm = ^ . / j + VBE = (4KQ,)(Q.25mA) + 0.65 V = 1.65 V

Que está por encima del voltaje de entrada de umbral en alto VTH especificado
por el fabricante para los inversores del C.l. DS1489.

Cuando el transistor del C.L AD594/595 se ponga en conducción, la señal +ALM


tendrá un voltaje de 0.2 V que corresponde al voltaje de saturación del transistor.
Este valor es menor que el voltaje de entrada de umbral en bajo VTL (Input Low
Threshold Voltage) especificado para el C.l. DS1489 y que es de 0.75 V mínimo.

INRJTS SELECT
S. / \ C
ve:c 4 5 í5 7 A

s]—m-ft í]
[T Rsi R?l RT| Rol [TI

D4 D5 D6 D7 A B

D2 D1 D0 Y W S

I I
U Lí
3 2 1 3 Y W S TROBE GND
s ** /

INFUTS OUTRJTS

Figura 3.20 El C.l. SN74151A.

De la misma forma como las señales OUT de los 4 amplificadores ingresan al


multiplexor análogo para ser seleccionadas secuencialmente, las señales +ALM
deben también ingresar a un multiplexor, pero en este caso digital, que permita
seleccionarlas en forma secuencial. Por esta razón las 4 salidas de los
92

inversores del C.I. DS1489, que equivalen a las señales +ALM de los
amplificadores pero invertidas y con niveles TTL, se conectan al C.I. SN74151A
que es un multiplexor digital que selecciona 1 de 8 entradas dependiendo del
estado de las 3 líneas de selección binarias A, B y C y de la línea de habilitación
STROBE. El diagrama de conexiones se lo tiene en la Figura 3.20.

El funcionamiento de este C.I. se resume en la Tabla 3.9.

Tabla 3.9 Multiplexor SN74151A

ENTRADAS SALIDAS

SELECCIÓN STROBE
Y W
C B A S

X X X H L H
L L L L DO DO
L L H L DI DI
L H L L D2 D2
L H H L D3 D3
H L L L D4 D4
H L H L D5 D5

• H H L L D6 D6

H H H L D7 D7

Entonces las señales +ALM0 a +ALM3 que ingresan desde los pórticos O a 3 van
conectadas a las entradas D0 a D3 del multiplexor digital SN74151A.

Las líneas de selección del multiplexor análogo A0l A-i y A2 se interconectan con
las del multiplexor digital A, B y C en ese orden, con el objeto de conseguir que
cuando se seleccione la salida del amplificador de cualquier pórtico, quede
también seleccionada la salida +ALM del mismo pórtico.

Las líneas de selección de los 2 multiplexores van a ser manejadas por el [iP a
través del PIÓ (controlador paralelo de entrada-salida), pero debido a que no
existían las suficientes líneas necesarias disponibles en este chip, pues la
mayoría de ellas se utilizan en el circuito de conversión análogo-digital que se
analizará en el siguiente numeral, se recurrió al C.I. SN74LS373 que es un íatch
(retenedor) de 8 líneas, con una entrada de habilitación (G), y control de salidas
(OC) para alta impedancia. En ia Tabla 3.10 se resume el funcionamiento de
este C.I.
93

Cuando la línea OC está en bajo (0L) el circuito funciona normalmente, cuando


esta línea está en alto (1L) las salidas pasan al estado de alta impedancia; por
esta razón, a esta línea se la ha conectado a tierra (0L) para que las salidas del
C.l. 74LS373 siempre presenten un estado definido en las líneas de selección de
los dos multiplexores que es a donde están conectadas (Figura 3.17). Las sali-
das Qo a Q2 de este C.L se conectan a las líneas de selección A0 a A2 del
multiplexor análogo y a las líneas de selección A, B y C del multiplexor digital,
con lo que se conseguirá seleccionar las señales OUT y +ALM del mismo pórtico.
La salida Q3 se conecta a la línea de habilitación STROBE del multiplexor digital,
y la salida Q4 a la línea de habilitación G del multiplexor análogo.

Tabla 3.10 Retenedor (Latch) de 8 líneas SN74LS373

CONTROL SALIDAS HABILITACIÓN ENTRADAS SALIDAS


(OC) (G) Do a D? Qo a Qr

L H H H
L H L L
L L X Qo*
H X X Z+

11 Estado anterior
*• Alta Impedancia

Las entradas D0 a D4 del C.l. 74LS373 están conectadas a las líneas PB0 a PB4
del pórtico B del PIÓ, respectivamente. Como estas líneas también se conectan
al conversón digital-análogo, cumplen con una doble función: la de manejar el
conversón por un lado, y los multiplexores análogo y digital por el otro. Esto se
logra con la ayuda del circuito retenedor (latch) de la siguiente manera; cuando
la entrada de habilitación del latch G, que está conectada a la línea PA6 del
pórtico A del PÍO, se ponga en un nivel bajo, los niveles que existan en las
entradas D del latch, se copiarán a las salidas Q del mismo; y, cuando G se
ponga en un nivel alto, quedarán retenidos los niveles anteriores de las entradas,
sin importar los cambios de nivel que se produzcan en ellas. De esta forma el
jiP, a través del PIÓ y del latch, podrá dejar habilitados los multiplexores y
seleccionadas en ellos cualquiera de las salidas OUT y +ALM, luego de lo cual
podrá utilizar los pórticos del PIÓ en otras tareas como la de la conversión
análogo-digital.

Así como la salida del multiplexor análogo, que trae las salidas OUT de los
amplificadores de las termocuplas, está conectada a la entrada del circuito
muestreador-retenedor, para que sea convertida a digital, la salida del multiplexor
digital está conectada a la línea PA7 del PIÓ, que debe previamente ser
programada como una entrada, para que sea leída por el jjP. En el siguiente
numeral, en el que se describirá el circuito para la conversión anáiogo-digital,
aparecerá la conexión completa del PIÓ, con lo que se comprenderá de mejor
manera la operación completa del mismo.

3.9 CONVERSIÓN ANALOGO-DIGITAL

Para la conversión análogo-digital se han utilizado los siguientes elementos: un


Controlador Paralelo de Entrada/ Salida PIÓ (Parallel Input/Output Controller),
que es un periférico de la familia del JJ.P Zilog Z-80; un conversor digital-análogo
de 10 bits DAC1000, un circuito muestreador/retenedor (sample and hold) LF398,
un comparador de voltaje LM311, un amplificador operacional LF356 y un circuito
para referencia de voltaje de precisión LH0070, todos ellos de la casa National
Semiconductor. A continuación entonces, se describen las características más
importantes de cada uno de ellos.

3.9.1 CONTROLADOR PARALELO DE ENTRADA SALIDA (PIÓ)

Es un dispositivo programable conformado con dos pórticos paralelos


compatibles con niveles de voltaje TTL, que permiten interconectar al |_iP Z-80
con cualquier dispositivo periférico sin circuitos lógicos adicionales. La
transferencia de datos entre el \iP y los dispositivos periféricos puede efectuarse
bajo el control de interrupciones, ya que la lógica interna del PIÓ permite un uso
eficiente de las capacidades de interrupción del Z-80. En el PIÓ también se
incluye toda la lógica necesaria para implementar la estructura de interrupciones
en cadena, que se describió al analizar el ¡j.P Z-80. Otra característica del PÍO
es la habilidad de interrumpir al JJ.P cuando ocurra una condición de estado
específica en el dispositivo periférico.

El PIÓ se conecta a los dispositivos periféricos a través de dos pórticos de


entrada/salida independientes y de propósito genera! designados como Pórtico
A y Pórtico B. Cada pórtico tiene 8 bits de datos y dos señales de intercambio
(handshake), READY y STROBE, que controlan la transferencia de datos. La
salida READY indica al dispositivo periférico que el pórtico está listo para la
transferencia de datos. STROBE, en cambio, es una entrada desde el dispositivo
periférico que indica cuando una transferencia de datos ha ocurrido.
95

3.9.1.1 MODOS DE OPERACIÓN

Los dos pórticos del PÍO pueden ser programados para operar en 4 modos;
salida por byte (Modo 0), entrada por byte (Modo 1), entrada/salida por byte
(Modo 2) y entrada/salida por bit (Modo 3).

En el Modo O, el Pórtico A o el Pórtico B pueden ser programados para salida de


datos. Ambos pórticos tienen registros de salida que son direccionados
individualmente por el ¡iP. Cuando los datos se escriben en uno de los pórticos,
la salida READY se activa indicando al dispositivo externo que los datos están
disponibles en ese pórtico y que está listo para transferirlos. Después de
realizada la transferencia, el dispositivo externo responde activando la entrada
STROBE, que genera una interrupción, siempre que estén habilitadas.

En el Modo 1, el Pórtico A o el Pórtico B pueden ser configurados en modo de


entrada. Cada pórtico tiene un registro de entrada direccionado por el pP.
Cuando el jj,P lee los datos desde un pórtico, el PÍO activa la señal READY que
es detectada por el dispositivo externo, el mismo que coloca los datos en las
líneas del PIÓ, activa la línea STROBE con lo cual el pórtico retiene los datos en
el registro de entrada, desactiva la señal READY, y produce una interrupción, si
están habilitadas.

El Modo 2 es bidireccional y usa el Pórtico A más las señales de intercambio


(handshake) y de interrupciones de ¡os dos pórticos. El Pórtico B se debe
programar en Modo 3, y todas sus líneas deben ser desactivadas (masked off).
En operación, el Pórtico A se usa para entrada y salida de datos. La operación
de salida es similar al Modo O excepto que los datos están disponibles en las
líneas del Pórtico A solamente cuando la línea STROBE de este pórtico está en
un nivel bajo. Para entrada de datos, la operación es similar al Modo 1, excepto
que se usa las señales de intercambio (handshake) y las interrupciones del Pórti-
co B, si están habilitadas.

Ambos pórticos pueden ser usados en Modo 3. En este modo, los bits
individuales se definen como bits de entrada o de salida. Esto proporciona hasta
8 bits separados, individualmente definidos para cada pórtico.. Durante la opera-
ción, las señales READY y STROBE no se usan. En su lugar, una interrupción
se genera si la condición de una entrada cambia, o si todas las entradas
cambian. Los requerimientos para generar una interrupción se definen durante
la operación de programación: el nivel activo puede ser especificado como Alto
(High) o como Bajo (Low), y la condición lógica como: una entrada activa (OR),
o todas las entradas activas (AND). Por ejemplo, si el pórtico se programa para
entradas activas en Bajo, y la función lógica es AND, entonces todas las entradas
en ese pórtico deben ir a un nivel Bajo para generar una interrupción. Los bits
definidos como salidas son controlados por el jj,P y se puede escribir en eJJos en
96

cualquier instante. Para la generación de interrupciones, a cada bit definido


como una entrada se le puede poner una máscara (masked off) con el objeto de
que no intervenga en la palabra de interrupción. Como las líneas de intercambio
(handshake) no se usan en el Modo 3, la línea READY se mantiene en Bajo, y la
línea STROBE se deshabilita. Cuando se usan las interrupciones del PIÓ, el
modo de interrupciones de! Z-80 se debe establecer en el Modo 2.

3.9.1.2 DESCRIPCIÓN DE PINES

En la Figura 3.21 se observa la distribución de pines del PIÓ. La función de la


señal que corresponde a cada uno de ellos es la siguiente:

A0-A7. Bus de datos del Pórtico A (bidireccional, 3 estados). Este bus de 8 bits
transfiere datos, estados, o información de control entre el Pórtico A del PIÓ y un
dispositivo periférico. AQ es el bit menos significativo.

Z-80 PIÓ
19
20 DO 15
1
D1 PAO 14
40 D2 PA1 13
BUS DE 39 D3 PA2 12
DATOS 38 D4 PA3 10
3 D5 PA4 9 PÓRTICO
2 D6 PA5 8
D7 PAG 7
23 PA7
24 I NT 18
CONTROL DE [
INTERRUPCIONES \L DEL 22 I El ARDY 3 16
IEO AS7B
A
| ' 35° CE 27
36 RD PBO 28
37p
!ORQ PB1 29
M1 PB2 30
PIÓ PB3
6 31
B/ASEL PB4 32 PÓRTICO
5 PB5 33
C/D SEL PB6 34
25 PB7
•CLK 21
26 BRDY 317
11 +5V BSTB
GND

Figura 3.21 Controlador Paralelo de Entrada/Salida (PIÓ).

ARDY. Registro A listo (salida, activa en alto). El significado de esta señal


depende de! modo de operación seleccionado para el Pórtico A como sigue:

Modo de Salida. Esta señal se pone activa para indicar que el registro de salida del Pórtico A ha sido cargado y que su
bus de datos está estable y lista para la transferencia al dispositivo periférico.
97

Modo de Entrada. Esta señal se activa cuando el registro de entrada del Pórtico A está vacío y listo para aceptar datos
desde el dispositivo periférico.

Modo Bidireccional. Esta señal se activa cuando los datos están disponibles en el registro de salida del Pórtico A para
transferirlos al dispositivo periférico. En este modo, los datos no se colocan en el bus de datos del Pórtico A, a menos
que la señal ASTB esté activa.

Modo de Control. Esta señal se deshabilita y se forza a un nivel bajo.

ASTB. Pulso de conocimiento del Pórtico A desde el dispositivo periférico


(entrada, activa en bajo). El significado de esta señal depende del modo de
operación seleccionado para el Pórtico A como sigue:

Modo de Salida. El flanco positivo de esta señal es generado por ei dispositivo periférico para indicar la recepción de
los datos que estuvieron disponibles en el pórtico del PIÓ.

Modo de Entrada. Esta señal es generada por el periférico para cargar los datos desde el dispositivo periférico en el
registro de entrada del Pórtico A. Los datos se cargan en el PÍO cuando esta señal está activa.

Modo Bidireccional. Cuando esta seña! está activa, los datos desde el registro de salida del Pórtico A se cargan en la
barra de datos bidireccional del Pórtico A. El flanco positivo de esta señal reconoce la recepción de los datos.

Modo de Control. Esta señal se deshabilita internamente.

B0-B7. Bus de datos del Pórtico B (bidireccional, 3 estados). Este bus de 8 bits
transfiere datos, estados, o información de control entre el Pórtico B y un disposi-
tivo periférico. La barra de datos del Pórtico B puede suministrar 1.5 mA a 1.5
V para manejar transistores Darlington. B0 es el bit menos significativo.

BRDY. Registro B listo (salida, activa en alto). Esta señal es similar a ARDY,
excepto que en el modo Pórtico A bidireccional esta señal está en un nivel alto
cuando el registro de entrada del Pórtico A está vacío y listo para aceptar datos
desde el dispositivo periférico.

BSTB. Pulso de conocimiento del Pórtico B desde el dispositivo periférico


(entrada, activa en bajo). Esta señal es similar a ASTB, excepto que en el modo
Pórtico A bidireccional esta señal habilita la transferencia de datos desde el
dispositivo periférico al registro de entrada del pórtico A.

B/A. Selección de Pórtico A o B (entrada, nivel Alto = B). Este pin define qué
pórtico es accesado durante una transferencia de datos entre el ¡aP y el PIÓ. Un
nivel Bajo en este pin selecciona el Pórtico A; un nivel Alto selecciona al Pórtico
B. A menudo el bit Ao del bus de direcciones del ¡aP se usa para esta función de
selección.

CID. Selección de Control o de Datos (entrada, nivel Alto = Comando). Este pin
define el tipo de transferencia de datos que se va a efectuar entre el fiP y eí PÍO.
98

Un nivel alto en este pin durante una escritura del jiP al PIÓ causa que el bus de
datos del jjP sea interpretado como un comando al pórtico seleccionado por la
línea de selección B/A. Un nivel bajo en este pin significa que el bus de datos del
fj,P se está usando para transferir datos entre el ¡iP y el PÍO. A menudo el bit A-,
de la barra de direcciones del jiP se usa para esta función.

CE. Habilitación (entrada, activa en bajo). Un nivel bajo en este pin habilita al
PIÓ para aceptar el ingreso de comandos o datos desde el \*P durante un ciclo
de escritura o la transmisión de datos hacia el ¡iP durante un ciclo de lectura.
Esta señal se decodifica generalmente de 4 direcciones de pórticos de E/S para
los Pórticos A y B, datos y control.

CLK. Reloj del sistema (entrada). El PIÓ usa el mismo reloj del sistema del ¡aP
Z-80 estándar de fase única.

D0-D7. Bus de Datos del PIÓ (bidireccional, 3 estados). Este bus se usa para la
transferencia de todos los datos y comandos entre el fiP y el PIÓ. D0 es e! bit
menos significativo.

IEI. Habilitación de interrupciones (entrada, activa en alto). Esta señal es usada


para formar un sistema de interrupciones en cadena, por prioridades, cuando se
esté usando más de un dispositivo que maneje interrupciones. Un nivel alto en
este pin indica que ningún dispositivo de prioridad más alta está siendo servido
por una rutina de servicio de interrupciones del p,P.

IEO. Habilitación de interrupciones (salida, activa en alto). La señal IEO es la


otra señal requerida para formar un esquema de interrupciones en cadena, por
prioridades. Esta señal se pone en alto solamente si la entrada IEI está en alto
y, el JJ.P no está atendiendo una interrupción de este PIÓ. Entonces esta señal
bloquea a los dispositivos de prioridad más baja para que produzcan una
interrupción mientras un dispositivo de prioridad más alta está siendo atendido
por una rutina de servicio de interrupciones del JJ.P.

INT. Pedido de Interrupción (salida, colector abierto, activa en bajo). Cuando


INT está activa el PIÓ está pidiendo la atención a una interrupción al JJ.P.

IORQ. Pedido de Entrada/Salida (entrada desde el ¡iP, activa en bajo). IORQ


se usa conjuntamente con B/A, C/D, CE y RD para transferir comandos y datos
entre el jj,P y el PÍO. Cuando CE, RD e IORQ están activas, el pórtico
direccionado por B/A, transfiere datos al pP (una operación de lectura).
Contrariamente, cuando CE e IORQ están activas pero RD no, al pórtico
direccionado por B/A se están escribiendo datos o información de control desde
el (j,P, de acuerdo con lo especificado por C/D. También, si IORQ y M1 están
activos simultáneamente, el \iP está reconociendo una interrupción; el pórtico
99

que produjo la interrupción automáticamente coloca su vector de interrupción en


la barra de datos del joP si es el dispositivo de más alta prioridad que pide la
interrupción.

M1. Ciclo de Máquina (entrada desde el ¡jP, activa en bajo). Esta señal es
usada como un pulso de sincronismo para controlar algunas operaciones internas
del PIÓ. Cuando las señales M1 y RD están activas, el fjP está trayendo
(fetching) una instrucción desde memoria. Contrariamente, cuando M1 e IORQ
están activas, el jjP está reconociendo una interrupción. Adicionalmente, M1
tiene otras dos funciones relacionadas con el PIÓ: sincroniza la lógica de
interrupciones del PIÓ; y, cuando M1 ocurre sin una señal RD o IORQ activas,
el PIÓ es reinicializado.

RD. Ciclo de Lectura (entrada desde el |iP, activa en bajo). RD se usa con B/A,
C/D, CE e IORQ para transferir datos desde el jiP al PIÓ. El PIÓ no recibe una
señal específica de escritura; ésta se genera internamente en ausencia de una
señal RD activa.

La programación del PÍO será analizada en el siguiente capítulo donde se cubre


todo lo relacionado con el desarrollo del programa para el funcionamiento del
equipo.

3.9.2 CONVERSOR DIGITAL-ANÁLOGO DAC1000

El C.l. DAC1000 es un Conversor Digital-Análogo de 10 bits con tecnología


CMOS/S¡-Cr muy avanzado y exacto, diseñado para interconectarse directamente
con microprocesadores de uso extendido como el 8080, el 8048, el 8085, el Z-80
y otros. Este conversor digital-análogo que lo abreviaremos DAC por sus siglas
en inglés, puede aparecer como una localidad de memoria o un pórtico de E/S
para el ¡aP, y no se necesita lógica de interconexión adicional.

Este C.l. combinado con un amplificador externo y un circuito de referencia de


voltaje se puede usar como un DAC estándar para muy variadas aplicaciones, ya
que su error de linealidad es esencialmente independiente del voltaje de
referencia. Puede recibir todos los 10 bits en una sola transferencia, o como dos
palabras de 8 bits cada una; el formato de los datos puede ser; justificado a la
derecha (right justified) o justificado a la izquierda (left justified). La circuitería
análoga interna consiste de una escalera de resistencias muy finas R-2R (R-2R
ladder) de Silicio-Cromo. El voltaje de referencia puede variar entre - 10 Va +
10 V.
100

En la Figura 3.22 se puede apreciar un diagrama de bloques del C.l. DAC1000,


así como la distribución de pines. A continuación se describe la función de cada
una de las señales que corresponden a cada pin.

CS. Selección del chip (activa en bajo). En su estado activo posibilita la


operación del pin WR1,

DAC 1000


*
*• 10 -BIT
10 -BIT
DAC MULTIPLYING

i
INPUT
LATCH REGISTER e D/A
e CONVERTER
*
k

—O 16 Rfb

1st
f t
2nd XFER
t
BYTE BYTE STROBE
<J— 24 VCC
STROBE STROBE CONTROL LOGIC
<]— 12 GND
*
L V S V /

1 3 5 6 4
í í
2 I 23

CS WR1 WR2 XFER BYTE1/ LJ/ NC


BYTE2 RJ

Figura 3.22 Conversor Digital-Análogo DAC1000.


9

WR1. Escritura (activa en bajo). Si !a señal WR1 está activa, permite cargar los
bits digitales de datos (Dl0-Dlg), en el circuito retenedor de entrada (input latch).
Aquí los datos se retienen cuando WR1 pasa a un nivel alto. El circuito
retenedor de entrada de 10 bits está separado en dos retenedores; uno de ellos
retiene 8 bits y el otro 2 bits. El pin de control BYTE1/BYTE2 se usa para
seleccionar los dos retenedores de entrada cuando BYTE1/BYTE2 = 1 o, para
sobrescribir el retenedor de entrada de 2 bits cuando BYTE1/BYTE2 = 0.

WR2. Escritura extra (activa en bajo). WR2 en su estado activo se usa para
cargar los datos desde el retenedor de entrada al registro interno del DAC
mientras el pin XFER esté en un nivel bajo. Los datos en el registro interno del
DAC se retienen cuando WR2 pasa al nivel alto.

BYTE1/BYTE2. Control de secuencia de bytes. Cuando este control está en un


nivel alto, todos los 10 bits del retenedor de entrada se habilitan. Cuando está
en un nivel bajo, solamente 2 bits del retenedor de entrada se habilitan y esos 2
bits se sobrescriben cuando se carga o escribe el segundo byte.
101

XFER. Seña! de Transferencia de Control (activa en bajo). Esta señal,


combinada con otras, se usa para transferir los 10 bits de datos que están
disponibles en el retenedor de entrada, al registro interno del DAC.

LJ/RJ. Justificación a la izquierda/Justificación a la Derecha. Cuando LJ/RJ


tiene un nivel alto, el formato de ingreso de datos se establece justificado a la
izquierda. Cuando LJ/RJ tiene un nivel bajo, el formato de ingreso de datos se
establece justificado a la derecha. Las dos posibilidades de formatos de datos
se muestran en la Figura 3.23, donde se puede notar que la justificación de los
datos depende de cómo la palabra de datos de 10 bits está localizada en el
registro de 16 bits del jiP. En cualquier caso hay un excedente de 6 bits que
aparecen en una condición no importa (X).

El conversor carga los 10 bits en el primer ciclo de escritura; el grupo particular


de 2 bits se sobrescribe en el segundo ciclo de escritura, dependiendo de la
justificación de los datos. Esto requiere que el primer ciclo de escritura contenga
el byte denominado LO para todas las opciones con justificación a la derecha.
Para todas las opciones con justificación a la izquierda, en cambio, el primer ciclo
de escritura debe contener el byte denominado Hl.

DI0-DI9. Entradas Digitales. DI0 es eí bit menos significativo (LSB) y DI9 es el bit
más significativo (MSB).

w
8-BIT BYTE 8-BIT BYTE w
^ ^

REC3ISTRCD CO Ni PA J\BFUt DE 10 E3ITS w


U
Hl BYTE t LO BYTE
^

MSB «— - JlJSTIFI :ACIC NIZQ UIERC A - —> LSB X X X X X X


LJ
Hl BYTE w 4 LO BYTE w
^ ^

X X X X X X MSB •4— — J JSTIF CACICDNDERECH A — —> LSB

Figura 3.23 Justificación Izquierda y Derecha.

IOUTI- Salida de Corriente 1 del DAC. loun es máxima para un código digital de
entrada de todos 1's y es cero para un código digital de entrada de todos O's.
102

2- Salida de Corriente 2 del DAC. I0ur2 es una constante menos IQUTI,


ouT2-

1023
R

donde R - 1 5 KQ.

RFB- Resistencia de Realimentación. Se proporciona esta resistencia interna en


el chip como resistencia de realimentación cuando se usa un amplificador
operacional externo para obtener un voltaje de salida para el DAC. Esta
resistencia interna debería ser siempre usada (no una resistencia externa) ya que
ésta tiene las mismas características de las resistencias usadas en la escalera
R-2R (R-2R ladder) interna y varía igualmente con la temperatura.

VREF- Entrada de Referencia de Voltaje. Ésta es la conexión para la fuente de


voltaje de precisión externa que maneja la escalera R-2R interna. VREF puede
variar desde - 1 0 a + 1 0 voltios.

Vcc- Voltaje de Fuente Digital. Ésta es la fuente de poder del DAC. VCc puede
variar desde + 5 VDC a + 15 VDC. La operación es óptima para + 15 VDC. Los
voltajes de entrada de umbral son casi independientes de Vcc.

GND. Tierra. El pin de referencia de tierra del chip.

En la Figura 3.24 se observa el diagrama de la parte análoga del DAC, en donde


el código de entrada digital simplemente controla la posición de los interruptores
SW0 a SWg. Una entrada digital de 1L produce que el interruptor conduzca la
corriente del brazo correspondiente de la escalera al pin de salida loun- Estos
interruptores de tecnología MOS operan en el modo de corriente, con una
pequeña caída de voltaje a través de ellos y pueden, entonces, conmutar
corrientes de cualquier polaridad.

Para obtener un voltaje de salida del DAC se utiliza un amplificador operacional


externo como un convertidor de corriente a voltaje. La idea es usar la resistencia
de realimentación interna, RFBj desde la salida del amplificador operacional a la
entrada invertida (-). Cuando una corriente ingresa a esta entrada invertida, la
acción de realimentación del operacional mantiene esa entrada al potencial de
tierra, con lo que se consigue que la corriente vaya por. la resistencia de
realimentación. El voltaje de salida del amplificador operacional se forza
entonces a un valor dado por:

V — — ( T
y oul ~ \-í OUT 1

Se debe notar que el signo del voltaje de salida depende de la dirección del flujo
de corriente a través de la resistencia de realimentación.

"
103
CÓDIGO DK3FTAL DE BEFADA

Dlg DI8 DI/ • • • DI0


(MSB) (USB)
O

±Vref

Rfb

SWg SW8 SW7 SW-, SW0

I I I I I í O lout 1

o [out 2

R - 15 Kohms

Figura 3.24 Escalera (ladder) R-2R.

Cuando se usa un amplificador operacional, los dos pines de salida de corriente


Oouri e loura) se deben mantener a O VDC- Esto se logra con una conexión como
la mostrada en la Figura 3.25. El capacitor, CC) se usa para compensar la
capacitancia de salida del DAC y de! amplificador operacional. La resistencia de
realimentación requerida, RFB está disponible en el chip (uno de los terminales
está conectado internamente a IOUTI) Y debe ser usada, ya que una resistencia
externa no proporcionaría la igualación necesaria con las resistencias de la
escalera R-2R interna, ni tampoco experimentaría las mismas variaciones de sus
características con la temperatura. Para obtener una salida de voltaje positivo,
el voltaje de referencia debe ser negativo.

SÍ Vref es (+} - Vref - < Vout < O Vdc


v ' \1024

(+15 Vdc)
Sí Vref es (-} O Vdc < Vout < + Vref

Rfb

±Vref Ce
lout 1
AO -O Vaut

lout 2

Figura 3.25 Obteniendo un Voltaje de Salida.


104

Una operación apropiada de la escalera de resistencias requiere que todos los


brazos de la escalera vayan a un potencial de tierra exacto de O VDC. Entonces,
el voltaje offset del amplificador operacional externo no debe permitirse pues
cada milivoltio de voltaje offset introducirá un 0.01% de error de linealidad
adicional, pues 1 mV equivale al 0.01% del voltaje de referencia de 10 V. Para
prevenir esta fuente de error, el voltaje offset del amplificador operacional tiene
que ser eliminado. Este es el "ajuste de cero" de la secuencia de calibración del
DAC y se debe realizar en primer lugar,

Al realizar el ajuste del voltaje offset se debe tener en cuenta lo siguiente: no


debe conectarse una resistencia de balance en la entrada positiva del
amplificador operacional la cual debe estar conectado a tierra; esta resistencia
y la corriente de entrada al amplificador operacional podrían también crear
errores. Los amplificadores operacionales con tecnología BI-FET, que tienen un
bajo valor de corriente promedio de entrada (input bias current) los hace ideales
para aplicaciones con el DAC al convertir la salida de corriente en voltaje. El
voltaje offset del amplificador operacional se debe ajustar con una entrada digital
de todos ceros para forzar que IOUT = O mA, y con un potenciómetro conectado
a las entradas de balance del amplificador operacional se debe obtener un voltaje
de salida que este dentro de ± 1 mV del potencial de tierra.

Después de efectuado el "ajuste de cero" se cambian todos los bits digitales a un


nivel alto (1L), para hacer el ajuste de "escala completa" (full scale adjust), y se
debe obtener un voltaje de salida igual a:

VOVT = ~ ( VREF ideal )'


1024'

Esto completa la calibración del DAC.

3.9.3 CIRCUITO MUESTREADOR-RETENEDOR LF398

El LF398 (Figura 3.26) es un circuito muestreador-retenedor (Sample and Hold)


que utiliza la tecnología BI-FET para obtener una muy alta exactitud DC con una
rápida adquisición de señal y bajo drenaje. Operando como un seguidor
(follower) de ganancia unitaria, la precisión de la ganancia DC típica es de
0.0002% y el tiempo de adquisición es tan bajo como 6 (is al 0.01%. Una
entrada con una etapa bipolar se usa para conseguir un bajo voltaje de offset y
un amplio ancho de banda. El ajuste del voltaje offset de entrada se realiza con
un pin único. La impedancia de entrada de 1010 Q permite usar fuentes con altas
impedancias de entrada sin degradar la precisión.
105

SAMPLE AND HOLD

OFFSET

ANALOG INPUT OUTPUT

5V
LOGIC
OV INPUT

Figura 3.26 Muestreador-Retenedor (Sample and Hold) LF398.

Transistores de efecto de campo (FET's) combinados con dispositivos bipolares


en el amplificador de salida del LF398 dan tasas de caída tan bajas como 5
mV/min con un capacitor de retención de 1 uiF. Entre otras características
importantes se tienen:

Opera con fuentes de poder desde ± 5 V hasta ± 15 V,

Tiempo de adquisición menor a 10 ¡o,s.

La entrada lógica es totalmente diferencial con bajas corrientes de entrada,


permitiendo conexiones directas con tecnologías TTL, PMOS o CMOS. El
voltaje de umbra! de esta entrada es de 1.4 V.

Un paso de voltaje (cambio en la salida al conmutarse del modo de muestreo


al modo de retención) típico de 0.5 mV con un capacitor de retención de 0.01
jiF.

Bajo voltaje de entrada de offset.

Precisión de ganancia de 0.002%.

Baja salida de ruido en el modo de retención.

Las características de entrada no cambian durante el modo de retención.

Para seleccionar el Capacitor de Retención con un razonable valor de


capacitancia son muy útiles las curvas que acompañan la información técnica del
fabricante; se debe tomar en cuenta también el materia! del cual está
106
confeccionado el capacitor de acuerdo con el tiempo de adquisición requerido en
una aplicación particular.

El ajuste de cero se consigue conectando el pin de ajuste de offset al pin variable


de un potenciómetro de 1 KD el cual tiene conectado uno de los extremos fijos
a V* y el otro extremo fijo conectado a través de una resistencia a tierra. La
resistencia debe ser seleccionada para obtener una corriente aproximada de 0.6
mA a través del potenciómetro de 1 KD.

3.9.4 COMPARADOR DE VOLTAJE LM311

El LM311 (Figura 3.27) es un comparador de voltaje que tiene corrientes de


entrada cientos de veces más bajas que otros conocidos comparadores. Está
diseñado para operar con un amplio rango de voltajes de polarización: el
estándar ± 15 Vy la fuente única de 5 V usada para C.l. lógicos. Su salida es
compatible con las tecnologías RTL, DTL, TTL y con circuitos MOS.
Adicionalmente puede manejar lámparas o relés, y voltajes conmutables de hasta
40 V con corrientes tan altas como 50 mA.

Las entradas y la salida del LM311 pueden aislarse de la tierra del sistema, y la
salida puede manejar cargas referidas a tierra, a la fuente positiva o a la fuente
negativa. La salida es de colector abierto, lo cual permite conectarse a cargas
de variados tipos. Aunque es más lento que otros comparadores, es menos
propenso en cambio, a oscilaciones espurias.

VOLTAGE COMPARATOR

OUTPUT

STROBE

Figura 3.27 Comparador de Voltaje LM311.


107

Si los pines de balance, 5 y 6, no van a ser conectados a un potenciómetro,


pueden actuar como entradas auxiliares indeseables, y por lo tanto, se los debe
cortocircuitar. Sí estos pines van a ser conectados a un potenciómetro, se debe
conectar un capacitor de 0.01 jiF entre estos dos pines, para minimizar la
susceptibilidad al acoplamiento AC. Se debe usar un capacitor más pequeño si
el pin 5 se utiliza para realimentación positiva. Ya que la realimentación casi a
cualquier pin del comparador puede resultar en una oscilación, la disposición
física del circuito debe realizarse muy cuidadosamente; preferiblemente debe
existir un plano de tierra bajo el C.l. LM311.

3.9.5 AMPLIFICADOR OPERACIONAL LF356

El LF356 (Figura 3.28) es un amplificador operacional con transistores JFET a


la entrada, que incorpora JFET's de alto voltaje, perfectamente emparejados, con
los transistores bipolares estándar, en el mismo chip (Tecnología BI-FET). Se
caracteriza por tener corrientes de entrada promedio (bias current) y de offset
bajas, bajo voltaje de offset, acopiados a pines de ajuste de offset que no
degradan el rechazo al modo común (common-mode rejection). Está diseñado
para amplios anchos de banda, extremadamente rápidos tiempos de
establecimiento (settling time) y bajos voltajes y corrientes de ruido.

OPERATIONAL AMPLIFIER

OUTPUT

BALANCE

Figura 3.28 Amplificador Operacional LF356.

Entre sus ventajas se tiene: son excelentes para aplicaciones de bajo ruido
usando fuentes de baja o alta impedancia; la etapa de salida permite conectar
grandes cargas capacitivas (10.000 pF) sin problemas de estabilidad; capacidad
de compensación interna y de grandes voltajes diferenciales de entrada.
108

Puede ser usado en las siguientes aplicaciones: integradores de precisión de alta


velocidad; conversores A/D y D/A rápidos; amplificadores (buffers) de alta
impedancia, de banda ancha y bajo ruido; amplificadores logarítmicos;
amplificadores con fotoceldas; circuitos muestreadores-retenedores, etc.

Como características sobresalientes se pueden mencionar las siguientes: baja


corriente promedio (bias) de entrada, 30 pA; baja corriente de entrada offset, 3
pA; alta impedancia de entrada, 1012 O; bajo voltaje de entrada offset, 1 mV; alta
relación de rechazo al modo común, 100 dB. Debido a que estos dispositivos
utilizan a la entrada JFET's en lugar de MOSFET's, no requieren manejo espe-
cial.

3.9.6 REFERENCIA DE VOLTAJE LH0070

El LH0070 (Figura 3.29) es un circuito para Referencia de Voltaje muy preciso,


con tres terminales, que consiste de un diodo zener con compensación de
temperatura manejado por un regulador de corriente y un amplificador. El
dispositivo proporciona una referencia precisa que es virtualmente independiente
del voltaje de entrada, de la corriente de carga, de la temperatura y del tiempo.
Tiene un voltaje nominal de salida de 10.000 V, el cual se obtiene ajustando
resistencias de películas muy delgadas, que son ultraestables y con baja
fluctuación por temperatura, bajo condiciones reales de operación.

VOLTAGE REFERENCE

-o Vin

R3 A1 -O Vout

D1 C1 R1

* R2

GND
(case)

Figura 3.29 Referencia de Voltaje LH0070.


109

El LH0070 combina una excelente estabilidad térmica, facilidad de conexión y


bajo costo, haciéndolo ideal como referencia de voltaje en sistemas A/D o D/A de
alta precisión. Sus características más importantes son: voltaje de salida preciso,
10 V ± 0.01%; opera con una sola fuente de alimentación, 12.5 V a 40 V; baja
impedancia de salida, 0.1 Q] excelente regulación de línea, 0.1 mV/V; bajo ruido
del zener, 100 |iVp-p; protección de cortocircuito y baja corriente de reposo
(quiescent current), 3 mA.

3.9.7 CIRCUITO IMPLEMENTADO

En la Figura 3.30 se encuentra el diagrama del circuito que se implemento para


realizar la conversión análogo-digital. Allí se encuentran interconectados los
circuitos que se han descrito en los numerales anteriores a más del (iP Z-80 y los
C.l. que se utilizan para el multiplexado de las entradas. Se ha incluido al \±P
porque es el que controla al PIÓ y el que finalmente realiza la conversión; y como
el circuito de multiplexado de entradas es manejado por el PIÓ, se lo ha incluido
también.

La señal de reloj diseñada para el ¡^P, se conecta también al PIÓ para el cual se
especifica un período de reloj mínimo de 400 ns, que es el mismo especificado
para el Z-80; por lo tanto, al tener un período de 540 ns, que es el período
obtenido del circuito de reloj diseñado, se cumple con lo especificado por el
fabricante para el PÍO.

Como se había mencionado en el numeral 3.6.2 al analizar el funcionamiento del


C.l. INTEL 8279, el jiP puede direccionar los dispositivos de E/S
independientemente de memoria, utilizando para ello los 8 bits menos
significativos de la barra de direcciones y la línea IORQ (pedido de E/S). En ese
mismo numeral se presentó la Tabla 3.7 en la que se puede observar el
direccionamiento de los dos dispositivos de entrada salida usados en el equipo
que son: el C.l. INTEL 8279 para decodificación de teclado y display y el PIÓ
para la conversión A/D, Repetimos a continuación esa tabla para entender la
forma como se direcciona el PÍO.

Se ha conectado la línea A7 del bus de direcciones del '\iP a la línea CE


(habilitación) del PIÓ, con lo cual éste quedará habilitado cada vez que en esta
línea se tenga un nivel bajo; pero, para que se pueda realizar una transferencia
de datos con el \iP debe estar activa la línea IORQ, gracias a la cual se
diferencia el acceso a los dispositivos de entrada salida, del acceso a memoria.
Con esta conexión se podría habilitar al PÍO con muchas direcciones en las que
se tenga el bit A7 del bus de direcciones en un nivel bajo, inclusive se podría
habilitar simultáneamente al INTEL 8279 y al PIÓ, con direcciones en las cuales
CONVERSIÓN
ANÁLOGO - DIGITAL
111
se tengan los bits A7 y Ae en bajo; pero, al realizar la programación se ha tenido
especial cuidado de direccionar a cada uno de estos dispositivos siempre con las
direcciones que aparecen en la Tabla 3.7 para evitar lo mencionado.

Tabla 3.7 Direccionamíento de Dispositivos de E/S.

AT As As A4 As Az Ai Ao HEX FUNCIÓN DISPOSITIVO

0 1 1 1 1 1 0 0 7CH Pórtico A DATOS

0 1 1 1 1 1 0 1 70 H Pórtico B DATOS PIÓ


Conversión
0 1 1 1 1 1 1 0 7EH Pórtico A CONTROL A/D
0 1 1 1 1 1 1 1 7FH Pórtico B CONTROL

1 0 1 1 1 1 1 0 BEH DATOS
INTEL
1 0 1 1 1 1 1 1 BFH COMANDOS 0 STATUS 8279

A las líneas de selección B/A y C/D, se han conectado las Ifneas del bus de
direcciones A0 y A1 respectivamente, para seleccionar el Pórtico A (0L) o el
Pórtico B (1L) con la línea A0, y datos (0L) o control (1L) con la línea A-,. Por lo
tanto, como se puede ver en la Tabla 3.7, con las direcciones indicadas se
accede a los dos pórticos del PIÓ para transferir datos o comandos.

La señal M1 (ciclo de máquina) del jiP se conecta con la misma señal del PIÓ
para sincronizar la transferencia de datos entre los dos dispositivos.

Las señales IORQ (pedido de E/S) y RD (lectura) del pP se conectan con las
respectivas señales del PIÓ; estas dos líneas conjuntamente con las líneas CE,
B/A y C/D, sirven para la transferencia de datos o comandos entre el jj,P y el PIÓ.
Cuando IORQ, RD y CE están en su estado activo (0L), el pórtico seleccionado
por el estado de la línea B/A, transfiere datos al pP, y por lo tanto se efectúa una
operación de lectura. Cuando CE e IORQ están en su estado activo pero RD no,
al pórtico seleccionado por el estado de B/A, se está transfiriendo datos desde
el pP si la línea C/D tiene un nivel bajo (0L); o, se está transfiriendo comandos
desde el jiP si la línea C/D tiene un nivel alto (1L); y por lo tanto se está
efectuando una operación de escritura.

El bus de datos del ¡_iP está conectada directamente con el bus de datos del PIÓ
(D0 a D7), pues a través de este bus se realiza el intercambio de datos o
comandos entre los dos dispositivos.

En este caso no se utilizan las interrupciones del PIÓ, ya que el periférico al que
está conectado, el DAC1000, no dispone de una salida que pueda generar una
interrupción, y la conversión A/D la realiza el PIÓ interactuando con los diversos
112

elementos que conforman el conversón Por esta razón se deshabilita las


interrupciones del PÍO por software, y por lo tanto, a las líneas del PIÓ que están
relacionadas con interrupciones: INT e IEO, que son salidas, se dejan sin
conexión; e IEI, que es una entrada, se la conecta a 5 V a través de una
resistencia, para garantizar que se mantenga en un nivel alto que es su estado
inactivo.

El Pórtico A del PIÓ se lo utiliza en el Modo 3, Modo de Control, con el objeto de


definir a ciertos bits como entradas, y a otros como salidas, de acuerdo a la
función que van a cumplir; así;

PA0 - Salida, conectada al bit DI8 del DAC1000


PAT - Salida, conectada al bit DI9 del DAC1000
PA2 - Salida, conectada al control de muestrear/retener (sample/hold) del
C.l. LF398
PA3 - Entrada, conectada a la salida del Comparador LM311
PA4 - Salida, conectada a la línea de selección CS del DAC1000
PA5 - Sin conexión
PA6 - Salida, conectada al control de habilitación G del latch C.l. 74LS373
PA7 - Entrada, conectada a la salida Y del multiplexor digital C.l. 74151

Como en Modo 3, la salida ARDY se forza a un nivel bajo, y la entrada ASTB se


deshabilita internamente, estas dos líneas se las ha dejado desconectadas.

Al Pórtico B del PIÓ se lo utiliza en el Modo O, Modo de Salida, y sus 8 bits PB0
a PB7 se conectan a los 8 bits menos significativos del DAC1000 DI0 a DI7,
respectivamente. Los bits PB0 a PB4í cumplen además una dobie función y por
ello están conectados a las entradas D0 a D4 del retenedor (latch) 74LS373,
respectivamente. Las salidas del latch Q0 a Q2, están conectadas a las líneas de
selección Ao a A2 del multiplexor análogo, y a A, B y C del multiplexor digital. La
salida Q3 del latch se conecta a la línea de selección STROBE del multiplexor
digital, y la salida Q4 del latch a la línea de selección EN del multiplexor análogo.
De esta forma el PIÓ controla la operación de los dos multiplexores, y los bits PB0
a PB4 pueden cumplir las dos funciones, gracias al concurso del latch 74LS373.

En la programación del |iP, cuando éste realice tareas a través del PIÓ, sea para
la conversión A/D o para seleccionar un pórtico de termocupla diferente en los
multiplexores, se debe tener cuidado de no habilitar simultáneamente al
conversor D/A y el latch 74LS373, cargando los bits respectivos de habilitación
del Pórtico A del PIÓ con los niveles correctos.

La línea BYTE1/BYTE2 (control de secuencia de bytes) del DAC1000 se conecta


a un nivel alto (Vcc) para habilitar los 10 bits del retenedor de entrada del DAC
de tal forma que se los pueda ingresar desde el PIÓ, en una sola transferencia.
113

La línea LJ/RJ (justificación izquierda o derecha) se conecta a un nivel bajo (O


V) ya que se utiliza justificación a la derecha, lo que significa que el byte menos
significativo del registro de 16 bits del joP contiene los 8 bits menos significativos
que ingresan al DAC, como se puede observar en la Figura 3.23.

La línea XFER (transferencia) se conecta a O V, que es su estado activo, para


que cuando se realice la transferencia de los 10 bits de datos desde PIÓ al
retenedor de entrada del DAC, también se realice la transferencia de la palabra
completa de 10 bits desde el retenedor de entrada al registro interno del DAC.

La línea CS (selección) como ya se mencionó, se conecta al bit PA4 del Pórtico


A del PIÓ, que será programado como salida, y que cuando esté en un nivel bajo,
habilitará al C.I. DAC1000.

Las líneas WR1 (escritura) y WR2 (escritura extra), que son activas en bajo, se
conectan juntas para que los 10 bits de entrada del DAC ingresen al retenedor
de entrada y también al registro interno del DAC. Como la retención de los datos
tanto en el retenedor de entrada como en el registro interno se produce cuando
estas dos líneas pasan al nivel alto, se necesita una señal que produzca un
flanco positivo; por esta razón se conectan las dos líneas mencionadas a la línea
BRDY del Pórtico B del PIÓ que, cuando el pórtico se ha programado en modo
de salida, pasa de su estado inactivo (0L) a su estado activo (1L) para indicar al
dispositivo periférico que los datos están listos para ser transferidos; con ello se
consigue el paso de las líneas WR1 y WR2 a un nivel alto, que es lo que se
requería. Como el C.I. DAC1000 no posee una salida que se pueda conectar a
la línea BSTB del PIÓ, para indicar que los datos han sido recibidos
satisfactoriamente, se ha conectado a esa línea la salida BRDY, que producirá
un flanco positivo cuando se ejecute una instrucción de salida desde el jaP, con
lo cual el PIÓ pondrá a la línea BRDY en su estado inactivo, y quedará listo para
una nueva operación de escritura al DAC. Se debe aclarar que si el DAC no ha
sido seleccionado, colocando un nivel bajo en la línea CS, los datos que se
tengan en las líneas Dio a DI3, no podrán ingresar a los registros internos del
mismo; con esto conseguimos que se puedan utilizar las líneas conectadas a los
bits de entrada del DAC en otras tareas.

Como los voltajes de salida de los amplificadores de las termocuplas son


positivos, pues el equipo ha sido diseñado para un rango de temperatura entre
O y 1,000 °C, se requiere de una referencia de voltaje negativa, para que el
voltaje de salida del amplificador operacional asociado al DAC sea positivo,
debido al cambio de signo que se produce en la amplificación. El circuito para
referencia de voltaje LH0070 que se utiliza (Figura 3.29) entrega el voltaje de
10.000 V entre los terminales VOUT V GND; entonces para obtener - 10.000 V con
respecto a la tierra del sistema, se conecta el terminal VOUT del LH0070 a la tierra
del sistema, y el terminal GND del LH0070 al terminal VREF del DAC.
114

Para garantizar que el terminal VOUT del LH0070, que está conectado a la tierra
del sistema, no entregue una corriente mayor que la especificada por el
fabricante, se lo polariza con un voltaje de 15 V, que se obtiene con un diodo
zener conectado de tal manera que el voltaje del ánodo quede aproximadamente
a -10 V con respecto a la tierra del sistema, pues el ánodo estará conectado con
el terminal GND del LH0070. Para lograrlo, se conecta el diodo zener con 2
resistencias como se observa en la Figura 3.30 y se calcula el valor de las
mismas, asumiendo una corriente de 10 mA, que es la adecuada para el diodo
zener que es de 1/2 vatio; por lo tanto:

R + R, = VTOTAL ~ VWER = 3Q]/ " 15V = 1500 fl

La caída de voltaje sobre la resistencia R2 debe ser de 5 V para lograr que el


ánodo del diodo esté a -10 V con respecto a la tierra del sistema, entonces:

VR 5V
, = 5000
/ IQmA

Y, finalmente;

R\ RTOTAL - R2 = 1500 a - 500 a =


Los valores reales utilizados son para R-,: 1 KQ, y para R2: 510 fL

Para obtener el voltaje de salida del DAC se utiliza el Amplificador Operacional


LF356, a cuyas entradas se conectan los pines de salida de corriente del DAC:
IOUTI a la entrada invertida e I0ui2 a la entrada no invertida. Se utiliza la
resistencia de realimentación interna del DAC, conectada en serie con un
potenciómetro de 500 fi, que servirá para efectuar la calibración de escala
completa (full scale adjust). Entre las dos entradas para balance del voltaje offset
se conecta un potenciómetro de 25 KQ, con el pin variable conectado a V*, tal
como recomienda el fabricante, y a través del cual se realizará el ajuste de cero
(zero adjust). Un capacitor de 22 pF está conectado entre la entrada y la salida
del amplificador operacional para compensar la capacitancia de salida del DAC
y del amplificador operacional, cuyo valor es el recomendado por el fabricante.

Como la conversión A/D la realiza el jjp a través del conversor D/A, usando el
método de aproximaciones sucesivas, el voltaje retenido en el circuito
muestreador-retenedor debe ser comparado con el voltaje análogo que se
obtiene a la salida del amplificador operacional LF356 conectado con el
conversor DAC1000. Para este propósito se utiliza el comparador LM311, cuya
entrada no invertida está conectada a la salida del muestreador-retenedor LF398,
y la entrada invertida, a la salida del amplificador operacional LF356. Como la
115

salida del comparador es de colector abierto, se utiliza una resistencia de pulí up


con el otro extremo de la misma conectado a + 5 VDc, con lo cual se consigue un
nivel de voltaje TTL, que es el adecuado para conectarse al bit PA3 del Pórtico
A del PIÓ. Si la salida del amplificador operacional es mayor que la salida del
muestreador-retenedor, la salida del comparador estará en un nivel alto (5 V),
caso contrario, estará en un nivel bajo (O V).

Al comparador se lo polariza con ±15 VDC, el pin 1 de tierra está conectado a la


tierra del sistema, y la salida, como ya se indicó, con una resistencia de pulí up
a + 5 V. Los pines de balance 5 y 6 están cortocircuitados, pues no se ha
utilizado potenciómetros de balance de offset, debido a que el voltaje de offset
de entrada típico del comparador LM311 es de 2 mV, y no afectaría en la
conversión pues la resolución del conversón es de aproximadamente 10 mV.

Al circuito muestreador-retenedor LF398 se lo ha polarizado con ±15 VDC| el pin


7 de referencia lógica está conectado a la tierra del sistema, el pin 3 de entrada
está conectado con la salida del multiplexor análogo, y el pin 5 de salida con la
entrada no invertida del comparador LM311. El pin 6 se conecta al capacitor de
retención (hold capacitor), y el otro extremo del capacitor a la tierra del sistema.
Este capacitor tiene un valor de 0.01 jiF, y ha sido escogido utilizando las curvas
que proporciona el fabricante de acuerdo con el tiempo que toma efectuar una
conversión; este tiempo se lo obtiene del algoritmo de conversión, calculando en
forma aproximada el número de instrucciones que toma efectuar una conversión
y sumando el tiempo de cada una de ellas y que es proporcionado por el
fabricante del jiP; como el tiempo de cada instrucción viene dado en ciclos de
reloj, con el período de reloj diseñado es posible entonces calcular el tiempo
aproximado que toma efectuar una conversión; ese tiempo es de 1005.5 jas. El
pin 2 de compensación de offset está conectado al pin variable de un
potenciómetro de 1 KQ, cuyos pines fijos están conectados a V* el uno, y el otro
a tierra a través de una resistencia de 24 KQ, con la cual se consigue una
corriente de 0.6 mA que es lo recomendado por el fabricante,

El funcionamiento del circuito es el siguiente: antes de realizar una conversión,


el p,P debe primero seleccionar a uno de los amplificadores y su indicación de
alarma a través de los multiplexores, para ello escribe una palabra de datos en
el Pórtico A del PIÓ con los bits en los niveles adecuados de tal forma que:
deshabilite el conversor DAC1000, ponga al muestreador-retenedor en condición
de muestreo y, al latch 74LS373 habilitado para que los datos en las entradas se
copien en las salidas. Con el latch habilitado, escribe una palabra en el Pórtico
B del PÍO con los bits en los niveles adecuados para que habilite los dos
multiplexores, y seleccione uno de los cuatro amplificadores de las termocuplas.
A continuación, escribe una nueva palabra en el Pórtico A con la cual pasa al
latch 74LS373 a la condición de retención (latch) es decir que las salidas no se
alterarán aunque las entradas cambien sus niveles.
116

Como ya tiene seleccionada la salida de un amplificador, verifica primero que la


termocupla correspondiente no esté abierta, para [o cual lee la salida del
multiplexor digital que ingresa por el bit PA7 del Pórtico A. Para leer cualquier bit
que esté programado como entrada, el ¡j,P lee el pórtico completo y prueba el
nivel del bit que le interese. Si la termocupla está abierta, pasa a la parte del
programa que le permite poner en el display una indicación de termocupla
abierta; si no es así, procede a realizar la conversión del voltaje que está
ingresando al circuito muestreador-retenedor.

Para ello escribe una palabra en el Pórtico A que permita habilitar el conversor,
dejar al circuito muestreador-retenedor en la condición de retención, y los niveles
respectivos en los bits PAi y PA0 que le ubiquen en la mitad inferior del rango
completo, y que corresponden a los 2 bits más significativos del conversor, para
realizar la primera aproximación; luego escribe una palabra en el Pórtico B con
los 8 bits menos significativos del conversor; esta escritura permite la
transferencia de los 10 bits completos al conversor, gracias a la conexión de la
línea BRDY del Pórtico B del PÍO con las líneas de escritura WR1 y WR2 del
conversor.

Los 10 bits ingresados son convertidos a un voltaje análogo que está presente
en la salida del amplificador operacional LF356; este voltaje se compara con la
salida del circuito muestreador-retenedor en el comparador LM311. El jjP lee
entonces el nivel de salida del comparador, con lo cual conoce si el voltaje que
desea convertir está en la parte superior o inferior de la mitad del rango total;
para ello lee el bit PA3 del Pórtico A que está conectado con la salida del
comparador.

De acuerdo a lo que el jj,P lee desde la salida del comparador, decide entonces
en qué parte del rango realizar la siguiente aproximación, y repite el proceso
hasta encontrar los 10 bits que corresponden a la representación digital del
voltaje retenido en el circuito muestreador retenedor. En el siguiente capítulo se
explicará el programa desarrollada para que el jiP realice esta conversión.

Cuando el |j,P está dedicado a otras tareas, como por ejemplo la evaluación del
voltaje amplificado y convertido a digital de cualquier termocupla, debe dejar
deshabilitados al PIÓ, el DAC1000 y el resto de circuitos involucrados en la
conversión análogo-digital.
CAPITULO IV

DISEÑO DEL SOFTWARE

En este capítulo se describe la programación del ¡iP Z-80 para conseguir que el
equipo funcione como un dispositivo de medición de temperatura. Aunque los
diferentes módulos de software están interrelacionados entre si, se los va a
dividir en 4 grupos importantes que son: manejo de teclado y display como
elementos de entrada-salida, conversión análogo-digital de los voltajes
amplificados de las termocuplas, aritmética de punto flotante y linealización.

Una descripción detallada del set de instrucciones del jjP Z-80 se encuentra en
el Apéndice C, pero si para comprender el funcionamiento de alguna subrutina,
es necesario profundizar en la explicación de cualquier instrucción del |iP, así se
lo hará.

Los dispositivos periféricos utilizados por el jaP para realizar las diferentes tareas
son el C.l. INTEL 8279 y el PÍO, los mismos que son programables, por lo que a
continuación se revisan los modos de programación y comandos de cada uno.

4.1 PROGRAMACIÓN DEL C.l. INTEL 8279

4.1.1 COMANDOS

Los siguientes comandos programan los modos de operación del 8279, y se


envían en la barra de datos con la línea CS (selección de chip) en bajo y A0 en
alto, y se cargan al 8279 en el flanco de subida de la línea WR.

4.1.1.1 SELECCIÓN DE LOS MODOS DE TECLADO Y DISPLAY

Código;
MSB LSB
O O O D D K K K

Donde DD selecciona el Modo del Display y KKK el Modo del Teclado.


118

DD

O O Display de 8 caracteres de 8 bits - Ingreso por la izquierda

0 1 Display de 16 caracteres de 8 bits - Ingreso por la izquierda*

1 O Display de 8 caracteres de 8 bits - Ingreso por la derecha

1 1 Display de 16 caracteres de 8 bits - Ingreso por la derecha

Se debe notar que cuando se selecciona barrido decodificado en el modo de


teclado, el display se reduce a 4 caracteres independientemente del modo de
j» display establecido.

KKK

0 0 0 Barrido de Teclado Codificado-2 Teclas (2 Key Lockout)*

O O 1 Barrido de Teclado Decodificado - 2 Teclas (2 Key Lockout)

0 1 0 Barrido de Teclado Codificado - N Teclas (N Key Rollover)

0 1 1 Barrido de Teclado Decodificado - N Teclas (N Key Rollover)

1 0 0 Matriz de Sensores con Barrido Codificado

1 0 1 Matriz de Sensores con Barrido Decodificado

1 1 0 Ingreso Controlado Externamente (Sírobed Input)- Barrido de Display


Codificado

1 1 1 Ingreso Controlado Externamente (Strobed Input)- Barrido de Display


Decodificado

4.1.1.2 PROGRAMACIÓN DEL RELOJ

Código:
o o 1 p p p p p

Por omisión (default) después de reset


119

Todas las señales de sincronismo y multiplexación para el 8279 se generan por


una graduación interna (prescaler). Esta graduación divide el reloj externo (pin
3) por un entero programable. Los bits PPPPP determinan el valor de este entero
que tiene un rango entre 2 y 31. Escogiendo un divisor que produzca 100 KHz
se conseguirán los tiempos de barrido y de eliminación de rebote especificados.
Por ejemplo, si el pin 3 del 8279 tiene una señal de reloj de 2 MHz, los bits
PPPPP se deberían establecer a 10100 para dividir esta señal para 20 y con-
seguir la frecuencia de operación apropiada de 100 KHz.

4.1.1.3 LECTURA DE LA RAM FIFO/SENSORES

Código:
' 1 O Al X A A A

X = No importa

La CPU prepara al 8279 para una lectura de la RAM FIFO/Sensores primero


escribiendo este comando. En el Modo de Barrido de Teclado, la bandera de
Auto-lncremento (Al) y los bits de dirección de la RAM (AAA) son irrelevantes. El
8279 manejará automáticamente la barra de datos para cada lectura subsiguiente
(Ao = 0) en la misma secuencia en la cual el primer dato ingresó a la FIFO. Todas
las lecturas subsiguientes serán desde la FIFO hasta que se emita otro comando.

En el Modo de Matriz de Sensores, los bits de dirección de la RAM, AAA,


seleccionan una de las 8 filas de la RAM de Sensores. Si la bandera Al está
establecida (Al=1), cada lectura sucesiva será desde la subsiguiente fila de la
RAM de sensores.

4.1.1.4 LECTURA DE LA RAM DEL DISPLAY

Código;
O 1 1 Al A A A A

La CPU prepara al 8279 para una lectura de la RAM del Display escribiendo
primero este comando. Los bits de direcciones AAAA seleccionan una de las 16
filas de la RAM del Display. Si la bandera Al está establecida (AI=1), esta
dirección de fila será incrementada después de cada lectura o escritura a la RAM
del Display. Ya que el mismo contador se usa para lectura y escritura, este
120

comando establece la dirección de la próxima lectura o escritura y el significado


del modo de Auto-lncremento para ambas operaciones.

4.1.1.5 ESCRITURA A LA RAM DEL DISPLAY

Código;
1 O O Al A A A A

La CPU prepara al 8279 para una escritura a la RAM del Display escribiendo
primero este comando. Después de escribir el comando con A0 = 1, todas las
subsiguientes escrituras con A0 = O serán a la RAM del display. Las funciones
de direccionamiento y de Auto-lncremento son idénticas a aquellas para lectura
de la RAM del display. Sin embargo, este comando no afecta la fuente de las
subsiguientes lecturas de datos; la CPU leerá desde la última RAM (Display o
FIFO/Sensores) que fue especificada. Si, desde luego, la RAM del Display fue
la última en seleccionarse, la escritura a la RAM del Display, sin embargo,
cambiará la dirección de la próxima lectura.

4.1.1.6 INHIBICIÓN / BLANQUEO DE ESCRITURA AL DISPLAY

Código;
A B A
1 X IW IW BL BL

X - No importa

Los bits IW pueden usarse para poner una máscara al dígito A y al dígito B en
aplicaciones que requieren pórticos de display separados de 4 bits.
Estableciendo la bandera IW (IW=1) para uno de los pórticos, el pórtico se
convierte en marcado, así que los ingresos a la RAM del Display desde la CPU
no afectarán ese pórtico. Entonces, si cada dígito es una entrada a un
decodificador BCD, la CPU podría escribir un dígito a la RAM del Display sin
afectar el otro dígito que está mostrándose. Es importante notar que el bit B0
corresponde al bit D0 de la barra de datos de la CPU, y que el bit A3 corresponde
al bit D7.

Si el usuario desea blanquear el display, se dispone de las banderas BL para


cada dígito. El último comando Clear (limpiar) emitido determina el código a
usarse como un "blanqueo". Este código es por omisión todos ceros después de
121

un reset. Nótese que ambas banderas BL deben establecerse (set) para


blanquear un display formateado como un pórtico individual de 8 bits.

4.1.1.7 LIMPIAR (CLEAR)

Código:
1 1 O C,

Los bits CD están disponibles en este comando para limpiar todas las filas de la
RAM del display a un código de blanqueo seleccionable como sigue:

O X Todos ceros (X = no importa)


1 O AB = Hex20 (0010 0000)
1 O Todos Unos

Habilita limpiar el display cuando = 1 (o por CA = 1)'

Durante el tiempo que la RAM del display está limpiándose (~ 160 fis), no puede
escribirse en ella. El bit más significativo de la palabra de estado de la FIFO se
establece (1L) durante este tiempo. Cuando la RAM del display está disponible
otra vez, ese bit se restablece (0L) automáticamente.

Si el bit CF es accesado (C F = 1), se limpia el estado de la FIFO y se restablece


la línea de salida de interrupciones. También el apuntador de la RAM de
sensores se apunta a la fila 0.

C Aj el bit de Limpiar Todo, tiene el efecto combinado de CD y CF; usa el código


de limpieza en la RAM del display y también limpia el estado de la FIFO. Además
resincroniza la cadena interna de tiempo.

4.1.1.8 TERMINAR INTERRUPCIÓN / ESTABLECER MODO DE ERROR

Código:
1 1 1 E X X X X

X = No importa
122

Para los modos de matriz de sensores, este comando baja la Ifnea IRQ y habilita
escrituras adicionales a [a RAM. (La línea IRQ podría haber subido por la
detección de un cambio en un valor de sensor. Esto podría también haber
inhibido escrituras adicionales a la RAM hasta un reset).

Para el modo de N teclas, si el bit E está programado a "1" el chip operará en el


modo especial de Error que se describirá más adelante.

4.1.2 PALABRA DE ESTADO

La palabra de estado contiene las señales del estado de la PIFO, de error, y_de
display no disponible. Esta palabra es leída por la CPU cuando A0 está alto y CS
y RD están bajos. Ver Descripción de los Modos de Operación para más detalles
sobre la palabra de estado.

4.1.3 LECTURA DE DATOS

Los datos se leen cuando A0l CS y RD están en un nivel bajo. La fuente de


datos se especifica por los comandos de Lectura de la PIFO o Lectura del
Display. La transición de RD causará que la dirección de la RAM que se está
leyendo se incremente si la bandera de Auto-lncremento está establecida (set).
Las lecturas a la FIFO siempre se incrementan (si no ocurre error)
independientemente de Al.

4.1.4 ESCRITURA DE DATOS

Los datos que se escriben con A0, CS y WR bajos son siempre escritos a la
RAM del Display. La dirección está especificada por el último comando de
Lectura o Escritura del Display. Un Auto-lncremento ocurre en el flanco de
subida de WR, si Al fue establecido por el último comando del display.

4.1.5 DESCRIPCIÓN DE LOS MODOS DE OPERACIÓN


123

4.1.5.1 MODO DE BARRIDO DE TECLADO, 2 TECLAS (2-KEY


LOCKOUT)

Hay tres posibles combinaciones de condiciones que pueden ocurrir durante el


barrido para eliminación de rebotes. Cuando se pulsa una tecla, la lógica de
eliminación de rebotes se inicia. Se espera otra tecla pulsada durante los dos
siguientes ciclos de barrido. Si ninguna se encuentra, la tecla pulsada es única
y su posición se ingresa en la FIFO junto con el estado de las líneas CNTL y
SHIFT. Si la FIFO estuvo vacía, se establecerá (1L) la línea IRQ para señalar a
la CPU que hay un ingreso en la FIFO. Si la FIFO estuvo llena, no se ingresará
la tecla pulsada y se establecerá la bandera de error. Si se encuentra otro
interruptor cerrado, no pueden ocurrir ingresos a la FIFO. Si todas las otras
teclas son liberadas antes que la primera, entonces esta será ingresada a la
FIFO. Si esta tecla es liberada antes que cualquier otra, será totalmente
ignorada. Una tecla se ingresa a la FIFO solamente una vez por cada ocasión
que sea presionada, sin importar cuántas teclas fueron pulsadas junto con ella
o en qué orden fueron ellas liberadas. Si dos teclas son pulsadas durante el ciclo
de eliminación de rebotes, esto es una pulsación de teclas simultánea. Ninguna
tecla será reconocida hasta que una sola tecla permanezca presionada. La
última tecla será tratada como una tecla pulsada única.

4.1.5.2 MODO DE BARRIDO DE TECLADO, N TECLAS (N-KEY


ROLLOVER)

En el modo de N teclas (N-Key Rollover) cada pulsación de tecla se trata


independientemente del resto. Al pulsar una tecla, el circuito de eliminación de
rebotes espera 2 ciclos de barrido de teclado y entonces chequea para ver si la
tecla está todavía presionada. Si lo está, la tecla es ingresada a la FIFO. Cual-
quier número de teclas pueden estar presionadas y una diferente puede ser
reconocida e ingresada a la FIFO. Si una pulsación simultánea ocurre, las teclas
son reconocidas e ingresadas de acuerdo al orden en el que el barrido de teclado
las encontró.

4.1.5.3 BARRIDO DE TECLADO - MODOS ESPECIALES DE ERROR

Para el modo de N teclas (N-Key rollover) el usuario puede programar un modo


especial de error. Esto se hace a través del comando "Terminar Interrupción/
124

Establecer Modo de Error". El ciclo de eliminación de rebotes y el chequeo de


validación de tecla operan como en el modo normal de N teclas. Si durante un
ciclo de eliminación de rebotes particular, se encuentran dos teclas pulsadas,
esto se considera una pulsación simultánea múltiple, y se establece una bandera
de error. Esta bandera prevendrá cualquier escritura adicional en la FIFO y
establecerá una interrupción (si no está ya establecida). El estado de la bandera
de error podría conocerse en este modo leyendo la palabra de estado de la FIFO.
La bandera de error se restablece (reset) enviando el comando normal Limpiar
(CLEAR) conC F = 1.

4.1.5.4 MODO MATRIZ DE SENSORES

En el Modo de Matriz de Sensores, se inhibe la lógica de eliminación de rebotes.


El estado del interruptor del sensor se ingresa directamente a la RAM de
Sensores. De esta forma la RAM de Sensores mantiene una imagen del estado
de los interruptores en la matriz de sensores. Aunque no se provee eliminación
de rebotes, este modo tiene la ventaja que la CPU conoce cuanto tiempo el
sensor estuvo cerrado y cuando fue liberado. El modo de teclado puede
solamente indicar un cierre válido. Para facilitar el desarrollo del software, el
diseñador debería agruparfuncionalmente los sensores perfilas, ya que este es
el formato con el cual la CPU los leerá.

La línea IRQ pasa a alto si algún cambio de valor de un sensor se detecta al final
de un ciclo de barrido de la matriz de sensores. La línea IRQ se restablece
(reset) con la primera operación de lectura de datos si la bandera de Auto-
Incremento está en cero, o por el comando 'Terminar Interrupción" si la bandera
de Auto-lncremento está en uno.

4.1.5.5 FORMATO DE DATOS

En el modo de Barrido de Teclado, el carácter ingresado a la FIFO corresponde


a la posición del interruptor en el teclado más el estado de las líneas CNTL y
SHIFT (no invertidas). CNTL es el MSB (bit más significativo) del carácter y
SHIFT es el siguiente bit más significativo. Los siguientes tres bits vienen del
contador de barrido e indican la fila en la cual la tecla fue encontrada. Los
últimos tres bits vienen del contador de columna e indican a cuál línea de retorno
la tecla estaba conectada.
125
MSB LSB
!
CNTL SHIFT SCAN ^ETURh

FORMATO DE DATOS DE BARRIDO DE TECLADO

En el Modo de Matriz de Sensores, los datos en las líneas de retorno se ingresan


directamente a la fila de la RAM que corresponde a la fila que se está barriendo
en la matriz. Entonces, la posición de cada interruptor se ubica directamente a
una posición en la RAM de Sensores. Las entradas SHIFT y CNTL son ignora-
das en este modo. Se debe notar que no necesariamente lo único que se puede
conectar a las líneas de retorno en este modo son interruptores. Cualquier lógica
que pueda ser disparada por las líneas de barrido puede ingresar datos a las
entradas de las líneas de retorno. Ocho pórticos de entrada multiplexados
podrían estar ligados a estas líneas y ser barridos por el 8279.

MSB LSB

RL7 RL6 RL5 RL4 RL3 Rl-2 Ri-1 RL0

En el Modo de Entrada Controlado Externamente (Strobed), los datos se ingresan


también a la FIFO desde las líneas de retorno. Estos se ingresan en el flanco de
subida de un pulso en la línea CNTL/STB. Los datos pueden venir desde otro
teclado codificado o desde una simple matriz de interruptores. Las líneas de
retorno pueden también usarse como entradas de control externo (strobed) de
propósito general.

4.1.5.6 DISPLAY - INGRESO POR LA IZQUIERDA

El Modo de Ingreso por la Izquierda es el formato de display más simple, en el


cual cada posición de display corresponde directamente a un byte (o dígito) en
la RAM del Display. La dirección O en la RAM es el carácter que está más a la
izquierda del display y la dirección 15 (o la dirección 7 en un display de 8
caracteres) es el carácter que está más a la derecha del display. El ingreso de
caracteres desde la posición cero causa que el display se ílene desde la iz-
quierda. El 17vo. (9no.) carácter se ingresa otra vez en la posición que está más
a la izquierda y el llenado otra vez prosigue desde allí.

Dirección
RAM del
1er. Ingreso Display
O 1 14 15

9
126

Dirección
RAM del
2do. Ingreso Display
O 1 14 15

16vo. Ingreso
O 1

17vo. Ingreso
O 1
17 2

18vo. Ingreso
O 1
1718

MODO DE INGRESO POR LA IZQUIERDA


(AUTO INCREMENTO)

4.1.5.7 DISPLAY - INGRESO POR LA DERECHA

El ingreso por la derecha es el método usado por la mayoría de calculadoras


electrónicas. El primer ingreso se coloca en el carácter del display que está más
a [a derecha. El siguiente ingreso se coloca también en el carácter que está más
a la derecha después que el display se desplaza a la izquierda un carácter. El
carácter que está más a la izquierda se desplaza fuera del final y se pierde.

Dirección
RAM del
1er. Ingreso Display
14 15 O

2do. Ingreso

Ser. Ingreso

16vo. Ingreso
127

Dirección
RAM del
17vo. Ingreso Display

18vo. Ingreso

MODO DE INGRESO POR LA DERECHA


(AUTO INCREMENTO)

Se debe notar que ahora la posición del display y la dirección del registro no
corresponden. Consecuentemente, el ingresar un carácter a una dirección
arbitraria en el modo de Auto Incremento podría tener resultados inesperados.
Por lo tanto, se recomienda, el ingreso iniciando en la dirección O de la RAM del
Display en forma secuencial.

4.1.5.8 DISPLAY - AUTO INCREMENTO

En el modo de ingreso por la izquierda, el Auto Incremento causa que la


dirección donde la CPU escribirá el próximo ingreso sea incrementada en uno y
que el carácter aparezca en la siguiente localización. Sin Auto Incremento el
ingreso es a la misma dirección de la RAM y a la misma posición del display. Los
ingresos a una dirección arbitraria en el modo de Auto Incremento no tienen
efectos laterales no deseables y el resultado es predecible.

Dirección
RAM del
1er. Ingreso Display
0 1 2 3 4 5 6 7

2do. Ingreso
0 1 2 3 4 5 6 7
1 2

Comando: 10010101
0 1 2 3 4 5 6 7
1 2
Ingresar el próximo carácter a [a localización 5 con Auto Incremento

Ser. Ingreso
0 1 2 3 4 5 6 7
1121 i i m i i
128

Dirección
RAM del
4to. Ingreso Display
0 1 2 3 4 5 6 7
1 2 3 4

MODO DE INGRESO POR LA IZQUIERDA


(AUTO INCREMENTO)

En el modo de ingreso por la derecha, Auto Incremento y no Incremento tienen


el mismo efecto como en el modo de Ingreso por la Izquierda excepto si la
secuencia de direcciones se interrumpe:

Dirección
RAM del
1er. Ingreso Display
2 3 4 5 6 7 0

2do. Ingreso
2 3 4 5 6 7 0 1
1 2

Comando: 10010101
2 3 4 5 6 7 0 1
1 2

Ingresar el próximo carácter a la localización 5 con Auto Incremento

Ser. Ingreso
3 4 5 6 7 0 1 2
1 2

4to.Ingreso
4 5 6 7 0 1 2 3
3 4 1 2

MODO DE INGRESO POR LA DERECHA


(AUTO INCREMENTO)

Iniciando en una localización arbitraria la operación es como se muestra a


continuación:

Dirección
RAM del
Comando 10010101 Display
0 1 2 3 4 5 6 7

Ingresar el próximo carácter a la localización 5 con Auto Incremento


Dirección
RAM del
1er. Ingreso Display
1 2 3 5 6 7 0 I

2do. Ingreso
2 3 4 5 6 7 0 1
1 2

3er. Ingreso
3 4 5 6 7 0 1 2
1 2 3

8vo. Ingreso
0 1 2 3 4 5 6 7
4 5 6 7 1 2 3

9no. Ingreso
1 2 3 4 5 6 7 0
5 6 7 9 2 3 4

MODO DE INGRESO POR LA DERECHA


(AUTO INCREMENTO)

El 9no. ingreso aparece desde el punto de entrada inicial.

4.1,6 FORMATOS DE DISPLAY DE 8/16 CARACTERES

Si el modo de display se establece a un display de 8 caracteres, el tiempo de


barrido es la mitad del que se toma para un display de 16 caracteres (tiempo de
barrido de 5.1 ms para 8 caracteres versus 10.3 ms para 16 caracteres, con una
frecuencia interna de 100 KHz),

4.1.7 ESTADO DE LA FIFO

El estado de la FIFO se usa en los modos de Teclado y Entrada Controlada


Externamente (Strobed Input) para indicar el número de caracteres en la FIFO
y para indicar si un error ha ocurrido. Hay dos tipos de errores posibles: overrun
y underrun. Overrun ocurre cuando se intenta el ingreso de un nuevo carácter
en una FIFO llena. Underrun ocurre cuando la CPU trata de leer una FIFO vacía.
130

La palabra de estado de la FIFO también tiene un bit para indicar que ia RAM del
Display estuvo indisponible debido a que un comando "Limpiar Display" o
"Limpiar Todo" no ha completado su operación de borrado.

En el modo de Matriz de Sensores, un bit en la palabra de estado de la FIFO se


establece para señalar que al menos la indicación del cierre de un sensor, está
contenida en la RAM de sensores.

En el Modo Especial de Error el bit S/E está mostrando la bandera de error y


sirve como una indicación que un error de cierre simultáneo múltiple ha ocurrido.

PALABRA DE ESTADO DE LA FIFO

FIFO llena

S/E O U N N

Número de
Caracteres en la FIFO

Error- Underrun
Error- Overrun
Cierre de Sensor / Bandera de
error para múltiples cierres
Display indisponible

4.2 PROGRAMACIÓN DEL PIÓ

Como se mencionó en el capítulo anterior los dos pórticos del PIÓ pueden ser
programados para operar en 4 modos: salida por byte (Modo 0), entrada por byte
(Modo 1), entrada/salida por byte (Modo 2) y entrada/salida por bit (Modo 3).
Para programar estos modos de operación se describe a continuación los
comandos que se deben usar.

4.2.1 MODOS: O, 1 0 2

Para programar un pórtico del PIÓ para los modos O, 1 ó 2 se requieren dos
palabras o comandos por pórtico que son los siguientes:
131

Una Palabra de Control de Modo que selecciona el modo de operación del


pórtico y que puede escribirse en cualquier instante.

D7 D6 D5 D4 1 1 1 1

IDENTIFICA LA PALABRA
DE CONTROL DE MODO

NO IMPORTA

SELECCIÓN DE MODO

O O MODO O
0 1 MODO 1
1 O MODO 2
1 1 MODO 3

Un Vector de Interrupciones pues el PIÓ está diseñado para usarse con el jiP
Z-80 en el Modo 2 de Interrupciones, y por lo tanto el PIÓ debe proveer un vector
de Interrupciones cuando éstas están habilitadas.

D7 D6 D5 D4 D3 D2

IDENTIFICA EL VECTOR
DE INTERRUPCIONES

VECTOR DE INTERRUPCIONES
SUMINISTRADO POR EL USUARIO

4.2.2 MODO 3

Para programar la operación de un pórtico del PIÓ en Modo 3 (entrada/salida por


bit), se requieren una palabra de control, un vector si las interrupciones están
habilitadas, y tres palabras adicionales que se describen a 'continuación:

Registro de Control de Entrada/Salida. Cuando se selecciona el Modo 3, a la


palabra de control de modo le debe seguir otra palabra de control que establezca
el registro de control de entrada/salida que a su vez define cuáles líneas del
pórtico son entradas y cuáles son salidas.
132

D7 D6 D5 D3 D2 D1 D0

0 PROGRAMA AL BIT COMO SALIDA


1 PROGRAMA AL BIT COMO
ENTRADA

Palabra de Control de Interrupciones. En el Modo 3, las líneas de intercambio


(handshake) no se usan. Las interrupciones se generan como una función lógica
de los niveles de las señales de entrada. La palabra de control de interrupciones
establece las condiciones lógicas y los niveles lógicos requeridos para generar
una interrupción. Dos condiciones o funciones lógicas están disponibles: AND
(si todos los bits de entrada cambian al nivel activo, se genera una interrupción),
y OR (si alguno de los bits de entrada cambia al nivel activo, se genera una
interrupción). El bit D6 controla la función lógica, como se muestra abajo. El nivel
activo de los bits de entrada puede establecerse Alto o Bajo, y es controlado por
el bit D5.

D7 D6 D5 D4 0 1 1 1

IDENTIFICA LA PALABRA DE
CONTROL DE INTERRUPCIONES

D4 = 0 NO SIGUE PALABRA DE MÁSCARA


D4 = 1 SIGUE PALABRA DE MÁSCARA

D5 = 0 EL NIVEL ACTIVO ES BAJO


Ds = 1 EL NIVEL ACTIVO ES ALTO

D6 = 0 INTERRUPCIONES CON FUNCIÓN OR


Ds = 1 INTERRUPCIONES CON FUNCIÓN AND

D7 = 0 INTERRUPCIONES DESHABITADAS
D? = 1 INTERRUPCIONES HABILITADAS

NOTA: EL PÓRTICO NO ESTARÁ HABILITADO HASTA QUE LA HABILITACIÓN DE


INTERRUPCIONES ESTÉ SEGUIDO DE UN CICLO DE MÁQUINA ACTIVO (M1).

Palabra de Control de Máscaras. Esta palabra establece el registro de control


de máscaras, permitiendo que a cualquier bit que no se use se le ponga una
máscara. Si a cualquier bit se le va a poner una máscara, entonces el bit D4 de
la palabra anterior debe estar establecido (set), con lo cual la siguiente palabra
que se escriba al pórtico, debe ser la palabra de control de máscaras.
133

D7 D6 D5 D4 D3 D2 Di Do

BITS DE MASCARAS MBo- MB7.


UN BIT SE MONITORA PARA UNA
INTERRUPCIÓN SI ESTÁ
DEFINIDO COMO UNA ENTRADA
Y EL BIT DE MÁSCARA ESTÁ
ESTABLECIDO A 0.

4.2.3 DESHABILITACION DE INTERRUPCIONES

Hay una palabra de control adicional que puede usarse para habilitar o
deshabilitar las interrupciones de un pórtico, sin cambiar el resto de la palabra
de control de interrupciones.

D7 D6 D5 D4 O O 1 1

IDENTIFICA LA PALABRA DE
"DESHABILITACION DE INTERRUPCIONES
-NO IMPORTA
D? = 0 INTERRUPCIONES DESHABITADAS
"D;=1 INTERRUPCIONES HABILITADAS

4.3 PROGRAMA DE INICIALIZACION

Antes de proceder a describir la programación del jaP para el funcionamiento del


equipo se debe mencionar que para el desarrollo y depuración de los programas
se utilizaron las siguientes herramientas de ayuda:

• Analizador Lógico TEKTRONIX PRISM 32GPX, provisto de la punta de


prueba para el (iP Z-80.
• Simulador/Depurador del JJ.P Z-80.
• Cross 16 Meta-Assembler, con la tabla de instrucciones par el \iP Z-80.

Las primeras localidades de la memoria EPROM están ocupadas por patrones


en hexadecimal para mostrar caracteres en el display, valores fijos que utilizará
134

el jiP para realizar cálculos, y referencias de direcciones para llamadas a


subrutinas. Todo lo indicado se explicará conforme se describa la programación.

Igualmente se reservan localidades de RAM para que el pP almacene resultados


de operaciones intermedias, las cuales han sido etiquetadas a través del
ensamblador Cross 16.

El funcionamiento del equipo fue concebido de manera que al encenderlo,


muestre en el display las palabras "CPU-UP" como una indicación de que el
hardware arranca correctamente, y que después de inicializar adecuadamente
al pP y sus periféricos, vaya a una subrutina en la que, a través del display
pregunte el número de termocuplas que están conectadas al equipo.

Como se describió en la parte de hardware, al encender el equipo, el circuito de


inicialización produce el pulso respectivo en el pin de RESET del ¡aP con lo cual
se deshabilitan las interrupciones, éstas se establecen en Modo O, y se borran
los registros I (vector de interrupciones), R (refresco) y PC (contador de
programa), y consecuentemente el p.P leerá la primera instrucción desde la
localidad de memoria OOOOH.

Como la señal de RESET está conectada también al C.l. INTEL 8279 que maneja
el display y el teclado, luego de recibir el pulso correspondiente, se pone en los
modos siguientes: display de 16 caracteres de 8 bits, ingreso por la izquierda;
barrido de teclado codificado, secuencia de 2 teclas; y, graduación interna de
reloj (preescaler) en 31.

Como se explicó en el Capítulo 3 al analizar la Tabla 3.7, las direcciones


utilizadas para acceder al INTEL 8279 y al PIÓ, que son los dispositivos de
entrada/salida, son las siguientes:

INTEL 8279: BFH — Comandos o Estados


BEH — Datos

PIÓ: 7CH *- Pórtico A, Datos


7DH —- Pórtico B, Datos
7EH ^ Pórtico A, Control
7FH •- Pórtico B, Control

Se describe entonces a continuación la programación para inicializar el equipo:

Luego de recibir el pulso de reset, el (iP lee la primera


instrucción de la dirección de memoria OOOOH en donde
encuentra la instrucción de saltar a la dirección de memoria
con la etiqueta INICIO.
135
135

Carga el registro Apuntador de Pila (Stack Pointer SP) con


134 la dirección de la última localidad de la memoria RAM, para
que el (iP almacene direcciones de memoria temporales en
las últimas direcciones de la memoria RAM, cuando existen
SP < 1FFFH
llamadas a subrutinas o atención a interrupciones.

Llamada a la Subrutina Clear para borrar el display, antes de


CALI OLEAR
proceder con las instrucciones de inicialización del C.l.
INTEL 8279, con el objeto de que el display no muestre nada
mientras así se procede. Más adelante se explicará el
funcionamiento de esta subrutina.

Para conseguir que el reloj interno del 8279 tenga la frecuencia de 100 KHz, con
la cual se obtienen los tiempos de barrido y de eliminación de rebotes
especificados, se debe dar el comando 001PPPPP, estableciendo con los bits P
el divisor correspondiente. Como la frecuencia de reloj que ingresa al 8279 es
de 1.852 MHz, entonces:

I $52 MHz
Ps = = 18.52
100 KHz

Se escoge por tanto 18 para los bits P, lo que nos da el comando 00110010
(32H).

Se carga el acumulador A con este valor, y con la instrucción


de salida OUT se introduce el comando para programar el
reloj del 8279 con la dirección BFH que es la dirección de
A -< 32H
OUT (OBFH). A
comandos.

Se programa ahora los modos de teclado y display del 8279


con el comando OOODDKKK, con DD = 10, para seleccionar
A -< 10H Display de 8 caracteres de 8 bits, ingreso por la derecha; y,
OUT (OBFH), A
KKK = 000, para seleccionar Barrido de Teclado Codificado,
secuencia de 2 Teclas (2 Key Lockout); con lo que se
obtiene 00010000 (10H) que se carga en el acumulador A y
136 se introduce en el 8279 con la instrucción de salida OUT y
la dirección BFH de comandos.

A continuación se va a mostrar en el display la palabra "CPU-UP" para lo cual


previamente se explica como proceder para obtener en un display el carácter que
se desea. Como los display son de ánodo común, se debe poner un O (cero) en
el bit correspondiente a cada segmento para que se encienda, considerando que
el bit menos significativo del byte almacenado en la memoria corresponde al
136

segmento a y el bit más significativo al punto decimal dp. En el gráfico siguiente


se puede observar [a distribución de los segmentos de un display.

Entonces para mostrar CPU-UP en el display los códigos almacenados en cada


localidad de memoria serían los siguientes:

c 11000110 binario C6 hexadecimal


p 10001100 binario 8C hexadecimal
u 11000001 binario C1 hexadecimal
— 10111111 binario BF hexadecimal
u 11000001 binario C1 hexadecimal
p 10001100 binario 8C hexadecimal

Que son los códigos que se han almacenado en memoria consecutivamente para
poder mostrar esta palabra en el display.

Carga el registro HL con la dirección de la etiqueta CPLJUP


135
desde donde se encuentran almacenados los códigos de los
caracteres "CPU-UP" para que se muestren en el display.
HL ^ CPUUP Carga el registro B con 6H pues servirá como contador de
B ^ 6H los 6 displays. El comando para escribir en el display tiene
D < 9QH
la forma 100AIAAAA, donde Al = 1 significa autoincremento
y AAAA es la dirección de la fila de la RAM del display a
CALL DISPY donde se escribirá el carácter, por lo tanto como se va a
escribir en la fila O de la RAM con autoincremento, el
comando queda 10010000 (90H) y por ello cargo el registro
-< 3H D con este valor. Se llama a continuación a la subrutina
DISPY que permite escribir caracteres en el display, y cuyo
funcionamiento se explicará posteriormente. Se carga ahora
CALL DELAY el registro B con 3H para utilizarlo como contador para
producir un retardo de aproximadamente 3 segundos al
llamar a la subrutina DELAY, cuyo funcionamiento se
CALL OLEAR
explicará luego, y con lo cual se mostrará durante ese
tiempo "CPU-UP" en el display.

137 Seguidamente se llama a la subrutina CLEAR para borrar el


display.
137

Se procede ahora a inicializar al PIÓ, en primer lugar


136
deshabilitando las interrupciones ya que no van a usarse; el
comando necesario es D7XXX0011, donde si D7 = O se
A — £- 3H deshabilita interrupciones, y si se reemplaza los bits no
OUT (7EHJ.A
importa (X) por ceros, se tiene 00000011 (3H) con lo cual se
OUT (7FH) , A
carga el acumulador A y se lo escribe a las direcciones de
control de los pórticos A y B del PIÓ con la instrucción de
salida del jjP OUT.

Se requiere ahora programar a] pórtico A del PIÓ en el Modo 3 (entrada/salida


por bit); para lo cual se usa el comando DrDeXXHH, donde si D7D6 = 11 se
selecciona el Modo 3 y si se reemplaza los bits no importa (X) por ceros, se tiene
11001111 (CFH) con lo cual se carga el acumulador A y se lo escribe a la
dirección de control (7EH) del pórtico A.

Al seleccionar este modo, a la palabra de control de modo le debe seguir otra


palabra que defina cuáles líneas del pórtico son entradas y cuáles son salidas,
un O define al bit como salida y un 1 lo define como entrada. Se recuerda
entonces las conexiones de las líneas del pórtico A del PIÓ:

PA0 Salida, conectada al bitDIgdel DAC1000


PAi Salida, conectada al bit DI 9 del DAC1000
PA2 Salida, conectada al control de muestrear/retener
(sample/hold) del C. . LF398
A < OCFH
OUT (7EH), A
PA3 Entrada, conectada a la salida de! Comparador
A •< 88H LM311
OUT (7EH), A Salida, conectada a la línea de selección CS del
A X OFH
DAC1000
OUT Í7FH1. A
PA5 Sin conexión
PA6 Salida, conectada al control de habilitación G del
latchC.I.74LS373
138
'PA7 Entrada, conectada a la salida Y del multiplexor
digital C.l. 74151

Por lo tanto los bits A3 y A7 de la palabra de control deben tener un 1 pues son
entradas, y el resto de bits deben tener un O pues son salidas (A5 que no tiene
conexión no importa como se defina), esta palabra entonces debe ser 10X01000
(88H si X = 0), se carga con este valor al acumulador A y se escribe la palabra
de control de bits en la dirección de control del pórtico A (7EH) a través de la
instrucción de salida OUT.

Al Pórtico B del PIÓ se lo utiliza en el Modo O, Modo de Salida; para programarlo


en este modo se debe utilizar el comando D7D6XX1111, donde si D7D6 = 00 se
selecciona el Modo O de salida, y si se reemplaza los bits no importa (X) por
ceros se tiene 00001111 (OFH) con lo cual se carga el acumulador A y se lo
138

escribe a la dirección de control del pórtico B (7FH), quedando este pórtico


programado en el modo O de salida.

Los 8 bits PB0 a PB7 del pórtico B se conectan a ios 8 bits menos significativos
del conversor digital-análogo DAC1000 DI0 a DI7, respectivamente, y los bits PB0
a PB4l cumplen además una doble función y por ello están conectados a las
entradas D0 a D4 del retenedor (latch) 74LS373, respectivamente. Las salidas del
latch Qo a Ü2, están conectadas a las líneas de selección AO a A2 del multiplexor
análogo, y a las líneas de selección A, B y C del multiplexor digital. La salida Q3
del latch se conecta a la línea de selección STROBE del multiplexor digital, y la
salida Q4 del latch a la línea de selección EN del multiplexor análogo. De esta
forma el PIÓ controla la operación de los dos multiplexores, y los bits PB0 a PB4
pueden cumplir las dos funciones, gracias al concurso del latch 74LS373.

137
Se va ahora a dejar deshabilitados al multiplexor análogo
AD7501 y al multiplexor digital 74151 poniendo en sus
entradas de habilitación EN y STROBE respectivamente los
niveles adecuados (0L para el primer caso y 1L para el
segundo); como estas entradas están conectadas a las
A < flH
OUT (7DH), A
salidas del latch Q4 y Q3 respectivamente, se debe dejar
A < 54H retenidos esos niveles; para ello se escribe una palabra, con
OUT (7CH), A esos niveles, al pórtico B del PIÓ a donde están conectadas
A < 14H
las entradas D4 y D3 del latch; tomando en cuenta que por
OUT (7CH),A
ahora no importan los niveles de las otras líneas del pórtico,
entonces la palabra sería XXXD4D3XXX, reemplazando las
X por ceros y los niveles necesarios en D4 y D3 la palabra
queda 00001000 (08H) que se la carga en el acumulador A
141 para escribirla luego en la dirección de datos (7DH) del
pórtico B del PIÓ.

Los niveles que están ahora en las entradas D4 y D3 del latch deben copiarse a
las salidas Q4 y Q3 del mismo, para lo cual es necesario poner un 1L en el pin de
habilitación G del latch, condición siga (follow), pin que está conectada a la línea
A6 del pórtico A del PIÓ. A su vez se deshabilita al conversor D/A DAC1000
poniendo un 1L en el pin CS del mismo el cual está conectado a la línea A.*, y se
deja al circuito muestreador/retenedor LF398 en la condición muestrear (sample)
poniendo en el pin de control respectivo, que está conectada a la línea A2, un 1L.
Las líneas A7 y A3 que son entradas son irrelevantes en una instrucción de
escritura al pórtico, y las líneas A5 (sin conexión) y A-i y A0 que están conectadas
a los bits DI9 y DI8 del conversor pueden tener cualquier nivel con el conversor
deshabilitado; la palabra que se debe escribir es entonces X1X1X1XX,
reemplazando por ceros las condiciones no importa se tiene 01010100 (54H) que
se carga en el acumulador y se escribe a continuación en la dirección de datos
(7CH)del pórtico A del PIÓ.
139

Luego de que las entradas del latch se han copiado en las salidas, es necesario
poner al latch en la condición de retención (latch) para que los multiplexores
permanezcan deshabilitados y se pueda usar el pórtico B del PIÓ en la
conversión análogo-digital; para lograr lo mencionado se debe poner un OL en
el pin de habilitación G del latch, para lo cual se cambia a este nivel el bit 6 de
la palabra anterior y se mantiene las mismas condiciones para el conversor y el
muestreador/retenedor, entonces la palabra queda 00010100 (14H) que en forma
similar se carga al acumulador y luego se escribe a la dirección de datos (7CH)
del pórtico A.

Durante la depuración del programa se definieron localidades de memoria RAM


en donde el jiP guarda resultados intermedios o indicaciones temporales.de!
funcionamiento del equipo. Se describe a continuación las etiquetas utilizadas,
la dirección en RAM, el número de bytes reservados en cada caso y su
significado, de acuerdo a como estas aparecen en el listado del programa
generado al correr el ensamblador Cross 16.

Dirección #
NOMBRE Significado
RAM bytes
Almacena el número de dígitos ingresados al display cuando el
CONTA 1800H 1
equipo trabaja en modo de calculadora.
Cada bit de estas dos localidades de memoria sirve como bandera
FLAGS 1801H 2 para indicar una situación específica de funcionamiento del
programa.
Almacenan el número BCD (Binario Codificado en Decimal) que se
BCD 1803H 3 ingresó para efectuar una operación aritmética y que será convertido
a un número binario normalizado en punto flotante.
Almacenan un 1er. número binario normalizado en punto flotante
BN1 1806H 7
con el cual se efectuará alguna operación aritmética.
Almacenan un 2do. número binario normalizado en punto flotante y
BN2 180DH 7
con el cual se efectuará alguna operación aritmética.
Almacenan temporalmente un número binario en punto flotante,
TEM 1814H 6
mientras se efectúa alguna operación.
Almacenan la parte entera de la conversión de un número binario
BCDE 181AH 3
normalizado en punto flotante a un número BCD.
Almacenan la parte fraccionaria de la conversión de un número
BCDF 181DH 19
binario normalizado en punto flotante a un número BCD.
Almacenan resultados temporales de la conversión de un número
GN5 1830H 19
binario normalizado en punto flotante a un número BCD.
Almacenan resultados temporales de la conversión de un número
GN5T 1843H 19
binario normalizado en punto flotante a un número BCD.
Almacenan resultados temporales de la conversión de un número
BINNE 1856H' 7
BCD a un número binario normalizado en punto flotante.
Almacena temporalmente resultados parciales de la conversión
TEMADC 185DH 1
análogo-digital de los voltajes de [as termocuplas.
Almacenan resultados temporales de la evaluación de los
X 185EH 5
polinomios para la idealización de los voltajes de las termocuplas.
140

Dirección #
NOMBRE Significado
RAM bytes
Son una copia de la RAM del display (buffer del display) y se utilizan
para manejar el display más eficientemente. DBUF reserva, DBUF+
DBUF 1863H 8
1 led's de escala de temperatura, DBUF+2 a DBUF+7 seis displays
de izquierda a derecha.
Almacena el número de la termocupla de la cual se está midiendo
SCAN 186BH 1
la temperatura y que se está mostrando en el display.
NTER 186CH 1 Almacena e| número de termocuplas conectadas al equipo.
TERO a 186DH a Almacenan el tipo de termocupla (K = 0, J = 1, E = 2 o T = 3) que
4
TER3 1870H está conectada al pórtico 0, 1, 2 o 3 del equipo.
Almacena el tiempo en segundos que debe mostrarse la medición
SEGDL 1871H 1
de temperatura de cada termocupla.
Almacena la escala de temperatura (centígrados o fahrenheit) en la
WSCALE 1872H 1
cual se mostrará la medición de temperatura.
Almacenan un 1 si se desea medir y mostrar la temperatura de la
MTERO a 1873H a
4 termocupla conectada a los pórticos 0, 1, 2 o 3 del equipo; si no se
MTER3 1876H
desea medir y mostrar se almacena un 0.

A continuación se explica el significado de cada bit de ios dos registros FLAGS


y FLAGS+1.

BIT RESUMIDO SIGNIFICADO


Un 1i en este bit indica que el programa se encuentra en la Calibración de
0 CALO
Cero del amplificador operacional del conversor D/A.
Un lien este bit indica que el programa se encuentra en la Calibración de
F 1 CAL FS Escala Completa (Ful! Scale) del amplificador operacional del conversor
D/A.
Un 1i en este bit indica que el programa se encuentra en Medición de
L 2 MED.TEMP.
Temperatura.
Un 1i en este bit indica que el display está mostrando el resultado de una
A 3 OP. EFECT.
operación efectuada.
Un 1u en este bit indica que e| número que se está ingresando ya tiene
G 4 PUNTO
punto decimal.
Un 1t_ en este bit indica que e| programa está en la rutina de ingreso del
S 5 NUM.TER.
número de termocuplas.
Un 1i en este bit indica que el programa está en la rutina de ingreso del tipo
6 TIPO TER.
de termocuplas.
Un IL en este bit indica que el programa está en la rutina de ingreso del
7 SEGUNDOS tiempo (# de segundos) que se debe mostrar la medición de cada
termocupla.
Un 1t en este bit indica que el programa está en la rutina de ingreso de la
+ 0 ESCALA
escala de medición de temperatura.
Un 1i en este bit Índica que el programa está en la rutina de ingreso de
1 1 MOSTRAR
cuáles íermocuplas mostrar o no la medición de temperatura.

Continuando con el programa de inicialización se va a borrar o poner ceros en


algunos de los registros mencionados, para lo cual primero se ejecuta la
instrucción XOR A con la cual se borra el acumulador A y a través de él las
141

localidades de memoria CONTA, FLAGS y FLAGS+1; el registro TERO también


se lo inicializa con O para indicar que la termocupla conectada al pórtico O del
equipo es una tipo K pues si quien opera el equipo no contesta la pregunta inicial
de cuántas termocuplas están conectadas y utiliza primero alguna de las otras
funciones, al volver a medición de temperatura, se ha programado el equipo para
que asuma tener una sola termocupla tipo K conectada al pórtico 0.

Se incrementa ahora el acumulador que estaba en O y el


138
valor de 1 obtenido se lo carga a los registros SEGDL
(número de segundos para mostrar la medición) y NTER
XOR A
(número de termocuplas conectadas). Se carga luego el
(CONTAJ <- A acumulador con C6H (código para mostrar en el display la
(FLAGS) •< A letra C) para a su vez cargarlo al registro WSCALE para
(FLAGS+1) <— A
inicializar el equipo con la escala de temperatura en °C
(TERO) < A
INC A
(centígrados). Se cargo ahora en DBUF+1, a través del
(SEGDL) X A registro A, FEH (11111110 binario) para que se encienda el
(NTER) < A LED que corresponde a °C.
A < OC6H
(WSCALE) <— A
A < OFEH Se va ahora a poner un 1L en los registros MTERO a MTER3
(DBUF+1) <— A para que se muestren las mediciones de todas las
A < 1H
termocuplas, para ello se carga al acumulador con 1, el
HL < MTERO
-< 4H registro HL con la dirección MTERO y el registro B con 4
(número máximo de termocuplas) para efectuar un lazo que
cargue el registro A en la dirección apuntada por HL,
incremente este registro, decremente el registro B y repita el
lazo hasta que B sea cero, que se logra con la instrucción
DJNZ MOSTOD la cual decrementa B y si es cero ejecuta la
siguiente instrucción, y si no salta a la dirección indicada.

Se carga ahora el acumulador con 90H para luego escribir


este valor en la dirección de comandos del 8279 (BFH) con
SI
el objeto de dejarlo listo para escribir en la RAM del display
con autoincremento desde la fila O, y por ende en el primer
A -< 90H display de la derecha.
OUT (OBFH), A

A continuación se llama a la subrutina CLDB con el objeto de


borrar las localidades de la memoria que son la copia de la
CALL CLDB
RAM del display del 8279 (buffer del display), la misma que
se describirá más adelante.
IM 1
El Finalmente para concluir con la descripción del programa de
HL FLAGS inicialización se establece el Modo 1 para la interrupción con
SET 2 , (HL)
máscara INT, con la instrucción IM 1, lo cual significa que el
LiP al recibir la señal de interrupción saltará a la localidad de
NUMTERO
memoria 38H, si aquella está habilitada.
142

Esta interrupción proviene del 8279 y se genera cuando se detecta una tecla
pulsada. Conviene recordar que en el diseño del equipo no se utilizó la
interrupción sin máscara NMI. Seguidamente se habilita las interrupciones con
la instrucción E!; se carga el registro HL con la dirección del registro FLAGS y se
establece un 1L en el bit 2 de ese registro para indicarle al programa que se va
a utilizar al equipo en la medición de temperatura. De allí salta a la dirección
etiquetada como NUMTERO para que el programa pregunte el número de
termocuplas conectadas al equipo a través del display.

4.3.1 SUBRUTINAS USADAS EN EL PROGRAMA DE INICIALIZACIÓN

Es necesario ahora que se explique eí funcionamiento de las subrutinas que


fueron invocadas en el programa de inicialización para comprender
completamente esta parte de la programación. Estas son: CLEAR, DISPY,
DELAYy CLDB.

4.3.1.1 SUBRUTINACLEAR

Esta subrutina tiene el propósito de borrar o apagar el


display a través de la programación del 8279; el comando
correspondiente tiene la forma 110CDCDCDCFCAl donde si los
A < OCDH
tres bits CD's = 011 permiten borrar el display con el código
OUT (OBFH), A de todos 1 J s que es el presente caso porque son de ánodo
común; al bit CF se le pone un 0L porque al poner un 1 L al bit
CA tiene el efecto combinado de los bits CD y CF es decir,
borrar la RAM del display y el estado de la FIFO del teclado;
el comando entonces queda 11001101 (CDH), valor que se
carga en el acumulador para luego escribirlo en la dirección
de comandos (BFH) del 8279.

Durante el tiempo que le toma al 8279 borrar el display (~


160 jis) no puede escribirse a la RAM del display y el bit más
significativo de la palabra de estado se establece en 1L
hasta que la RAM del display esté disponible, momento en
el cual pasa a 0L.

Por lo indicado, se lee la palabra de estado del 8279 al acumulador A desde la


dirección de comandos o estados (BFH) del 8279, se verifica si el bit más
significativo de esta palabra (b7) está en 0L con la instrucción BIT 7,A que copia
143

el estado del bit complementado en el bit Z (cero) del registro de banderas del
|iP. Si el bit 7 de la palabra no está en cero, regresa a leer la palabra de estado
y a verificar ese bit nuevamente; cuando ya lo está retorna de la subrutina.

4.3.1.2 SUBRUTINA DISPY

Esta subrutina sirve para escribir en la RAM del display del 8279 los códigos
correspondientes a lo que se desea mostrar en el display. Antes de llamar a esta
subrutina se debe cargar en el registro HL la dirección del primer byte en RAM
o EPROM desde donde se quiere transferir los códigos al 8279. El registro B
debe venir con el número de bytes o códigos que se quieren transferir
consecutivamente iniciando con el byte apuntado por HL En el registro D viene
el código del comando del 8279 para escribir en la RAM del display con
autoincremento y, dependiendo de los 4 últimos bits del registro D, en que byte
de la RAM del display empezar.

Se carga en el registro C la dirección de comandos o


estados del 8279 (BFH) para utilizar la instrucción siguiente
que significa que se escribe en la dirección de salida
apuntada por el registro C el contenido del registro D; en
este caso a la dirección de comandos del 8279 se escribe
el comando que viene en D. Se decrementa a continuación
el registro C para apuntar la dirección de datos del 8279 que
' / n r - i i\s un numero menos (BEH).

Se utiliza ahora la instrucción OTIR del ¡aP Z-80 que


funciona así: transfiere el contenido de la dirección de RAM
o EPROM apuntada por el registro HL, a la dirección de E/S
apuntada por el registro C, incrementa HL, decrementa el
registro B y repite hasta que B sea cero.

En este caso transfiere el contenido de lo apuntado por HL a la dirección de


datos del 8279 que de acuerdo al comando introducido es la RAM del display,
incrementa HL, decrementa B (número de caracteres) y repite hasta que B = 0.

Resumiendo, la instrucción OTIR funciona así; (C)-* (HL)


B -< B-1
HL^ HL + 1
y repito hasta que B = O

Finalmente retorna de la subrutina.


144

4.3.1.3 SUBRUTINA DELAY

Subrutina para producir un retardo que, en segundos, es aproximadamente igual


al valor con que viene cargado el registro B, antes de llamarla.

Inicia cargando el registro DE con el valor OH. Luego carga el registro HL con
FFFFH. Decrementa el registro HL y seguidamente realiza la suma con líevo
(carry) de los dos registros de 16 bits.

Verifica si el resultado de la suma es cero con la ayuda


del bit Z (cero) del registro de banderas del Z-80; si no lo
es regresa a seguir decrementando HL a la dirección
etiquetada con DELYO; si el resultado de la suma es cero
decrementa el registro B y verifica si su valor es cero con
la ayuda de la instrucción DJNZ; si no es cero regresa a
la dirección etiquetada con DELY a cargar nuevamente
HL con el valor FFFFH; finalmente, si el valor del registro
B es cero retorna de la subrutina.

El decrementar el registro HL desde FFFFH hasta O toma


aproximadamente 1 segundo, por ello el tiempo total en
DEC HL segundos corresponde al valor con que viene el registro
ADC HL,DE B.

Se utiliza la instrucción de suma con llevo (carry) de


registros de 16 bits ADC HL.DE porque el resultado de la
misma afecta al bit Z del registro de banderas, lo que no
sucede con la instrucción de suma normal ADD de
DEC registros de 16 bits.

Si se requiere producir un retardo menor a 1 segundo, se


NO
puede llamar a esta subrutina a la dirección etiquetada
con DELYO, previamente cargando el registro HL con un
valor entre FFFFH y OH interpolando de acuerdo al tiempo
que se desee producir el retardo, y cargando el registro B
con el valor de 1.

4.3.1.4 SUBRUTINA CLDB


145

Subrutina para borrar el buffer (copia) de la RAM del display del 8279, en la RAM
del equipo, para lo cual se debe poner en todos los bits correspondientes a los
segmentos de cada display un 1L pues los displays son de ánodo común.

Se carga el acumulador A con FFH (todos los bits en 1L), el


registro B con 6H porque son 6 localidades de memoria a las
que se va a escribir lo que contiene el acumulador A, y que
corresponden a los 6 displays; se carga .el registro DE con
la dirección DBUF+2 donde empieza la primera localidad de
memoria equivalente al primer display de la izquierda (la
dirección DBUF está como reserva y la DBUF+1 equivale al
arreglo de los dos led's para indicación de escala de
temperatura).

Se escribe en la dirección de RAM apuntada por el registro


DE el contenido del registro A (FFH), se incrementa el
registro DE para apuntar a la siguiente localidad de
memoria, se decrementa el registro B y se verifica si es cero;
si no lo es se salta a la dirección del programa etiquetada
con CLDBO para escribir en la siguiente localidad de
memoria; si B es cero, se retorna de la subrutina.

El decrementar el registro B, saltar si no es cero y seguir a


la siguiente instrucción si lo es, se lo efectúa con la
instrucción DJNZ CLDBO.

4.4 PROGRAMA PARA DECODIFICACIÓN DE TECLADO (KEYB)

Esta parte de la programación es una de las más importantes pues es la que


luego de identificar una tecla pulsada decide qué tarea ejecutar dependiendo de
la función en la que se encuentre el equipo el momento en que se pulsó la tecla.

Para entender su funcionamiento se identifica primero las dos funciones


importantes que realiza el equipo y que son: medición de temperatura y
calculadora.

Cuando está en medición de temperatura las teclas que se pueden pulsar son las
que se indican a continuación junto con la tarea que ejecutan:
146

MEDICIÓN DE T E M P E R A T U R A
TECLA TAREA
A Para ingreso de número y tipo de termocuplas.
Para mostrar configuración: número y tipo de termocuplas, tiempo que se muestre la medición
B
de cada termocupla y la escala de temperatura (°C o °F).
Para ingresar el tiempo (# de segundos) que se debe mostrar la medición de cada
C
termocupla.
D Para cambiar la escala de temperatura (°C o °F).
Para indicarle al programa si mostrar o no la medición de temperatura de una termocupla
E
particular.
Para ejecutar la Calibración de Cero (CAL 0) y la Calibración de Escala Completa (CAL. FS)
L
del amplificador operacional asociado al conversorD/A DAC1000.
SHIFT Para pasar a la función de Calculadora.

Si estando en esta función se pulsa cualquier tecla que no sea una de las
indicadas, el programa luego de decodificarla regresa a continuar midiendo la
temperatura.

Cuando el equipo está en la función de calculadora, a más de las teclas


correspondientes a los dígitos O a 9, las teclas que se pueden pulsar y la función
que realizan se indican a continuación;

CAL C U L A D O R A
TECLA FUNCIÓN
Ingresar número que se está mostrando en el display para realizar
A
operación.
B Sumar.
C Restar.
D Multiplicar
E Dividir.
F Cambio de signo.
H Punto.
SHIFT Para pasar a medición de temperatura.

Al ensamblar el programa con el Assembler Cross 16 se utilizaron directivos que


fueron de gran ayuda en el desarrollo y depuración del programa. Se describen
a continuación brevemente ios directivos usados:

CPU - Declaración de Tabla de Instrucciones


Este directivo le dice al Cross 16 la tabla de instrucciones del
procesador que va ser usada durante el ensamblaje.

DFB - Definición de Byte


Este directivo permite al usuario definir valores para localidades de
memoria byte por byte.
147

DWM - Definición de Palabra (Byte Más Significativo Primero)


Este directivo permite al usuario definir valores para localidades de
memoria palabra por palabra (una palabra está conformada por 2
bytes).

END - Fin del Programa Fuente


Este directivo es opcional, pero cuando se usa será la última línea del
archivo fuente a ensamblarse (lo restante será ignorado).

EQU - Igualar Etiqueta


Este directivo se utiliza para asignar un valor entero a una etiqueta.

HOF - Formato de Salida Hexadecimal


Este directivo selecciona el formato del código de máquina del archivo
de salida, que dependerá del uso que se dará e ese archivo.

ORG - Origen
Este directivo permite al usuario especificar el valor del contador del
programa durante el proceso de ensamblaje.

En el ensamblaje del programa se utilizó el directivo DWM definiendo las


localidades de memoria con las direcciones de las subrutinas que se deben
ejecutar con la pulsación de las diferentes teclas, de acuerdo a la función en la
que esté el equipo el momento que se pulsó la tecla. Así, cuando está operando
como calculadora, las direcciones definidas fueron de la siguiente manera:

ETIQUETA DWM SUBRUTINA TECLA FUNCIÓN


INTBL DWM ENTRY A Ingresar número para realizar operación.
DWM SUMA B Sumar.
DWM RESTA C Restar.
DWM MULT D Multiplicar.
DWM DIV E Dividir.
DWM SIGN F Cambio de signo.
DWM POINT H Punto.
Oa9 Display lleno (teclas 0-9) o tecla L que no tiene
DWM WAIT1
L asignada tarea. Subrutina de espera.

Cuando está operando para medición de temperatura, las direcciones definidas


utilizando el directivo DWM fueron las siguientes:

ETIQUETA DWM SUBRUTINA TECLA FUNCIÓN


ATDCO DWM ATDC - Regresar a medición de temperatura.
CALFSO DWM CALFS L Calibración de escala completa.
WAITO DWM WAIT1 - Pasar a calculadora y esperar ingreso de tecla.
148

ETIQUETA DWM SUBRUTINA TECLA FUNCIÓN


PROG DWM NUMTER A Ingreso de número de termocuplas.
DWM CONFIG B Mostrar configuración total.
DWM SECÓNOS C Ingreso de tiempo (# de segundos).
DWM SCALE D Cambio de escala de temperatura.
DWM MOSTRAR E Mostrar o no medición de termocupla particular.
PROGO DWM NTCIN - Mostrar número de termocuplas ingresado.
PROG1 DWM BADTY - Tecla pulsada no válida.
PROG2 DWM TYPEIN - Mostrar tipo de termocupla ingresado.
PROG3 DWM MOSTRARO - Muestra dígitos 0 ó Ide presentar o no medición.
PROG4 DWM CALO L Calibración de cero.
TERPLA DWM GRADOK _ Grado polinomio de evaluación termocupla tipo K.
DWM GRADOJ - Grado polinomio de evaluación termocupla tipo J.
DWM GRADOE - Grado polinomio de evaluación íermocupla tipo E.
DWM GRADOT _ Grado polinomio de evaluación termocupla tipo T.

Se procede a continuación a explicar el funcionamiento de la subrutina de


decodificación de teclado KEYB.

Esta subrutina es invocada cuando se pulsa alguna tecla,


lo cual es detectado por el 8279 quien, después de la
eliminación de rebotes, produce una interrupción al jaP el
cual, luego de concluir la instrucción que estaba
ejecutando, salta a la dirección 38H en donde encuentra
la instrucción de salto a la dirección KEYB.

Guarda en la pila (stack) los registros AF (acumulador A


PUSH AF y registro de banderas F) y el registro HL con la
PUSH HL
instrucción PUSH. Carga el acumulador con el comando
A < 40H
OUT (OBFH), A
para leer la memoria FIFO/Sensores del 8279 que tiene
IN A , (OBEHJ la forma 010AIXAAA, donde el bit de autoincremento Al y
HL< FLAGS los bits de dirección de la RAM AAA en el modo de
BIT O , (HL)
barrido de teclado son irrelevantes, por lo tanto
reemplazando por ceros esos bits y el bit X, el comando
queda 01000000 (40H) que lo escribe.en la dirección de
comandos (BFH) del 8279 con la instrucción OUT. A
NO continuación lee desde la dirección de datos del 8279
(BEH) al acumulador el código de la tecla pulsada con la
BIT 2,(HL)
instrucción IN. De acuerdo a la conexión del 8279 con la
matriz de teclado, las teclas de la O a la F se decodifican
como su correspondiente número binario o hexadecimal,
y las teclas H, L y SHIFT con los códigos 00010000
binario (10H), 00010001 binario (11H ) y 00010010
binario (12H) respectivamente. (Ver consideraciones de
interface en la descripción de la programación del 8279).
149

A continuación se carga el registro HL con la dirección FLAGS con el propósito


de conocer, a través de ios diferentes bits de esta localidad de memoria, qué
función se estaba ejecutando al momento de pulsar la tecla. Para ello se prueba
el bit O de la localidad FLAGS con la instrucción BIT O, (HL) que copia el estado
del bit complementado en el bit Z (cero) del registro de banderas del LiP. Si el bit
O de la palabra es 1L (Z=0L) significa que el programa viene de la rutina de
calibración y entonces salta a la dirección KCAL; si ese bit es 0L (Z=1i_) continúa
y prueba el bit 2 de FLAGS (BIT 2, (HL)); si este bit es 1L (Z=0L) el programa
estaba en medición de temperatura y salta a la dirección KADC; si es 0L (Z=1[_)
significa que está en modo de calculadora y continúa.

Compara ahora el código de la tecla pulsada que está en


148
el acumulador A con el valor OAH, a través de la
instrucción CP OAH; si la tecla pulsada está entre O y 9 se
CP OAH produce un carry (1i_ en el bit C del registro de banderas
del LiP) y salta a la dirección KNUM; si no se produce el
carry la tecla puede ser A, B, C, D, E, F, H, L o SHIFT;
NO
carga entonces el registro índice IX con la dirección
INTBL que es donde se inician los directivos DWM con
las direcciones de las subrutinas correspondientes a las
teclas indicadas, en forma consecutiva.

Se resta a continuación OAH del acumulador (tecla


siguiente al 9) y se lo multiplica por 2 introduciendo un O
SUB OAH
en el bit menos significativo y desplazando los bits
SLA A restantes hacia la izquierda con la instrucción SLA A, ya
C < A que los directivos DWM definen las direcciones de las
B < OH
subrutinas que son de 2 bytes. Se copia ahora el
IX x IX+BC
acumulador en el registro C, y se carga con O el registro
B; con ello el registro doble BC contiene el código de la
tecla pulsada restado OAH y multiplicado por 2; al sumar
a continuación los registros IX y BC se apunta con IX el
POP HL
POP AF directivo DWM correspondiente a la localidad de memoria
B -<- (IX fO) donde está almacenada la dirección de la subrutina que
C <— (IX-1} corresponde a la tecla pulsada.
POP DE
PUSH BC
Se recupera los registros HL y AF de la pila (stack) y se
carga en el registro B el contenido de lo apuntado por el
registro IX (byte más significativo de la dirección de la
subrutina) y en el registro C el contenido de lo apuntado
por IX+1 (byte menos significativo de la dirección de la
subrutina).

Con la instrucción siguiente, POP DE, se recupera en este registro doble desde
la pila (stack) la dirección a donde debía retornar el programa luego de atender
150

la interrupción; y, con la siguiente instrucción PUSH BC se guarda en el stack la


dirección a donde se queere que retorne, y que estaba en este registro doble.
Finalmente se retorna de la interrupción (RETÍ).

Se continúa ahora analizando los diferentes saltos a los que va el programa y


que se han indicado en los párrafos anteriores.

Viene a la dirección KCAL si el bit O de FLAGS = 1L, lo


que indica que el programa estaba en la rutina de
calibración cuando se pulsó la tecla. Compara el
acumulador A, que contiene el código de la tecla pulsada,
con 11H con el objeto de comprobar si se ha pulsado la
tecla L de calibración, pues en esta rutina solamente
acepta esa tecla; si no es esa tecla la bandera Z - OL y
salta a la dirección NKCAL; si es la tecla L la bandera Z
= 1i_ y pasa entonces a probar el bit 1 de FLAGS para
verificar si el programa se encontraba en la rutina de
calibración de escala completa (CAL. FS); si este bit
contiene un 0L (Z = 10 el programa se encontraba en la
rutina de calibración de O (CAL. 0) y salta a la dirección
RKCAL; si ese bit es 1L (Z = 0L) el programa viene de la
rutina de calibración de escala completa (CAL. FS).
A - 141 1
OUT (7CH) , A
Carga entonces el acumulador con el código 14H para
XOR A luego escribirlo en la dirección de datos (7CH) del pórtico
(HL) x A A del PIÓ, con lo cual deshabilita el conversor D/A, que
recibía un 1L en todos sus bits de dato$ para realizar la
calibración de escala completa, el circuito muestreador
/retenedor en muestrear (sample) y el latch en retenga.
(Ver programa de inicialización).

Se borra a continuación el acumulador (XOR A) y se lo escribe en la dirección


FLAGS que está apuntada por el registro HL Con ello se deja todas los bits de
este registro en 0L) con lo cual se indica al programa que se sale de la rutina de
calibración. Finalmente se salta a la dirección ATDC_F a operar en medición de
temperatura.

A la dirección KADC viene si el bit 2 de FLAGS = 1 Lj lo


que indica que el programa estaba operando en medición
de temperatura. Compara el contenido del acumulador A
CP
con 12H para verificar si la tecla pulsada es SHIFT; si la
12H
bandera Z = 1L) la tecla pulsada es SHIFT, y salta a la
dirección etiquetada con RACF donde el programa
151 realizará lo necesario para que el equipo opere como
calculadora; si la bandera Z - 0L la tecla pulsada no es
151

SHIFT, y continúa. Compara ahora el contenido del


acumulador A con 11H para verificar si la tecla que se
pulsó es L (Calibración), si es esta tecla entonces la
bandera Z = 1 L y salta a la dirección CALADC; si no es la
tecla L (Z = 0L), pasa a probar el bit 5 de la dirección
apuntada por HL que es FLAGS, para verificar si el
si programa estaba preguntando el número o el tipo de
termocuplas.
CP 11H

Si el bit 5 de FLAGS es 1L (Z = 0L) salta a la dirección


NO TTC a continuar con las rutinas de ingreso del número o
tipo de termocuplas; si aquel bit es 0L (Z = 1L) continúa.
SI
Prueba ahora el bit 7 de FLAGS para comprobar si el
BIT 5.(HL) programa estaba preguntando el número de segundos
que se debe mostrar la medición de cada termocupla,
entonces si el bit 7 de FLAGS es 1L (Z = 0L) salta a la
dirección SGDL a continuar con el ingreso de segundos;
si el bit 7 de FLAGS es 0L (Z = 1L) continúa.
NO

BIT 7.IHL)
Incrementa luego el registro HL para apuntar con él la
dirección FLAGS+1 y probar el bit O de esa dirección con
el objeto de verificar si el programa estaba preguntando
en qué escala mostrar la temperatura; si el bit O de
FLAGS+1 es 1L (Z = 0L) salta a la dirección SCLE a
continuar con el ingreso de escala; si ese bit es 0L (Z = 1i_)
INC HL
continúa.
BIT 0,(HL)
Prueba ahora el bit 1 de FLAGS+1 que está apuntado por
HL para confirmar si el programa estaba en la rutina de
cuáles termocuplas mostrar la medición en el display; si
el bit 1 de FLAGS+1 es 1L (Z = 0L) salta a la dirección
NO CUMOS a continuar con la rutina de cuáles termocuplas
BIT 1.ÍHL)
mostrar; si el bit 1 de FLAGS+1 es 0L (Z = 1L) continúa.

Compara el acumulador con OAH para comprobar si la-


tecla pulsada está entre O y 9 lo cual producirá un carry
(bandera C = 1L); si es así salta a la dirección PULLR
para retornar de la interrupción a la parte del programa
que estaba ejecutando el momento de pulsar la tecla,
pues en medición de temperatura las teclas O a 9- no
tienen función.

Si la bandera C = 0L la tecla pulsada no está entre O y 9,


compara el acumulador con OFH para ver si la tecla
152

pulsada está entre A y E lo cual producirá un carry (C =


1L); si no es así (C = 0L) la tecla pulsada no está entre A
y E, lo que significa que la tecla puede ser F o H, teclas
que similarmente no tienen función en medición de
temperatura; salta entonces a la dirección PULLR.

Si la tecla pulsada está entre A y E carga el registro


CP OFH índice con la dirección PROG donde se inician los
directivos DWM con las direcciones de las subrutinas
correspondientes a las teclas de la A a la E
consecutivamente, cuando el programa está en medición
de temperatura. Salta entonces a la dirección TBL para
NO retornar de la interrupción a la subrutina correspondiente,
IX < PROG
repitiendo el procedimiento de apuntar con IX el DWM
que corresponde a la tecla pulsada, como cuando está
operando como calculadora.

Se va ahora a describir el salto a KNUM, dirección a la


que viene si, estando en función de calculadora, se ha
pulsado una tecla entre O y 9.

Transfiere el acumulador A, que contiene el código de la tecla pulsada, al registro


C; prueba el bit 3 de la localidad de memoria FLAGS, que está apuntada por el
registro HL, con el objeto de verificar si el momento de pulsar la tecla el equipo
estaba mostrando en el display el resultado de una operación efectuada, lo cual
se traduce con un 1L (Z - 0L) en ese bit; si es así salta a la dirección CLR.

Si el bit mencionado es 0L (Z = 1L) continúa y carga el


contenido de la localidad de memoria CONTA, que
almacena el número de caracteres ingresados en el
display, en el acumulador A, para luego compararlo con
' 5H y comprobar si están ya ingresados 5 caracteres que
"C X A es el número máximo de caracteres que se pueden
BIT 3 ,{HL}
ingresar (1 display para el signo y 5 para caracteres).

Si CONTA = 5 (Z = 1L) salta a la dirección PULLR a


retornar de la interrupción al sitio desde donde vino sin
modificar nada; caso contrario (CONTA < 5) carga el
registro índice IX con la dirección HTAB donde se inicia la
A<—- (CONTA) tabla de códigos hexadecimales de los dígitos O a 9 para
CP 5H
mostrarlos en los display de 7 segmentos, y que se
definen en el ensamblador con el directivo DFB (definición
153 de byte). Se repite a continuación el gráfico de un display
para comprender como se definieron los códigos de los
dígitos O a 9, recordando que los display son de ánodo
153

común, y requieren un 0L para encender el segmento


respectivo:

e I 9 1c

IX <—- HTAB 0 11000000 binario CO hexadecima!


B <-— OH 1 11111001 binario F9 hexadecimal
IX -<— IX + BC 2 10100100 binario A4 hexadecimal
(IX + 0)
3 10110000 binario BO hexadecimal
OUT ( OBEH) , A
BC -<-— 4H 4 10011001 binario 99 hexadecimal
PUSH HL 5 10010010 binario 92 hexadecimal
HLx— DBUF *4 6 10000010 binario 82 hexadecimal
DEC- DBUF +3
IDIR
7 11111000 binario F8 hexadecimal
(DBUF +7) <— A 8 10000000 binario 80 hexadecimal
POP HL 9 10010000 binario 90 hexadecimal
DEC HL
INC (HL)
Carga el registro B con OH para luego sumar el registro
doble BC y el registro índice IX, recordando que el
CALL COSG registro C contiene la tecla pulsada; como resultado de
esta suma IX apuntará la localidad de memoria donde
está almacenado el código a 7 segmentos
l— < correspondiente a la tecla pulsada; por ello carga en el
POP HL
registro A el contenido de lo apuntado por IX para
POP AF escribirlo en la dirección de datos (BEH) del 8279, que
El previamente fue programado para ingresar el nuevo
carácter en el display de la derecha desplazando hacia la
izquierda los ya ingresados. Va ahora a actualizar el
buffer del display en memoria que, como se había
indicado está en las direcciones DBUF.

Para ello se carga el registro doble BC con 4H para que funcione como contador
de la instrucción LDIR que va más adelante; se guarda en el stack (pila) lo que
contiene el registro HL que es la dirección FLAGS, se carga ahora en este
registro la dirección DFUF+4 y en el registro doble DE la dirección DBUF+3, y a
continuación la instrucción LDIR que opera de la siguiente manera:

(DE) ^ (HL) (DBUF+3) (DBUF+4)


DE -^ . DE + 1 (DBUF+4) (DBUF+5)
HL -^ HL+1 (DBUF+5) (DBUF+6)
BC ~< BC-1 (DBUF+6) (DBUF+7)
y repito hasta que BC = O
154

Con la instrucción LDIR entonces se ha actualizado el buffer del display en RAM


desplazando el contenido de las localidades un byte hacia arriba; como DBUF+2
corresponde al primer display de la izquierda y en este display se muestra el
signo del número ingresado, la instrucción LDIR opera desde DBUF+3. Para
completar la actualización del buffer del display en RAM se copia el contenido del
acumulador A, que contiene el código de la tecla pulsada, en DBUF+7 (display
de la derecha).

Se recupera a continuación del stack (pila) lo que tenía el registro HL que era la
dirección FLAGS, se decrementa este registro para que apunte la dirección
CONTA, que en las definiciones con el directivo EQU está un byte más arriba, y
se incrementa el contenido de ese registro pues se ha ingresado un carácter más
al conjunto de los display. Se llama ahora a la subrutina COSG la cual permite
conservar el signo del número ingresado y que se ubica en el primer display de
la izquierda. Finalmente se recupera del stack los registros HL y AF, se habilita
interrupciones y se salta a la dirección RFI para retornar de la interrupción.

Se describe ahora el salto a RACF, a donde viene el


programa si estando en la función de medición de
temperatura se ha pulsado la tecla SHIFT, lo que significa
que se desea cambiar al equipo a la función de
A < 8H
OUT (7DH) , A
calculadora.
A < 54H
OUT (7CHJ , A En medición de temperatura estaban habilitados el
A •< 14H
OUT (7CH) . A
conversor DAC1000 y los multiplexores análogo y digital;
para pasar a operar como calculadora se debe
deshabilitarlos, para lo cual se repite el procedimiento que
CALL STAG
se efectuó en el programa de inicialización.

A continuación se llama a la subrutina STAG, cuyo


CALL CLDB funcionamiento se explicará más adelante, para iniciar la
escritura al display como calculadora y dejarlo vacío.

—( Continuando, se llama a la subrutina CLDB, que ya fue


IX < WA ] TO explicada, para borrar el buffer del display localizado en
RAM. Se carga ahora en el registro índice IX la dirección
WAITO desde donde se leerá la dirección a la cual irá el
programa después de retornar de la interrupción, en este
caso una subrutina de espera que se explicará
posteriormente.

A esta dirección, NKCAL, también viene el programa desde otros lugares, para
retornar a la subrutina de espera mencionada. Finalmente salta a la dirección
155

RTBL donde se ejecutarán las instrucciones necesarias para que el programa


retorne a la subrutina de espera deseada.

Se describe a continuación el salto a RKCAL, dirección a la


que viene el programa si estando en calibración de cero
(CAL. 0), se ha pulsado la tecla L de calibración.

Aquí carga el registro índice IX con la dirección CALFSO,


que fue definida en los directivos DWM, y desde donde se
leerá la dirección a la cual irá el programa después de
retornar de la interrupción, en este caso la subrutina para
realizar la calibración de escala completa (CAL. FS).

Finalmente salta a la dirección RTBL donde se ejecutarán las instrucciones


necesarias para que el programa retorne a la subrutina de calibración de escala
completa deseada.

El salto a la dirección CALADC se produce cuando estando


en medición de temperatura se pulsa la tecla L de
calibración; carga entonces en el registro índice IX la
dirección PROG4 definida con el directivo DWM de donde
leerá la dirección de la subrutina que corresponde a la
calibración de cero. Luego salta a la dirección RTBL, salto
que ya fue explicado en el párrafo anterior.

Se va a describir ahora el salto a la dirección TTC, salto


que se produce cuando el programa está en la rutina de
preguntar: ó el número ó el tipo de termocuplas.

BIT 6 , (HL)
Prueba por tanto el bit 6 de la dirección FLAGS, para
verificar si está preguntando el tipo de termocuplas; si
este bit es 1L (Z = 0L) el programa está preguntando el
tipo de termocuplas y salta entonces a la dirección TTCO;
NO
si, en cambio ese bit es 0L (Z = 1i) el programa está
preguntando el número de termocuplas; continúa
CP 5H entonces y como en esta rutina solo acepta los dígitos del
1 al 4 (número de pórticos habilitados), compara al
registro A con 5H, con lo cual si la tecla ingresada está
entre O y 4, se producirá un carry; entonces si la bandera
C = O, la tecla pulsada es mayor que 4 y salta a la
dirección NTC desde donde retornará de la interrupción
a una subrutina de tecla pulsada no válida.

Si la bandera C = 1, la tecla pulsada está entre O y 4, y


por lo tanto compara al registro A con OH para ver si la
156

tecla pulsada es O (el programa no acepta un cero como


número de termocuplas conectadas); si es así (Z = 1L)
salta a la dirección NTC que ya se mencionó en el párrafo
anterior.

Si la tecla pulsada no es cero (Z = 0L), carga la dirección


de RAM definida como NTER (número de termocuplas)
(NTER) -< A
con el registro A, y a continuación al registro índice IX
IX < PROCO
con la dirección PROGO, definida con los directivos DWM,
para saltar luego a la dirección RTBL, igual que en los
otros casos ya analizados.

Se analiza ahora el salto a la dirección SGDL cuando el


programa está preguntando el número de segundos que
se debe mostrar la medición de cada termocupla. Se
compara entonces el contenido del acumulador A, donde
CP OAH
está almacenada la tecla pulsada, con OAH ya que en
esta rutina solamente acepta los dígitos del 1 al 9
(mostrar la medición de cada termocupla máximo 9
segundos); si el dígito ingresado no está entre O y 9, la
NO
comparación no producirá un carry (bandera C = 0L) y por
lo tanto salta a la dirección NTC (tecla pulsada no válida);
CP OH si es lo contrario, se producirá un carry (bandera C = 1L),
y compara ahora el acumulador A con OH, para
comprobar si el dígito ingresado es 0; si lo es (bandera Z
= 1[_), salta también a la dirección NTC; si no lo es
(bandera Z = 0L), el dígito ingresado está entre 1 y 9 y por
lo tanto carga la localidad de memoria SEGDL con el
acumulador A, localidad donde se almacena el número de
segundos que se debe mostrar la medición de cada
termocupla. Se llama a continuación a la subrutina
SNSEGO, con el objeto de mostrar en el display el tiempo
que se ingresó durante 1 segundo, subrutina cuyo
funcionamiento se explicará posteriormente,

Se recurre ahora a la subrutina CLEAR, para borrar el


HL -< FLAGS
display; se carga el registro HL con la dirección FLAGS,
RES 7 , (HL) y se pone un 0L en el bit 7 de esa localidad de memoria,
con la instrucción RES 7,(HL), pues se ha terminado el
ingreso del tiempo que se debe mostrar la medición de
cada termocupla.
IX < ATDCO
Finalmente se carga el registro índice IX con la dirección
ATDCO, definida con los directivos DWM, para saltar
luego a la dirección RTBL, igual que en los otros casos ya
157

analizados y a continuar con la medición de temperatura


de cada termocupla durante el número de segundos
ingresados. A la última instrucción se la ha etiquetado
con RCAD pues a esta parte del programa saltará desde
CP OCH otro lugar.

A la dirección SCLE salta cuando el programa está


NO
preguntando en que escala mostrar la temperatura
medida. Compara el acumulador A con OCH para
comprobar si la tecla pulsada es la tecla C que
corresponde a °C; si es esa tecla (bandera Z = 1i_),
CP OFH
salta a la dirección SCLE1; si no es así compara el
acumulador A con OFH para comprobar si la tecla
pulsada es la tecla F que corresponde a °F; si no es
esa tecla (bandera Z = 0L), salta a la dirección NTC
(tecla pulsada no válida) pues cuando se está
- ingresando la escala de temperatura solo acepta las
A < OFDH
teclas C (°C) o F (°F); si es la tecla F (bandera Z = 1L),
(DBUF+l)-< A
A < 8EH carga el acumulador con OFDH (11111101 binario) que
es el código .que permite encender el LED que
corresponde a la indicación de °F, y escribe este
SCLE1 código en la dirección DBLJF+1 (buffer del dispiay para
LED's de indicación de escala); carga ahora el
acumulador A con 8EH que es el código a 7 segmentos
A •< QFEH
(DBUF+1}< A
de la letra F:
A < OC6H
F 10001110 binario 8E hexadecimal
SCLEO

Salta entonces a la dirección SCLEO.


(WSCALE)^ A
(DBUF+7)« A En la dirección SCLE1 (tecla pulsada C) carga el
acumulador con OFEH (11111110 binario) que es el
código que permite encender el LED que corresponde
CALL NTYTY
a la indicación de °C, y escribe este código en la
dirección DBUF+1; carga ahora el acumulador A con
OCGH que es el código a 7 segmentos de la letra C;
CALL OLEAR

C 11000110 binario C6 hexadecimal


HL<— FLAGS +1
RES O , (HL) En la dirección SCLEO carga el acumulador A en la
localidad WSCALE de RAM donde se almacena la
escala de temperatura (°C o °F) en la cual medirla; asf
mismo carga en la localidad DBUF+7 (buffer en RAM
del primer dispiay de la derecha) el acumulador A para
mostrar la escala de temperatura ingresada.
158

Llama ahora a la subrutina NTYTY para mostrar en el display durante 1 segundo


la escala de medición ingresada. A continuación llama a la subrutina CLEAR
para borrar el display, carga el registro HL con la dirección FLAGS+1, y pone un
0L en el bit O de esa localidad de memoria para indicar la terminación del ingreso
de escala; finalmente salta a la dirección RCAD a continuar con la medición de
temperatura con la escala que se ingresó.

A la dirección CUMOS salta a continuar con la rutina de


cuáles termocuplas mostrar la medición; cuando está en
esta "rutina solo acepta los dígitos O (no mostrar) ó 1
(mostrar), por eso compara al acumulador A con 2H, si el
dígito ingresado es mayor o igual que 2 no se producirá
un carry (bandera C = 0L), y salta a la dirección NTC
(tecla pulsada no válida).

Si el dígito ingresado es O ó 1, se producirá un carry


(bandera C = 1L), carga entonces en el registro D el valor
D -< A
del acumulador A (dígito O ó 1), y en éste el contenido de
A -< (SCAN) la localidad SCAN (termocupla de la cual se está
HL x— MTERO preguntando si mostrar o no su medición); el registro HL
C -< A lo carga con la dirección MTERO que almacena la
B x OH
HL x— HL + BC
información relacionada con la termocupla O, copia el
{HL) -< D acumulador (número de termocupla) en el registro C y
IX < PROG3 borra el registro B para luego sumar los registros HL y BC
para conseguir apuntar con HL la dirección MTER? que
corresponda a la termocupla de la cual se está
preguntando; en esa dirección escribe lo que contiene el
registro D: dígito O (no mostrar) o dígito 1 (mostrar).

Finalmente carga el registro índice IX con la dirección PROG3 desde donde se


leerá la dirección a la que irá el programa después de retornar de la interrupción.
En este caso mostrará en el display el dígito ingresado (O ó 1) durante 1 segundo
y preguntará de la siguiente termocupla; pero si fue la última mostrará la
configuración total y luego continuará en la medición de temperatura.

El programa salta a la dirección CLR cuando operando como


calculadora está presentando en el display el resultado de
una operación efectuada, y se ha pulsada una tecla
CALL STAG correspondiente a los dígitos O a 9, F (signo) ó H (punto).
Llama entonces a la subrutina STAG para borrar el display
y dejar al 8279 listo para escribir la tecla pulsada en el
CALL CLDB
primer display de la derecha; luego a la subrutina CLDB para
borrar las localidades de memoria correspondientes al buffer
del display; y finalmente salta a la dirección WDR que fue ya
analizada.
159

El programa salta a la dirección TTCO cuando está


preguntando el tipo de termocuplas, situación en la
cual solo acepta los dígitos del O al 3 significando el O
termocupla tipo K, el 1 tipo J, el 2 tipo E, y el 3 tipo T;
CP 4H por lo tanto compara al acumulador A con 4H con lo
cual se producirá un carry (bandera C = 10 si el dígito
ingresado está entre O y 3 y salta entonces a la
dirección TTC1; si no se produce un carry (bandera C
= 00 el dígito ingresado no está entre O y 3 y estamos
en una condición de tecla pulsada no válida (dirección
NTC) a donde el programa salta en cada oportunidad
que se produce esta condición.

En este caso se carga el registro índice IX con la


TTC1 dirección PROG1, que fue definido con el directivo
DWM, y de donde se leerá la dirección a donde debe
D -< A
retornar el programa después de atender la
A < (SCAN) interrupción, en esta circunstancia a la subrutina
HL < • TERO BADTY que realiza lo necesario para que el programa
C < A
regrese a continuar con la tarea que estaba
B * OH
HL <— HL + BC
ejecutando. Salta entonces a la dirección RTBL para
(HL) -< D lograrlo.
IX < PROG2

En la dirección TTC1 (dígito ingresado está entre O y 3)


copia el acumulador A, donde se encuentra el dígito
ingresado, en el registro D; y en el acumulador el
contenido de la localidad SCAN que guarda el número
de la termocupla de la cual se está preguntando el tipo.

Al registro HL lo carga con la dirección TERO que almacena el tipo de la


termocupla número O, copia el acumulador (número de termocupla) en el registro
C y borra el registro B, para luego sumar los registros HL y BC para conseguir
apuntar con HL la dirección TER? que corresponda a la termocupla de la cual se
está preguntando el tipo; en esa dirección escribe lo que contiene el registro D,
el tipo de la termocupla que se ingresó.

Finalmente carga el registro índice IX con la dirección PROG2 desde donde se


leerá la dirección a la que irá el programa después de retornar de la interrupción.
En este caso mostrará en el display el tipo de termocupla ingresado durante 1
segundo y luego preguntará de la siguiente termocupla; pero si fue la última
mostrará la configuración total y luego continuará en la medición de temperatura.
160

4.4.1 SUBRUTINAS INVOCADAS DESDE LASUBRUTINA KEYB

Se procede ahora a explicar el funcionamiento de [as subrutinas que fueron


invocadas desde la subrutina KEYB y que son las siguientes: STAG, CLDB,
COSG, SNSEGO, CLEAR y NTYTY. Las subrutinas CLDB (borrar el buffer del
display) y CLEAR (borrar el display) ya fueron analizadas en el programa de
inicialización.

4.4.1.1 SUBRUTINA STAG

Esta subrutina es utilizada cuando el equipo está en la


función de calculadora y sirve para borrar el display y dejar
listo al 8279 para que escriba en la RAM del display con
autoincremento y desde la fila 0. Los dígitos ingresados
CALL CLEAR
desde el teclado se escriben en el primer display de la
derecha, y ios ya ingresados se desplazan hacia la
izquierda.
XOR A
{CONTA } x— A
(FLAGS ) -< A En primer lugar llama a la subrutina CLEAR para borrar o
(FLAGS+1J -<— A apagar el display. A continuación con la instrucción XOR
A < 90H
OUT (OBFHJ.A
borra al acumulador A (cero) para escribirlo luego en las
localidades: CONTA que almacena el número de
caracteres ingresados (O caracteres); y en las localidades
FLAGS y FLAGS+1 (todas las banderas en 0L), lo cual
indica que el equipo está en función de calculadora.

Carga el acumulador A con 90H para escribir en la dirección de comandos del


8279 (OBFH), con la instrucción OUT, el comando para escribir en la RAM del
display con autoincremento desde el byte 0.

Finalmente retorna de la subrutina.

4.4.1.2 SUBRUTINA COSG

Subrutina utilizada para conservare! signo del número que se está ingresando;
se puede cambiar el signo del número a partir de que por lo menos esté
ingresado un dígito; como el signo se escribe en el primer dispíay de la
izquierda, al ingresar un nuevo dígito, todos los caracteres se desplazan hacia
la izquierda y por lo tanto el signo se perdería. Entonces esta subrutina logra
que no se pierda el signo del número.
161

Bufferdel Display

DBUF - ?Reserfa' DISPUY del EQUIPO D1


DBUF+1 -kEDls, escala '
DBUF+2 SIGNO
Situación antes de llamar
DBUF-í-3 a la Subritina COSG
DBUF-M
DBUF +5
DBUF-i-6
RAM de! OISPLAY 8279 s D1

DBUF+7 Dígito 1

En los gráficos que están arriba se puede observar ia situación de las


localidades de memoria que corresponden al buffer del display, el display del
equipo y la RAM del display del 8279 antes de llamar a la subrutina COSG.
Allí se ve que el signo está fuera del display del equipo, pero no de la RAM del
display del 8279 que tiene 8 bytes. Con la ayuda de estos gráficos se va a
entender mejor el funcionamiento de esta subrutina.

Carga el acumulador A con el contenido de la localidad


CONTA (número de caracteres ingresados); suma al
acumulador 82H que proviene del comando del 8279 para
escribir en la RAM del display y que tiene el código
A •< • (CONTA) 100AIAAAA, donde Al significa autoincremento, y los bits
A < A + 82H AAAA corresponden a la fila desde donde se quiere iniciar
OUT (OBFH), A
A x — (D8UFf2)
la escritura; en este caso se va a escribir sin
OUT (OBEH). A autoincremento desde la fila 2, por lo que el comando
A < (CONTA) queda 10000010 (82H); el resultado de la.suma ((CONTA)
A < A + 90H
OUT (OBFH),A
+ 82H) que está en el acumulador A, se lo escribe en la
dirección de comandos (OBFH) del 8279 a través de la
instrucción OUT; entonces el comando que se le está
dando al 8279 es: escribir en la RAM del display sin
autoincremento desde la fila 2 más el número de
caracteres ingresados.

A continuación se carga en el acumulador A, el contenido de la localidad


DBUF+2 que es el signo, y se lo escribe en la dirección de datos (OBEH) del
8279; se carga nuevamente el acumulador A con el contenido de CONTA, y
ahora se suma 90H que proviene del comando del 8279 para escribir a la RAM
del display con autoincremento desde la fila O, es decir 10010000 (90H); y, el
resultado de la suma se lo escribe en la dirección de comandos (OBFH) del
8279 a través de la instrucción OUT; entonces el comando es; escribir en la
RAM del display con autoincremento desde la fila O más el número de
caracteres ingresados. Con esto se deja listo al 8279 para el ingreso del
siguiente dígito.

Finalmente retorna de la subrutina.


162

En el gráfico que está a continuación se puede ver la situación del display del
equipo y de la RAM del display del 8279 después de la llamada a esta
subrutina.

Buffer del Display


W8& S D1
DBUF "* Résáya ; DISPUY del EQUIPO Í$®$í$
~'jÍ'$$$f$!¡-
DBUF+1 LED'l'escateí
DBUF+2 SIGNO Süuacíón después de llamar
DBUF+3 a la Subritina COSG
DBUF+4
DBUF +5 RAM del DISPLAY 8279 S D1
DBUF+6
DBUF+7 Dígito 1 7 O

4.4.1.3 SUBRUTINA NTYTY

Esta subrutina se utiliza para mostrar en el display durante 1 segundo lo que


contienen las localidades del buffer del display (DBUF+2 a DBUF+7).

Se llama en primer lugar a la subrutina CLEAR para borrar


o apagar el display.

CALL CLEAR
SE carga el registro doble HL con la dirección DBUF+2
desde donde se quiere transferir al display, dirección que
corresponde al primer dispiay de la izquierda; al registro B
HL <-— DBUF +2 se lo carga con 6H para escribir a los 6 display's, y al
B -< 6H registro D con 90H que corresponde al comando del 8279
D -< 9QH para escribir en la RAM del display con autoincremento
desde la fila 0.
CALL DISPY
Se llama a la subrutina DISPY para transferir al display del
equipo, a través del 8279, el número de caracteres con
que viene el registro B, desde las localidades apuntadas
< 1H
por el registro HL consecutivamente, y de acuerdo al
comando del 8279 que viene cargado en el registro D.
CALL DELAY
Se carga ahora al registro B con 1H, para a continuación
llamar a la subrutina DELAY con el objeto de mostrar
durante 1 segundo lo transferido al display por la subrutina
DISPY.

Finalmente retorna de la subrutina.


163

4.4.1.4 SUBRUTINA SNSEG

Subrutina para mostrar en el display del equipo, durante 1 segundo, el número


de segundos (entre 1 y 9) que se debe mostrar la medición de temperatura de
cada termocupla.

Se carga el registro HL con la dirección NSEG donde se


inicia la tabla de códigos hexadecimales del patrón para
escribir en el display SEC. ?, y que se definen en el
ensamblador con el directivo DFB (definición de byte).
- NSEG
DE-<— DBUF+2 Esos códigos en este caso son:
BC < 6H
LDIR
A -< (SEGDL)
s 10010010 binario 92 hexadecimal
E 10000110 binario 86 'hexadecimal
C. 01000110 binario 46 hexadecimal
—( 11111111 binario
10011001 binario
FF
FF
hexadecimal
hexadecimal
9 00101100 binario 2C hexadecimal
B < OH
C < A
HL x— HL + BC Se carga el registro doble DE con la dirección DBUF+2,
A < (HL) y el registro BC con 6H y finalmente se utiliza la
(DBUF+7) *— A
instrucción LDIR que opera de la siguiente manera:

CALL NTYTY (DE) (HL)


DE DE + 1
HL HL + 1
BC BC-1
y repite hasta que BC = O

Con lo cual se ha transferido desde la dirección NSEG hasta el buffer del


display (DBUF+2 a DBUF+7) en RAM, los 6 códigos correspondientes al
patrón mencionado.

Se carga al acumulador A con el contenido de la localidad SEGDL donde se


guarda el número de segundos que se está mostrando la medición de cada
termocupla. Se carga el registro HL con la dirección HTAB donde se inician
los códigos hexadecimales de los dígitos O a 9 para escribir en el display. Esta
instrucción ha sido etiquetada con SNSEGO porque la subrutina KEYB efectúa
una llamada a subrutina a este sitio para mostrar el dígito ingresado, después
de que estaba preguntando el número de segundos.

Se carga el registro B con OH y el registro C con el contenido del acumulador


A, para obtener en BC el número de segundos ingresados. Se suma los
registros HL y BC para que HL apunte al código hexadecimal del número
ingresado para mostrarlo en el display. Se carga el contenido de la localidad
164

apuntada por HL que es el código indicado, en el acumulador A, y se lo


escribe en la localidad DBUF+7 del buffer del display, que corresponde al
primer display de la derecha.

Se llama a la subrutina NTYTY para mostrar en el display durante 1 segundo,


el número de segundos ingresado.

Se termina con retorno de la subrutina.

4.5 SUBRUTINAS PARA FUNCIONES DE TECLA PULSADA

Como las direcciones definidas con los directivos DWM conducen a varias
subrutinas que se ejecutan al pulsar una tecla, dependiendo de la función que
está ejecutando el equipo, se las va a describir de acuerdo a ello; en primer
lugar las subrutinas correspondientes al modo de calculadora y posteriormente
las subrutinas correspondientes al modo de medición de temperatura.

4.5.1 SUBRUTINAS PARA EL MODO DE CALCULADORA

Las subrutinas definidas en el ensamblador con los directivos DWM para el


modo de calculadora son las siguientes: ENTRY, SUMA, RESTA, MULT, DIV,
SIGN, POINT y WAIT1. Se pasa entonces a describirlas una a una.

4.5.1.1 SUBRUTINA ENTRY

La llamada a esta subrutina se produce cuando estando en el modo de


calculadora se pulsa la tecla A, y su objetivo es convertir el número que está
mostrando el display primero en un número BCD, y luego en-un número binario
normalizado en punto flotante, y dejarlo en las localidades de memoria BN1
listo para ejecutar cualquier operación aritmética.

Se carga el registro SP (stack pointer) con la última localidad de la memoria


RAM 1FFFH. A continuación se utiliza el comando del 8279 para apagar el
display momentáneamente, y que tiene la forma: 101XIWIWBLBL, donde.los
bits IW se utilizan en aplicaciones que requieren pórticos de display separados
de 4 bits, que no es el presente caso, y los bits BL en 1[_ para blanquear o
apagar el display. El comando queda entonces 10100011 (A3H)
165

reemplazando la X por un 0Ll código con ei que se carga el acumulador A. Se


escribe a continuación este código en la dirección de comandos del 8279
(OBFH) a través de la instrucción OUT.

Se llama a la subrutina ENTER con el objeto de leer el


número que está mostrando el display desde las
localidades de RAM denominadas buffer del display, en
donde se encuentran los códigos a 7 segmentos con que
SP < 1FFFH se representan los números en cada display. Esta
A X OA3H subrutina transforma esos códigos a un número BCD y los
OUT {OBFH}, A guarda en las localidades de RAM con la dirección BCD;
además la posición del punto decimal sale en el registro C
del Z-80.
CALL ENTER

A continuación se llama a la subrutina BCDBIN para


CALL BCDBIN
convertir el número BCD en un número binario
normalizado en punto flotante, y que se guarda en las
localidades de RAM con la dirección TEM.
DE <- BN1
HL <- TEM Se carga a continuación el registro DE con la dirección
BC « 4H BNI1, el registro HL con la dirección TEM y el registro BC
LDIR
A <- OAOH
con 4H con el objeto de transferir el número binario
OUT (OBFH). A normalizado en punto flotante (4 bytes) que está en TEM a
HL •< FLAGS BN1, usando la instrucción LDIR que ya ha sido explicada.
SET 3 , (HL)

Continuando se carga el acumulador A con AOH que es el


comando del 8279 para encender nuevamente el display
(poniendo en los bits BL un 0L), y lo escribe en la dirección
de comandos (OBFH) del 8279.

Carga ahora al registro HL con la dirección FLAGS y enciende el bit 3 de esa


localidad (instrucción SET) para indicar que una operación ha sido efectuada.

Finalmente salta a la dirección WAIT1 a esperar el ingreso de una nueva tecla.

4.5.1.2 SUBRUTINAS SUMA, RESTA, MULT Y DIV

Estas subrutinas son invocadas para realizar las operaciones aritméticas de


suma, resta, multiplicación o división de dos números cuando, estando en el
modo de calculadora se pulsan las teclas B, C, D o E respectivamente.

En los cuatro casos se carga el registro SP (stack pointer) con la última


localidad de la memoria RAM 1FFFH. Se habilita las interrupciones con la
166

instrucción El. Se llama a la subrutina ÍDEM con ei objeto de convertir el


número mostrado en el display, y cuya copia se encuentra en el buffer del
display (localidades DBUF+2 a DBUF+7), a un número BCD que se guarda en
las localidades de RAM con el mismo nombre; luego convertirlo en un número
binario normalizado en punto flotante que se almacena en las localidades de
memoria TEM, y finalmente transferirlo a las localidades BN2.

Se llama a continuación a las subrutinas: AFP, SFP, MFP o DFP, dependiendo


de la operación que se desea efectuar, y por lo tanto de la tecla pulsada, así: B
(sumar), C (restar), D (multiplicar) o E (dividir). Estas subrutinas tienen la tarea
de sumar, restar, multiplicar o dividir respectivamente, dos números binarios
normalizados en punto flotante, y que se encuentran en las localidades de
memoria BN1 y BN2. El resultado de la operación efectuada, queda
almacenado en las localidades BN1.

Ahora se invoca a la subrutina IDEMO cuyo objetivo es convertir el número


binario normalizado en punto flotante que está almacenado en las localidades
BN1, resultado de la operación efectuada, a un número BCD que se guarda en
las localidades BCDE, para finalmente decodificarlo y mostrarlo en el display.

sp 1FFFH SP < 1FFFH


El El

CALI ÍDEM CALL ÍDEM

CALL MFP CALL DFP

CALL IDEMO CALL IDEMO

SB3F

HL < FLAGS
SET 3 , (HL)

Prosiguiendo, se carga el registro HL con la dirección FLAGS, y se enciende el


bit 3 de esta localidad de memoria, con la instrucción SET, con el propósito de
indicar que una operación ha sido efectuada. A la instrucción de carga del
167

registro HL se la ha etiquetado con SB3F, porque desde las subrutínas SUMA,


RESTA o MULT también se salta a esta dirección.

Finalmente el programa salta a [a dirección WAIT a esperar que se pulse una


nueva tecla.

4.5.1.3 SUBRUTINASIGN

Esta subrutina es invocada cuando estando en el modo


de calculadora se pulsa la tecla F de cambio de signo,
con el objeto de cambiar el signo al número que se está
mostrando en el display.
SP <—- 1FFFH
A < (CONTA)
Se carga el registro SP (stack pointer) con la última
CP OH localidad de la memoria RAM 1FFFH. Al acumulador A
se lo carga con el contenido de la localidad CONTA
(número de caracteres ingresados al display), y se lo
compara con OH para comprobar si e! contenido de
CONTA es O, es decir para conocer si algún carácter se
está mostrando en el display. Si es así (bandera Z = 1[_)
el display está vacío y entonces salta a la dirección
BIT 3,(HL) WAIT1 a habilitar interrupciones, y a esperar el ingreso
de una nueva tecla. Por lo tanto cuando el display está
vacío el programa no ejecuta el cambio de signo.

Si el display está mostrando por lo menos un carácter


(bandera Z = OL) continúa y carga al registro HL con la
dirección FLAGS y prueba el bit 3 de esta localidad de
A < fi
memoria para verificar si el display está mostrando el
OUT (OBFH), A
PUSH AF resultado de una operación efectuada; si el bit 3 de
IN A . (OBEH) FLAGS es 1|_ (bandera Z = OL) se está mostrando el
BIT 6, A resultado de operación efectuada y entonces salta a la
dirección SG2.

En el caso contrario suma al acumulador A, que


contiene el número de caracteres, 62H, que proviene
del comando del 8279 para leer la RAM del dísplay, y
que tiene el código 011AIAAAA, donde: Al significa
autoincremento, y los bits AAAA corresponden a la fila
desde donde se quiere iniciar la lectura; en este caso se
va a leer sin autoincremento desde la fila 2, por lo que el
comando finalmente queda 01100010 (62H); el
resultado de la suma ((CONTA) + 62H) que está en el
168

acumulador A, se lo escribe en la dirección de


comandos (OBFH) del 8279 a través de la instrucción
OUT; entonces el comando que se le está dando al
8279 es: leer la RAM del display sin autoincremento
RES 6,A
desde la fila 2 más el número de caracteres ingresados.
(Ver subrutina COSO).

A continuación se guarda en el stack (pila) el contenido


EX AF , AF'
POP AF
del acumulador con la instrucción PUSH, para leer en el
A X A + 20H acumulador A, a través de la instrucción 1N, desde la
OUT (OBFH), A dirección de datos (OBEH) del 8279, la localidad de la
EX AF . AF1
OUT (OBEH) , A
RAM del display que corresponde al signo. Se prueba
(DBUF+2)«— A el bit 6 del acumulador A, que corresponde al segmento
g del display, con la instrucción BIT, para comprobar si
ese bit está apagado (1|_, bandera Z - OL), lo cual
significa que el signo del número es positivo (+); salta
entonces a la dirección SGO.

Si el bit 6 del acumulador A es un OL (bandera Z = 10, el segmento g del


display está encendido, y por lo tanto el signo del número es negativo •(-);
enciende entonces ese bit, con la instrucción SET, para cambiar el signo del
número, y saltar a la dirección SG1.

En la dirección SGO el programa apaga el bit 6 del acumulador A con la


instrucción RES.

A continuación, con la instrucción EX AF.AF', intercambia el acumulador A y el


registro de banderas F principales, con los alternos A1 y F1, para conservar el
código a 7 segmentos del signo cambiado y utilizar el acumulador alterno en
las siguientes instrucciones.

Recupera del stack (pila) en el acumulador alterno A', lo que se había


guardado con la instrucción PUSH, y que es (CONTA) + G2H; suma 20H al
acumulador para obtener en él (CONTA) + 82H, que es el comando para
escribir en la RAM del display sin autoincremento a la dirección (CONTA) + 2;
es decir para escribir el signo cambiado.

Escribe este comando en la dirección de comandos (OBFH) del 8279 con la


instrucción OUT; intercambia los registros alternos AFJ con los registros
principales para tener ahora en el acumulador A, el código del signo cambiado.

Escribe a continuación este código en la dirección de datos (OBEH) del 8279 y


también en la localidad DBUF+2 del buffer del display para actualizarlo, y salta
a la dirección SPF, que es parte de la subrutina POINT, y que se describirá
más adelante.
169

El programa salta a la dirección SG2 si el display está


mostrando el resultado de una operación efectuada y
se ha pulsada la tecla de signo.
A -<—- 60H
OUT (OBFH), A
Carga entonces al acumulador A con 60H, que es el
IN A , (OBEH) código del comando del 8279 para leer la RAM del
BIT 6, A display desde la posición O en la cual se encuentra
ahora el signo del número; escribe este comando en
SI la dirección de comandos (OBFH) del 8279, y a
continuación lee el signo desde la dirección de datos
(OBEH) al acumulador A. Se repite en esta parte la
NO prueba del bit 6 del acumulador para ver si el
SET 6,A
segmento g del display estaba encendido o no, y las
otras instrucciones para cambiarlo, pero ahora con
las etiquetas SG3 y SG4.
SG3
Guarda a continuación el acumulador A, que contiene
el código del signo cambiado, en la pila (stack) con la
RES 6,A instrucción PUSH. Carga al acumulador con 80H que
SG4
es el código del comando del 8279 para escribir en la
RAM del display sin autoincremento desde la fila O, y
lo escribe en la dirección de comandos (OBFH).
PUSH AF
A -< BOH
Recupera de la pila en el acumulador con la
OUT (OBFH),A
POP AF1 instrucción POP el código del signo cambiado y lo
OUT (OBEH), A escribe en la dirección de datos (OBEH) del 8279, y
(DBUF+2)<—A en la localidad DBUF+2 del buffer del display para
actualizarlo.

Finalmente salta a la dirección WAIT1 a habilitar


interrupciones y a esperar la pulsación de una nueva
tecla.

4.5.1.4 SUBRUITNAPOINT

El Programa salta a esta subrutina, si estando en el modo de calculadora, se


pulsa la tecla H, con el objeto de ingresar el punto decimal al número que se
está mostrando en el display.

Se carga el registro SP (apuntador de pila) con la última dirección de la


memoria RAM. Carga el registro HL con la dirección FLAGS para probar el bit
3 de esta localidad, y comprobar si el display está mostrando el resultado de
una operación efectuada si ese bit tiene un 1t (bandera Z = OL); salta entonces
170

a la dirección OPEF. Si el bit 3 de FLAGS tiene un 0L (bandera Z - 1L), no se


está mostrando el resultado de una operación efectuada, continúa por lo tanto,
y prueba ahora el bit 4 de FLAGS para verificar si ya se ha ingresado el punto
decimal; si ese bit tiene un 1|_ (bandera Z = 0L) salta a la dirección WAIT1 a
habilitar interrupciones y a esperar una nueva tecla.

Si el bit 4 de FLAGS tiene un OL (bandera Z = IL), no se


ha ingresado aún el punto decimal; continúa, y carga al
acumulador A con el contenido de CONTA (número de
SP < 1FFFH caracteres ingresados), y procede a compararlo con OH
HL < • FLAGS para comprobar si el display está vacío; si es así
BIT 3 , (HL)
(bandera Z = IL) salta a [a dirección FRSP; si no, el
display no está vacío, resta entonces del acumular 1H,
guarda este resultado que es: número de caracteres
ingresados menos 1 ((CONTA)~1) en la pila (stack), y
suma al acumulador 60H para con ese resultado escribir
NO
en la dirección de comandos del 8279 (OBFH) este
BIT 4.ÍHL) comando que significa: leer la RAM del display sin
autoincremento desde la fila (CONTA)-1, fila que
corresponde al carácter que se está mostrando en el
primer display de la derecha.

NO Lee a continuación, desde la dirección de datos (OBEH)


A< (CONTA)
del 8279 al acumulador A ese carácter, pone un 0L en el
CP OH bit 7 con la instrucción RES, con el objeto de encender
el segmento del display que corresponde al punto;
NO
intercambia los registros principales AF con los alternos
AF' para mantener el código del último carácter con el
punto decimal encendido; recupera de la pila (stack) al
acumulador A', lo que se guardó con la última
instrucción PUSH, que es el número de caracteres
ingresados menos 1; suma al acumulador A1 80H para
escribir el resultado en la dirección de comandos
OUT (OBFH), A (OBFH) del 8279, comando que significa: escribir en la
IN A , (OBEH)
RES 7, A
RAM del display sin autoincremento desde la fila
EX AF. AF' (CONTA)-1 (primer dispaly de la derecha); intercambia
POP AF los registros principales con los alternos, para recuperar
A < A + BOH
OUT (OBFH), A
en el acumulador A, el código del número con el punto
EX AF, AF1 decimal encendido y escribirlo en la dirección de datos
OUT (OBEH), A (OBEH) del 8279 y también en la dirección DBUT+7 del
(DBUF+ 7) < A
buffer del display, para actualizarlo.
SET 4, (HL)

A continuación pone un IL en el bit 4 de la dirección


apuntada por HL que es FLAGS para indicar que el
punto decimal ha sido ya ingresado. Carga nuevamente
171 el contenido de la localidad CONTA en el acumulador A,
171

le suma 90H, para el resultado escribirlo en la dirección


170
de comandos (OBFH) del 8279 con el fin de dejar listo al
8279 para escribir en la RAM del display con
autoincremento desde la fila (CONTA)+1, es decir para
(CONTA)
A •< A + 90H
continuar ingresando un nuevo dígito, desde donde
OUT (OBFH) ,A había quedado, antes de ingresar el punto decimal.

Finalmente salta a la dirección WAIT1 para habilitar


interrupciones y esperar la pulsación de una nueva
tecla.

A la dirección OPEF salta si el display está mostrando el resultado de una


operación efectuada, el programa entonces debe borrar el display e ingresar
un cero con punto decimal como primer carácter. Llama por lo tanto a la
subrutina STAG para borrar el display y dejar listo al 8279 para el ingreso de
caracteres.

Llama también a la subrutina CLDB para borrar el


contenido del buffer del diplay localizado en RAM.

CALL STAG A la dirección FRSP viene si el display esta vacío.

Carga el acumulador A con 40H que es el código del


CALI CLDB
número O con punto decimal, así:

0. 01000000 binario 40 hexadecimal

A -< 40H Escribe este código en la dirección de datos (OBEH) del


OUT (OBEH), A
SET 4 , (HL)
8279 para mostrar en el primer display de la derecha, el
DEC HL número O con punto decimal. Pone un IL en el bit 4 de
INC (HL) la dirección apuntada por HL que es FLAGS para indicar
(DBUF+7}-< A que el punto decimal ha sido ya ingresado. Decrementa
el registro HL para apuntar la dirección CONTA que está
ubicada en la dirección anterior a FLAGS; incrementa el
contenido de CONTA para indicar que hay un carácter
ingresado.

Carga el alcumulador A, que contiene el código del número O con punto


decimal, en la dirección DBUF+7, para actualizar el buffer del display.
Finalmente salta a la dirección WAIT1 para habilitar interrupciones y esperar
una nueva tecla.

4.5.1.5 SUBRUTINA WAIT


172

Esta subrutina es invocada cuando el equipo está


funcionando en modo de calculadora, y lo que hace es
habilitar interrupciones, ejecutar la instrucción NOP (no
operación), y regresar a la dirección WAIT, hasta que se
vuelva a pulsar una nueva tecla.

Se hace así porque el barrido del display y del teclado


es controlado por el circuito INTEL 8279, y con ello se
libera al LiP de esta tarea.

En este modo el programa, después de realizar alguna


tarea solicitada al pulsar una tecla, salta a esta
subrutina a esta condición de espera.

Las subrutinas que hemos analizado hacen llamadas a otras subrutinas que
pasamos a explicar a continuación; asf; la subrutina ENTRY, llama a las
subrutinas ENTER y BCDBIN, esta última será descrita dentro del análisis de
Aritmética de Punto Flotante. Se describe ahora la subrutina ENTER.

4.5.1.6 SUBRUTINA ENTER

Subrutina para transformar el número que se está mostrando en el display con


códigos a 7 segmentos, y cuya réplica se encuentra en las localidades de RAM
DBUF+2 a DBLJF+7, a un número BCD que se almacena en las localidades de
RAM BCD (3 bytes, 1 por cada 2 displays), y la posición del punto decimal en
el registro C del ¡iP.

Buffer Display
DISPLAY
DBUF+2 BF Número BCD #display

DBUF+3 80 BF 80 02 99 CO
DBUF+4 02
DBUF+5 99 • 8 6. 4 0 3
DBUF+6 CO
DBUF+7 BO Registro C = 3H, posición punto.

En el gráfico anterior se puede observar un ejemplo donde aparece el display


mostrando un número, el contenido de las localidades de memoria del buffer
del display, y como quedarán las localidades BCD luego de que se ejecuta la
subrutina ENTER. En la parte superior de cada display se han colocado los
códigos a 7 segmentos correspondientes a cada número mostrado, y en la
parte inferior el número de display como referencia para el funcionamiento de
173

esta subrutina. En el caso del display 3 que muestra el número 6 con punto
decimal, el código a 7 segmentos es 02H porque el bit 7 que corresponde al
punto decimal debe estar encendido con un OL; ese mismo número sin punto
decimal tendría el código 82H, como aparece en la tabla HTAB de los códigos
a 7 segmentos de los números O a 9.

Se carga el registro índice IX con la dirección BCD+2


para apuntar el tercer byte de las localidades BCD en
RAM, donde se almacenará el número convertido.
IX < BCD-i-2
Se carga el registro HL con la dirección HTAB para
HL -< HTAB apuntar el inicio de la tabla de los códigos a 7
IY < DBUF+ 7 segmentos de los dígitos O a 9, la misma que está
C •< OH ordenada en forma ascendente y consecutiva. AI
D -< 3H
E •< 2H
registro índice IY se lo carga con la dirección
DBUF+7 que corresponde al primer display desde la
derecha. Se inicializa el registro C con OH pues en él
se obtendrá el número BCD mostrado en cada
display. Al registro D se lo carga con 3H porque
A <-
CP OFFH servirá como contador de los bytes de las localidades
BCD.
NO
Como en cada byte de las localidades BCD se
almacenarán 2 dígitos BCD, ya que para representar
un número BCD se requieren solamente 4 bits, se
carga al registro E con el valor 2H, pues lo se lo
utilizará como indicador de cuál dígito se está
convirtiendo, así: dígito más significativo MSD
(izquierda), E = 2; y, dígito menos significativo LSD
(derecha), E = 1. (Se utiliza las abreviaturas MSD y
LSD por las siglas del inglés).

A la dirección ETO salta el programa para iniciar la


conversión de un nuevo display.

Se carga el acumulador A con el contenido de lo


apuntado por ei registro índice IY, que es alguna
localidad del buffer del display (DBUF+?), es decir el
código a 7 segmentos de alguno de los display's. Se
lo compara con OFFH para conocer si ha estado
apagado, o sea sin mostrar algún dígito; por lo tanto,
si el acumulador A = FFH (bandera Z = 1|_), el display
está apagado, y salta entonces a la dirección ET5. Si
el acumulador A & FFH (bandera Z = 0L), el display
está mostrando algún dígito; por lo tanto se pone un
1t en el bit 7 del acumulador A, por si acaso el punto
decimal del dígito estuvo encendido.
174

En el siguiente lazo, compara el acumulador A con el contenido de lo apuntado


por HL, que son las localidades HTAB ya mencionadas; si A = (HL) (bandera Z
= 1[_), salta a la dirección ET2, pues ya encontró el código que está mostrando
el display.

Si, por el contrario A & (HL) (bandera Z = OL),


incrementa el registro HL para apuntar el código del
siguiente dígito en las localidades HTAB, y al registro
C para contar el número de veces que se repite el
lazo, y por lo tanto para encontrar el dígito
SI representado en el display; a continuación salta a la
dirección ET1 a repetir la comparación.
(IX) -< C
CP D
En la dirección ET2, carga al acumulador A con 1H y
lo compara con el registro E, para conocer qué dígito
NO está convirtiendo: si A = E = 1 (bandera Z = 1|_), está
en el MSD, y salta a la dirección ET4; si no es así,
entonces A ^ E & 1 (bandera Z = OL), y por lo tanto E
= 2, lo que significa que está en el LSD. Carga
entonces la localidad de memoria apuntada por el
registro índice IX (alguno de los bytes de BCD) con el
registro C, donde se obtuvo el dígito. Compara a
continuación al acumulador A que tiene 1H con el
C < OH registro D que indica el byte de las localidades BCD:
HL -< HTAB
DEC IY
si A - D = 1 (bandera Z = IL), está en el primer byte
de BCD, y como convirtió ya el LSD de este byte, ie
toca ahora convertir el display que corresponde al
signo; salta entonces a la dirección ET9.

Si, en cambio A & D & 1 (bandera Z = OL), decrementa


el registro E que contenía 2H, para indicar que va a
A <- C obtener ahora el MSD; inicializa nuevamente el
SLA A registro C con OH para obtener un nuevo dígito,
SLA A
SLA A
instrucción que se ha etiquetado con ET3, para saltar
SLA A a esta dirección a convertir un MSD; carga el registro
A -< IX) HL con HTAB para apuntar el inicio de los códigos a
(IX) X- A
DEC D
7 segmentos de los dígitos O a 9; decrementa el
INC E registro índice IY para apuntar un byte menos en las
DEC IX localidades DBUF, es decir para convertir el siguiente
display de la izquierda; y, salta a la dirección ETO a
repetir el lazo para convertir un nuevo dígito.

A la dirección ET4 salta si E - 1, y por tanto está convirtiendo el MSD, carga


entonces el acumulador A con el registro C y desplaza los bits del acumulador
4 veces hacia la izquierda, introduciendo un O en el bit menos significativo del
acumulador A, con lo cual desplaza el dígito encontrado a los 4 bits más
175

significativos del acumulador (bits 4 a 7), y los 4 bits menos significativos (bits
O a 3), quedan con O's. Suma el acumulador A con el contenido de lo
apuntado por IX, que es alguno de los bytes de BCD en RAM, y que contiene
ya el dígito LSD convertido correspondiente al display anterior; con esta suma
obtiene en el acumulador A los dígitos MSD y LSD que corresponden a 2
display]s consecutivos. Carga por lo tanto en lo apuntado por IX, el resultado
de la suma indicada.

Como ya completó la conversión de un byte,


decrementa el registro D, para disminuir el número de
bytes a convertir, incrementa el registro E que estaba
en 1H (MSD) para continuar con la conversión de un
nuevo LSD (E = 2), decrementa IX para apuntar el
byte anterior de las localidades BCD en RAM, pues
inició la conversión con el primer display de la
derecha, y por lo tanto con el último byte de BCD.

si Salta finalmente a la dirección ET3, a iniciar la


INC A
conversión de un nuevo dígito.
CP E
A la dirección ET5 salta si ha encontrado un display
apagado (A = FFH), lo cual significa que el dígito es
0; borra el acumulador A con la instrucción XOR, y lo
compara con el registro D para conocer si ha
NO completado ya los 3 bytes de las localidades BCD; si
INC
D - O (bandera Z = 1i_), ha completado la conversión
de los 3 bytes de BCD, y salta a la dirección ET8 a
ET7 convertir el signo, y encontrar la posición del punto
decimal.
DEC D
DEC IX Si D & O (bandera Z = 0L), no ha completado todavía
los 3 bytes de BCD, y como encontró un display
apagado, los siguientes hacia la izquierda también
están apagados, entonces pondrá ceros en los bytes
ET6
restantes de BCD.

Para ello incrementa el acumulador que tenía un O, y


OH lo compara con E para conocer qué dígito está
convirtiendo: si A & E & 1 (bandera Z = 0L), significa
que E = 2, y por tanto que está convirtiendo un LSD,
salta entonces a ET6.

Si A = E - 1 (bandera Z = 10, significa que está convirtiendo un MSD, no carga


O en la localidad de BCD, porque al convertir el LSD anterior, y cargarlo en la
localidad BCD respectiva, los bits correspondientes al MSD tienen ceros;
incrementa por lo tanto el registro E que contiene un 1, para dejarlo en 2 e
176

indicar que va a convertir un MSD. Decrementa entonces el registro D,


instrucción que se ha etiquetado con ET7, porque pondrá ceros en el siguiente
byte de BDC, y decrementa el registro índice IX para apuntar el byte anterior
de las localidades BCD en RAM; salta entonces a ET5 a continuar llenando las
localidades BCD con ceros.

A la dirección ET6 salta si E = 2, lo cual significa que


está en un LSD, y por lo tanto carga la localidad
apuntada por IX con cero, y con ello ha puesto cero
en el MSD de este byte; por esta razón mantiene el
IY < DBUF+ 2 registro E en 2 (MSD) y salta a la dirección ET7 a
INC IX
continuar llenando con ceros el siguiente byte.

A la dirección ET8 salta si D = O, lo que quiere decir


que los 3 bytes de BCD en RAM están llenos, va
entonces a convertir el signo; apunta con el registro
índice IY la dirección DBUF+2 donde se encuentra el
código del signo; incrementa el registro IX que
DEC
terminó con la dirección BCD-1 después de poner O's
ETA
al encontrar algún display apagado; por último salta a
la dirección ETA.
A < (IY) A la dirección ET9 salta después de cargar en el
CP OFFH
primer byte de BCD el LSD, y por tanto a encontrar el
signo; decrementa por tanto el registro índice IY para
NO apuntar la dirección en DBUF que corresponde al
signo. En la siguiente instrucción etiquetada con ETA
carga en el acumulador A el contendido de lo
apuntado por IY que es DBUF+2, y por lo tanto el
código del signo, lo compara con OFFH para verificar
si ha estado apagado, lo que equivale a tener signo
positivo (+); entonces si A = FFH (bandera Z = 1i_), es
un signo positivo y salta a la dirección ETB; si en
cambio A & FFH (bandera Z - 0L), el número tiene
signo negativo (-), y entonces pone un IL en el bit 7
de lo apuntado por IX que es el primer byte de BCD,
lo cual significará un número negativo.

En la dirección ETB va a encontrar la posición del


punto decimal para lo cual carga el registro B con 4H,
con el fin de buscarlo desde el segundo display de la
izquierda pues el primer display que es el signo no
puede tenerlo; y, en cambio si hasta el quinto display
no lo encuentra, quiere decir que está en el sexto.
177

Inicializa el registro C con 2H ya que inicia la


búsqueda desde el segundo display y en este registro
saldrá la posición del punto decimal; incrementa el
registro IY para apuntar la localidad DBUF+3
correspondiente al segundo display (IY estaba
apuntando DBUF+2 que corresponde al signo),
prueba el bit 7 de esta localidad para comprobar si el
punto decimal está encendido, entonces: si el bit 7 es
0[_ (bandera Z = 1|_), el punto decimal está encendido
y salta a la dirección ETD a retornar de la subrutina;
si por el contrario el bit 7 indicado es 1i_ (bandera Z =
OL), el punto decimal de ese display está apagado, y
por lo tanto debe buscarlo en el siguiente display,
para lo cual incrementa IY para apuntar la siguiente
localidad de DBUF, incrementa C porque va a buscar
en el siguiente display y decrementa B para conocer
si ya buscó hasta el quinto display. Si B = O terminó
de buscar y por lo tanto la posición del punto decimal
está en el sexto display, lo cual quedó registrado en
C.

Si B & O, salta a la dirección ETC a seguir buscando. El decrementar el


registro B y verificar si es cero se lo logra con la instrucción del Z-80 DJNZ.

Finalmente retorna de la subrutina con la instrucción RET que está etiquetada


con ETD..

Las subrutinas SUMA, RESTA, MULT y DIV llaman a las subrutinas ÍDEM e
IDEMO que se analizan a continuación. Igualmente estas subrutinas llaman a
su vez a las subrutinas AFP, SFP, MFP y DFP respectivamente, que son las
que realizan las operaciones aritméticas en punto flotante, y que por lo tanto se
las analizará al describir esa parte.

4.5.1.7 SUBRUTINA ÍDEM

Es utilizada para convertir el número que se está mostrando en el display a un


número BCD, convertirlo luego a un número binario normalizado en punto
flotante que se almacena en las localidades TEM, y finalmente transferirlo a las
localidades BN2 para dejar listo al programa para realizar una operación
aritmética.

Llama primero a la subrutina ENTER que convierte el número mostrado en el


display a un número BCD.
178

A continuación llama a la subrutina BCDBIN para convertir


el número BCD, resultado de la llamada a la subrutina
anterior, a un número binario normalizado en punto flotante
CALL ENTER
que sale en las localidades de RAM etiquetadas con TEM
(4 bytes).

CALL BCDBIN Carga entonces el registro DE con la dirección BN2, que


es a donde se va transferir; al registro HL con la dirección
TEM, que es desde donde se va a transferir; y, al registro
DE •<- BN2 BC con 4H, que es el número de bytes a transferir; con el
HL •<- TEM objeto de transferir desde las localidades TEM a las
BC -<- 4H
LDIR
localidades BN2, 4 bytes, con la instrucción LDIR, cuya
operación ya ha sido explicada.

Finalmente retorna de la subrutina.

4.5.1.8 SUBRUTINA IDEMO

Transforma un número binario normalizado en punto


flotante, que se encuentra almacenado en las localidades
de RAM etiquetadas con BN1, a un número BCD (Binario
Codificado en Decimal) que sale en las localidades de
CALL BBCD
memoria etiquetadas con BCDE, y luego decodificarlo para
mostrarlo en el display.
CALL C7SEG
Llama primero a la subrutina BBCD, que convierte un
número binario normalizado en punto flotante que está
almacenado en BN1 (4 bytes), a un número BCD que
queda almacenado en BCDE (3 bytes), y la posición del
punto decimal en el registro E del LiP.

Luego llama a la subrutina C7SEG para convertir el número BCD que se


encuentra en los bytes de BCDE, y la posición del punto decimal en el registro
E, resultado de la llamada a la subrutina anterior, a los respectivos códigos a 7
segmentos para mostrarlo en el display.

Finalmente retorna de la subrutina.

La subrutina ÍDEM invoca a las subrutinas ENTER, que fue ya descrita, y a la


BCDBIN que se describirá en aritmética de punto flotante. La subrutina IDEMO
en cambio, invoca a las subrutinas BBCD, que se describirá también en
aritmética de punto flotante, y a la subrutina C7SEG, que se describe a
continuación.
179

4.5.1.9 SUBRUTINAC7SEG

Convierte un número BCD (Binario Codificado, en


Decimal) que viene almacenado en las localidades de
RAM etiquetadas con BCDE (3 bytes), y la posición
del punto decimal en el registro E del iiP, a los
códigos a 7 segmentos que se almacenan en las
HL < BCDE
localidades DBUF (buffer del display), para finalmente
IY < DBUF +2 mostrarlos en el display a través del 8279.
BIT 7 , (HL)
Carga el registro HL con la dirección BCDE donde
NO empieza el número BCD que se va a convertir, y el
registro índice IY con la dirección DBUF+2 donde se
inician las localidades del buffer del display; prueba el
bit 7 de lo apuntado por HL (primer byte del número)
para conocer el signo: si ese bit es (\a Z -
1i_), el signo es positivo y salta a la dirección C70; si
en cambio ese bit es 1L (bandera Z - OL), el signo es
negativo y entonces carga en lo apuntado por IY
(primer byte del buffer del display) el código a 7
segmentos del signo negativo que es OBFH, así:

10111111 binario BF hexadecimal

Salta luego a la dirección C71.

En la dirección C70, a donde viene cuando el signo


es positivo, carga en lo apuntado por IY el código a 7
segmentos para apagar el display que es OFFH, y
que significa signo positivo.
IX < HTAB
A -< OFH
AND (HL)
A continuación incrementa el registro IY para apuntar
el siguiente byte del buffer del display; inicializa el
registro C con 3H para usarlo como contador de los 3
bytes de BCDE, y al registro B con 1H que servirá
como contador del número de dígitos BCD de cada
byte que se van convirtiendo; lo carga con 1H porque
se convirtió ya el primer dígito correspondiente al
signo.

Carga el registro índice IX con la dirección HTAB,


donde se inician los códigos a 7 segmentos de los
dígitos O a 9 en forma consecutiva, instrucción que
está etiquetada con C72, a donde retornará a
convertir un nuevo dígito; carga el acumulador A con
180

OFH (00001111 binario) para efectuar a continuación


la operación -lógica AND con el contenido de lo
apuntado por HL, que es alguno de los bytes de
BCDE con el objeto de que en A quede solamente el
A -<—
(IY) <- A LSD; el resultado de esta operación afecta a la
INC IY bandera Z, por lo tanto si Z - 1i_, el LSD es O, y salta
DEC a la dirección C74; si no es así, decrementa al
acumulador e incrementa el registro IX para apuntar
NO el siguiente código a 7 segmentos en HTAB, y por
último salta a la dirección C73 a verificar si el registro
A es 0. Por lo tanto, este lazo se repite hasta que A
sea cero,
DEC
A la dirección C74 viene cuando el acumulador A es
NO
ya cero, y por lo tanto IX apunta el código a 7
segmentos respectivo en las localidades HTAB; por
ello carga en el acumulador el contenido de lo
apuntado por IX (código a 7 segmentos), y a
continuación carga la localidad apuntada por IY en el
B < 2H
INC HL buffer del display, con el código que está en A.
Incrementa IY para apuntar el siguiente byte de
075 DBUF, y decrementa B para conocer si ha convertido
un LSD; si B ^ O, salta a C75 a convertir un LSD; si
A <- (HL) en cambio B = O, ha terminado de convertir los 2
RRD dígitos de un byte; va entonces a decrementar C con
el objeto de verificar si ha concluido con los 3 bytes
de BCDE, entonces si C = O (bandera Z = 1|_) salta a
la dirección C76 a ubicar la posición del punto
C76 decimal; si en cambio C & O (bandera Z = 0L) continúa
e inicializa el registro B con 2H para iniciar la
conversión de un nuevo byte, y por eso incrementa
C -< E también HL para apuntar el siguiente byte de BCDE.
IY-< DBUF+1
IY < IY + BC
RES 7, (IY)
A la dirección C75 salta para convertir un LSD para
ello carga en el acumulador A el contenido de lo
apuntado por HL (algún byte de BCDE) y recurre a la
CALL CLEAR instrucción RRD (rotar a la derecha un dígito), que
opera con el acumulador A y el contendido de lo
apuntado por HL, y que funciona de la siguiente
HL < DBUF+2 manera:
B < 6H
D < 90H
I i I T
MSDj LSDi MSD2 LSDz (HL)
i |

181
Aquí se puede notar que el MSD del acumulador no
es afectado. En el caso presente el acumulador A y
181

el contenido de lo apuntado por HL, son ¡guales por la


instrucción anterior, entonces antes de la instrucción
RRD, con A = (HL), se tiene:

CALL DISPY i 1 +
MSD LSD MSD LSD (HL)
-f

Y después de que se ejecute la instrucción;

I i I +
MSD LSD LSD MSD (HL)
i

Por lo tanto se han intercambiado los dígitos MSD y LSD en la localidad


apuntada por HL, y en consecuencia salta a la dirección C72 a repetir la
conversión de un LSD.

A la dirección C76 salta cuando se ha terminado de convertir los 3 bytes de


BCDE, y debe ubicar la posición del punto decimal; para- ello, como en el
registro E viene esa posición, carga en el registro C el contenido de E para
más adelante sumar los registros IY y BC¡ el registro B tiene ya un O pues el
programa salta a la dirección C76 cuando B = 0; carga el registro IY con la
localidad DBUF+1 (una antes de DBUF+2) porque al numerar los dísplay's
inicia desde 1 y no desde cero, y suma entonces este registro con BC para
apuntar con IY la localidad en el buffer del display donde debe ubicarse el
punto decimal; coloca un OL en el bit 7 de esa localidad con la instrucción RES,
para encender el punto decimal.

Para finalizar llama a la subrutina CLEAR para borrar o apagar el display,


carga el registro HL con la dirección DBUF+2, donde se encuentran los
códigos a 7 segmentos del número que se desea mostrar en el display, el
registro B con 6H, y el registro D con 90H, para llamar a la subrutina DISPY, a
través de la cual se escribe en la RAM del display del 8279 el número de
caracteres con que viene el registro B, transfiriendo desde las localidades
apuntadas por HL, y de acuerdo al comando con que está cargado el registro
D (90H) que significa: escribir en la RAM del display con autoincremento,
desde la fila 0.

Finalmente retorna de la subrutina.

4.5.2 SUBRUTINAS PARA MODO MEDICIÓN DE TEMPERATURA


182

Las subrutinas que se utilizan en el modo de Medición de Temperatura son


aquellas que se muestran en la tabla de definiciones de los directivos DWM,
por lo tanto se las describe de acuerdo a esa tabla.

4.5.2.1 SUBRUTINA ATDC

Esta subrutina es invocada luego de que se ha encendido el equipo, se ha


ingresado e! número de termocuplas, los tipos de cada una de ellas, y se ha
mostrado la configuración total. De igual forma, si eí equipo está en modo de
calculadora y se pulsa la tecla SHIFT, viene a esta subrutina luego de atender
la interrupción provocada por la pulsación de la tecla.

Esta parte del programa es la que realiza el barrido de las termocuplas


conectadas al equipo y muestra la temperatura que mide cada una de ellas. Si
estando en esta tarea se pulsa cualquiera de las teclas A, B, C, D, E o L, el
programa regresa a esta subrutina después de ejecutar la función que
corresponde a cada tecla.

Carga el registro stack pointer SP con la última localidad


en RAM. La siguiente instrucción está etiquetada con
ATCD_F porque recibirá llamadas desde las subrutinas
KEYB y CONFIG, instrucción que carga el registro HL
sp 1FFFH con la dirección FLAGS, para a continuación poner un
1L en el bit 2 de esa localidad con el fin de indicar que el
programa está en medición de temperatura. Carga
ahora el registro HL con la dirección MTERO donde se
HL -< FUGS
inician las localidades de memoria que guardan las
SET 2, (HL) indicaciones de mostrar (1) o no mostrar (0) la medición
HL < MTERO de una termocupla particular; el registro B con O, el.
B < OH
A -< (NTER)
acumulador A con el contenido de NTER (número de
C -< A termocuplas) que luego lo copia en el registro C, y por
A -< 1H último carga el acumulador A con 1H, para utilizar la
CPIR instrucción CPIR que funciona de la siguiente manera:

resta del acumulador A el contenido de lo apuntado por HL


A-(HL)
HL ~<- HL + 1
- BC-1
repite hasta que
A = (HL) ó hasta que
183

Lo cual significa que con esta instrucción se chequea si


alguna de las localidades MTERx contiene un 1, pues se
cargó el acumulador A con 1; entonces si la bandera Z =
1i_, hay alguna localidad que contiene 1, y por lo tanto va a
HL <— CERROR
B < 5H
ATQM a medir temperatura; si, en cambio la bandera Z =
D < 90H OL, todas las localidades MTER contienen O,

Llama entonces a la subrutina CLEAR para borrar o


CALL DISPY apagar el display; carga el registro HL con la dirección
CERROR para apuntar el inicio del patrón a 7 segmentos,
definido con el directivo DFB, de la palabra Error, para
1H mostrarla en el display; esos códigos son:

E 10000110 binario 86 hexadecimal


CALL DELAY
r 10101111 binario AF hexadecimal
r 10101111 binario AF hexadecimal
O 11000000 binario CO hexadecimal
MOSTRAR
r 10101111 binario AF hexadecimal

Carga a continuación el registro B con 5H, pues son 5 códigos, y el registro D


con 90H para llamar a la subrutina DISPY para mostrar en el display la palabra
mencionada. Para proseguir carga el registro B con 1H para llamar a la
subrutina DELAY y mostrar por aproximadamente 1 segundo esa palabra.
Finalmente salta a la dirección MOSTRAR para preguntar de cuál termocupla
mostrar la medición, pues el equipo no acepta que no se muestre la medición
de ninguna termocupía.

El programa viene a la dirección ATQM cuando por lo


menos existe una termocupla de la cual mostrar la
medición. Carga el registro IX con la localidad
IX -< MTERO MTERO donde comienza la información de si mostrar
HL X SCAN o no la medición de alguna de las íermocuplas; carga
(HL) < 10H
el registro HL con la localidad SCAN donde se guarda
la información de la termocupla de la cual se está
mostrando la medición; carga en lo apuntado por HL
(localidad SCAN) 10H, para que a través de este
código se habiliten los multiplexores análogo y digital
y se inicie el barrido de las termocuplas desde el
pórtico 0. La tabla de la página siguiente ayudará a
comprender mejor la razón por la cual se carga
SCAN con 10H, conforme a la conexión física del
pórtico B del PIÓ, el latch 74LS373, y los
multiplexores análogo y digital.

En la siguiente instrucción, etiquetada con ATQM1,


carga el acumulador A con el contenido del MTERx
184

apuntado por IX, para comparar al acumulador con


OH, y verificar si de la termocupla que va a barrer, se
debe mostrar su medición; si la bandera Z = 0|_,
entonces A ^ O, y por lo tanto la localidad MTERx
leída contiene un 1, lo cual significa que se debe
mostrar la medición de la termocupla respectiva, y
salta consecuentemente a la dirección ATQMO a
proseguir con lo necesario para así efectuarlo.

Pórtico Entradas . Señales


Código
B PIÓ DAC1000 Multiplexores
B7 X DI?
B6 X Dle
65 X DÍ5
1 Habilitado
B4 1 DU EN Mux. Ang. 0 Deshabilitado
1 Deshabilitado
B3 0 Dls STROBE Mux. Dig.
0 Habilitado
Aa Mux, Análogo
B2 0 Diz
C Mux. Digital
Ai Mux. Análogo
Bi 0 Dh
B Mux. Digital
(DBUF+l) <—>A
A < (SCAN) Ao Mux. Análogo
Bo 0 Dio
OUT (7DH), A A Mux. Digital
A < 54H 10H
OUT (7CH},A
A < 14H NOTA: Las condiciones no importa (X) se reemplazan por ceros.
OUT (7CH),A

Si la bandera Z = 1i_, entonces A = O, y por lo tanto la


CALL CLEAR
localidad MTERx leída contiene un O, lo cual significa
que no se debe mostrar la medición de la termocupla
respectiva; incrementa entonces el contenido de lo
HL -< THERS
B « 5H apuntado por HL que es SCAN, incrementa IX para
D -< 90H apuntar el siguiente MTER y salta a ATQM1 a
comprobar si de la siguiente termocupla se debe
mostrar o no la medición.
CALL DISPY
En la dirección ATQMO, a donde salta para realizar
una medición, habilita primero las interrupciones,
•< 1H carga el acumulador A con el contenido de la
localidad WSCALE, que almacena la escala de
temperatura con la cual mostrar la medición, y lo
CALL DELAY
compara con 8EH que es el código a 7 segmentos de
la letra F que corresponde a °F; si como resultado de
la comparación la bandera Z = OL, WSCALE no
186
contiene el código 8EH, entonces contiene el código
COH de la letra C de °C, y salta a la dirección LSCT.
185

Sí en cambio la bandera Z = IL, entonces WSCALE = 8EH (°F) carga el


acumulador A con OFDH, que es el código para encender el LED de °F, y salta
a la dirección LSCTO; en la dirección LSCT en cambio, carga el acumulador A
con OFEH, que es el código para encender el LED de °C.

Prosiguiendo, en la dirección LSCTO, carga el contenido del acumulador en la


localidad DBUF+1 (buffer del display) para que posteriormente el 8279
encienda el LED de escala respectivo, conforme a la escala seleccionada.

A continuación carga el acumulador A con el contenido de SCAN (termocupla


que está barriendo), y lo escribe en la dirección de datos (7DH) del pórtico B
del PIÓ, con el objeto de que, con las instrucciones que siguen, habilitar los
multiplexores, y seleccionar en ellos la salida que corresponde, de acuerdo a lo
que contiene SCAN. En consecuencia, carga el acumulador A con 54H para
escribirlo en la dirección de datos (7CH) del pórtico A del PIÓ, con lo cual
coloca al latch 74LS373 en la condición siga (follow) para que la palabra que
se escribió en el pórtico B del PIÓ se copie en las salidas del latch,
manteniendo el conversor DAC100 deshabilitado y el circuito muestreador/
retenedor en la condición muestrear (sample). A continuación carga el
acumulador A con 14H para escribirlo en la dirección de datos (7CH) del
pórtico A del PIÓ con lo cual coloca al latch 74LS373en la condición retenga
(latch) y el conversor y el circuito muestreador/retenedor en las condiciones
mencionadas. (Ver programa de inicialización).

Continuando llama a la subrutina CLEAR para borrar o apagar el display; carga


el registro HL con la dirección THERS para apuntar el inicio del patrón a 7
segmentos, definido con el directivo DFB, de la palabra 7/HEr., como una
indicación de que inicia la medición de temperatura, para mostrarla en el
display; esos códigos son:

1 11111000 binario F8 hexadecimal


r 11001110 binario
binario
CE hexadecimal
H 10001001 89 hexadecimal
E 10000110 binario 86 hexadecimal
r. 00101111 binario 2F hexadecimal

Carga a continuación el registro B con 5H, pues son 5 códigos, y el registro D


con 90H para llamar a la subrutina DISPY para mostrar en el display la palabra
mencionada. Para proseguir carga el registro B con 1H para llamar a la
subrutina DELAY y mostrar por aproximadamente 1 segundo esa palabra.

En la siguiente instrucción etiquetada con AGAIN, a donde salta el programa


para iniciar la medición de una nueva termocupla, carga el acumulador A con
el contenido de la localidad SEGDL, que almacena el número de segundos
que se debe mostrar la medición de cada termocupla, desplaza el contenido de
A, con la instrucción SLA, 1 bit hacia la izquierda, introduciendo un O en el bit
186

menos significativo, lo que equivale a multiplicar por 2, con el objetivo de


realizar dos mediciones en cada segundo; copia en el registro B el contenido
del acumulador que, después del desplazamiento, contiene el número de
mediciones a efectuar con cada termocupla; guarda el registro B en la pila
(stack) con la instrucción PUSH.

A la siguiente instrucción se la ha etiquetado con


AGAINO pues el programa retornará a este sitio a
efectuar una nueva medición de la misma termocupla,
antes de finalizar el número de mediciones calculado;
con ella lee el pórtico A del PIÓ, dirección de datos
A < (SEGDL) 7CH, al acumulador A y procede a probar el bit 7 del
SLA A mismo, que es el bit 7 del pórtico A del PIÓ, donde está
B -< A
PUSH BC
conectada la salida del multiplexor digital, para conocer
si la termocupla del pórtico que se está barriendo está
conectada.

Si ese bit es OL (bandera Z = IL) la termocupía está


conectada y salta a la dirección TCONC; OL porque la
indicación del circuito AD594/5 se invierte en el Cl
DS1489. (Ver Capítulo 3).

Si por el contrario, el bit 7 del pórtico A del PIÓ es IL


(bandera Z = OL), la termocupla no está conectada;
carga entonces en el acumulador A el contenido de
A < {SCAN)
SCAN, el registro HL con la dirección HTAB (códigos a
A < A-10H 7 segmentos de. los dígitos O a 9), resta de A 10H para
que en A quede únicamente el número de la termocupla
C X-— A
que se está barriendo (ver tabla página 184), el registro
B con OH, y en el registro C copia el contenido de A
para sumar los registros HL y BC y apuntar con HL la
CALL CLEAR
dirección del código a 7 segmentos en la tabla HTAB
que corresponde a la termocupla que se está barriendo.

A <— (DBUF+1) Llama a la subrutina CLEAR para borrar el display;


E <-— A carga en el registro A el contenido de la localidad
A <—- (HL) DBLJF+1, que contiene el código a 7 segmentos para
RES 7,A
HL <—- TOPEN
que se encienda el LED de la escala de temperatura
B <—— 5H elegida, copia en el registro E este código; carga ahora
D X—- 90H en el registro A el contenido de lo apuntado por HL que
es el código a 7 segmentos correspondiente al número
de la termocupla que se está barriendo; pone un 0L en
el bit 7 con la instrucción RES para encender el punto
1£17
decimal; carga el registro HL con la dirección TOPEN
donde se inician los códigos a 7 segmentos del patrón
187

toPEn, para luego mostrarlo en el display; esos códigos


186 son:

t 10000111 binario 87 hexadecimal


OUT (C) ,D o 10100011 binario A3 hexadecimal
DEC C
OUT (CJ .E
p 10001100 binario 8C hexadecimal
OUTI E 10000110 binario 86 hexadecimal
OUT (C) .A n 10101011 binario AB hexadecimal
OTIR

Carga a continuación el registro B con 5H, para enviar 5


caracteres a la RAM del display, al registro D con 90H
para escribir luego este comando al 8279 que significa;
escribir en la RAM del display con autoincremento y
desde la fila 0.

Carga el registro C con OBFH que es la dirección de comandos del 8279;


entonces con la instrucción OUT (C),D escribe en la dirección de E/S que está
en el registro C (OBFH), lo que contiene el registro D (90H), que es el comando
mencionado.

Decrementa el registro C de OBFH a OBEH para señalar la dirección de datos


del 8279, y escribe lo que contiene el registro E (código para encender LED de
escala) en la dirección de E/S señalada por C (OBEH, dirección de datos del
8279). A continuación utiliza la instrucción OUTI que funciona de la siguiente
manera:

(C) (HL)
B B-1
HL HL + 1

Entonces, en la dirección de E/S señalada por el registro C (datos del 8279),


escribe el contenido de lo apuntado por HL en memoria (primer byte del patrón
definido en TOPEN), decrementa B (un carácter menos) e incrementa HL
(siguiente byte de TOPEN).

Continuando, con la instrucción OUT (C),A escribe en la dirección de E/S


señalada por el registro C, lo que contiene el registro A que es el código a 7
segmentos del número de termocupla que se está barriendo con el punto
decimal encendido. Finalmente con la instrucción OTIR, que fue analizada al
describir la subrutina DISPY, escribe en el 8279 los restantes bytes del patrón
TOPEN. Ha escrito entonces en el display ttt.oPEn, donde # corresponde al
número de la termocupla que se está barriendo. Luego salta a la dirección
TKL a verificar si ha terminado el tiempo de muestreo de cada termocupla.

A la dirección TCONC salta cuando el programa encuentra una termocupla


conectada. Carga el acumulador A con el contenido de la localidad CONTA,
11
resta del acumulador A 10H para que en A quede únicamente el número de la
termocupla que se está barriendo (ver tabla página 184); apunta con el registro
HL la dirección TERO donde se inician las localidades de memoria
consecutivas que almacenan el tipo de cada termocupla.

Carga el registro B con OH, para luego sumar los registros


BC y HL; copia en el registro C lo que tiene el acumulador
A (número de termocupla que se está barriendo); suma los
registros BC y HL para apuntar con HL la localidad que
A <- (SCAN)
A <-• A-10H
almacena el tipo de la termocupla de la cual se va a medir
HL -<- TERO la temperatura; carga en el acumulador el contenido de lo
B <- OH que apunta HL que es el tipo de termocupla. Apunta con
C <- A
HL + BC
el registro IX la dirección TERPLA, donde se inician las
A <- (HL) localidades de memoria consecutivas que guardan las
IX <-• TERPLA direcciones (2 bytes) donde se encuentra la información
SLA A
del grado y coeficientes de los polinomios de Idealización
C -<- A
IX -< - IX + BC de cada termocupla. Desplaza 1 bit hacia la izquierda a
PUSH IX los bits del acumulador A introduciendo un O en el bit
DI menos significativo, lo que equivale a multiplicar por 2,
A X- OA3H
OUT (OBFH) . A
pues las direcciones de memoria son de 2 bytes. Copia en
el registro C lo que tiene el acumulador, y suma los
registros IX y BC (B ya tenía 0) para apuntar con IX la
CALL ADCONV
localidad en TERPLA que almacena la dirección desde
donde se leerán el grado y coeficientes del tipo de
termocupla que corresponde a la que se está barriendo.
A < OAOH Guarda esta dirección en la pila (stack) con la instrucción
OUT (OBFH). A PUSH IX.
El
B < 6H
Deshabilita a continuación las interrupciones, carga en el
NBIN acumulador A el comando OA3H para escribirlo en el 8279,
con el propósito de apagar momentáneamente el display,
de tal forma que el LiP no sea interrumpido mientras realiza
XOR
RL
la conversión análogo-digital, y el barrido del display no
RL afecta la conversión.
DEC

Llama entonces a la subrutina ADCONV para efectuar la


NO conversión análogo-digital del voltaje de la termocupla que
se está barriendo; el resultado sale en los 10 bits menos
significativos del registro doble DE, pues el conversor es
de 10 bits. Carga el acumulador con el comando OAOH
OAH para escribirlo en el 8279 y encender nuevamente el
88H display; además habilita las interrupciones.

Carga el registro B con 6H para a continuación desplazar 6


189
veces hacia la izquierda los bits del registro doble DE, con
189

el objeto de que el resultado de la conversión quede en los


10 bits más significativos de este registro.
CONV
Como el desplazamiento se lo hace con la
participación de la bandera carry (CF) pone un cero
BIT 7,D en esa bandera con la instrucción XOR A. La
instrucción utilizada para ello es RL (rotar a la
izquierda) y se inicia con el registro menos
significativo que es E, y luego con el registro D, el
contador de los 6 desplazamientos es el registro B;
NO
así:
XOR A
%
RL E >h
RL D
DEC C
DEC B
D 't-

NO
Se requiere ahora transformar el resultado de [a
conversión a un número binario normalizado en punto
flotante, tema que se analizará posteriormente. Por
ahora carga en el registro B OAH para desplazar
máximo 10 veces los 10 bits resultado de la
conversión que se encuentra en el registro DE, hasta
conseguir que en el bit más significativo de DE se
tenga un IL. Carga también el registro C con 88H,
que es el exponente binario del número 1023 decimal
normalizado (todos los 10 bits de la conversión en
1 L), V con cada desplazamiento decrementa ese
registro. Lo mencionado se consigue en el lazo con
la etiqueta CONV.

Si del lazo anterior sale con el registro B = O, significa


que los 10 bits de DE son O's, entonces el resutado
de la conversión es cero; pone O en el exponente
(registro C) y salta a CONV2.

Cuando encuentra un 1[_ en el bit más significativo de


DE, salta a la dirección CONVO a normalizar el
resultado de la conversión. El número normalizado
debe quedar como se indica a continuación:
IX < BNl
Signo
(IX+ 0) < C
Exponente Fracción
(IX+1) X D

190
Registro C registro D Registro E
190

Como el bit más significativo de la parte fraccionaria es


189 siempre 1, este se lo deja sobrentendido, para que ese bit
sea ocupado por el bit menos significativo del exponente,
ya que el bit más significativo del número normalizado
(IX •*• 2) X E corresponde al signo.
(IX+ 3} -< OH
DE -< • BN2
HL < FCCR En la dirección CONVO entonces desplaza el registro C
BC X 4H (exponente) un bit hacia la derecha (instrucción SRL C)
LDIR
introduciendo un O en el bit más significativo, bit que
corresponde al signo, en este caso positivo; el bit menos
CALL MFP
significativo entra a la bandera carry (Cp), y por lo tanto
dependiendo del bit que entra, pone un OL o un 1t_ en el bit
más significativo del registro D; con lo cual queda
normalizado el resultado de la conversión en los registros
C, D y E.

Transfiere ahora el resultado de la conversión normalizado a las localidades


BN1: tomando en cuenta que un número normalizado consta de 4 bytes, con
ayuda de IX que es un registro índice, apunta con él la localidad BN1, y luego
transfiere en forma indexada los registros C, D y E, y en el cuarto byte de BN1
pone 0.

A continuación transfiere el factor de corrección FCCR, que será explicado al


analizar la linealización del voltaje de las termocuplas, desde las localidades
FCCR definidas con el directivo DFB en el ensamblador, a las localidades BN2
en RAM, utilizando la instrucción LDIR y los registros DE, HL y BC. (BN2-*—FCCR)

Llama a la subrutina MFP para multiplicar, el resultado de la conversión que ha


sido normalizado y que se encuentra en BN1, por el factor de corrección que
se encuentra en BN2.

Recupera de la pila (stack) en el registro IX la dirección de


la localidad de memoria donde se encuentra almacenada
la dirección donde se inicia el grado y los coeficientes del
polinomio que corresponden al tipo de termocupla que se
POP IX está barriendo. Carga esa dirección en el registro HL a
H X—- (IX fO)
L -<—- (IX + 1) través del registro índice IX, con ello el registro HL apunta
B ^~- (HL) la dirección de la localidad donde está almacenado el
INC HL grado del polinomio del tipo de termocupla seleccionada, lo
carga en el registro B, e incrementa el registro HL para
apuntar el primer coeficiente del polinomio, y a
CALL EVPOL
continuación llamar a la subrutina EVPOL para evaluar el
voltaje medido en el polinomio respectivo, conforme al tipo
de termocupla seleccionada. El resultado de la evaluación
1£ 1
que es un número binario en punto flotante normalizado,
queda almacenado en BN1.
191

Ahora va a revisar en qué escala de temperatura se


190
debe presentar la medición, para lo cual carga en el
acumulador el contenido de la localidad WSCALE
(escala) y lo compara con 8EH (código a 7 segmentos
A <— (WSCALE) de la letra F de °F); si no es igual salta a la dirección
CP 8EH
CENTG porque la escala es °C. Si es igual transfiere
desde las localidades FRHO, donde se almacena el
número binario normalizado en punto flotante que
corresponde a 9/5, a las localidades BN2 en RAM, con
NO la ayuda de la instrucción LDIR y los registros DE, HL y
BC. Llama entonces a la subrutina MFP para multiplicar
DE < BN2 el resultado de la medición ya linealizada (BN1) por 9/5
HL -< FRHO
BC < 4H (BN2), quedando el resultado en BN1. Luego transfiere
LDIR desde las localidades FRH1, donde se almacena el
número binario normalizado en punto flotante
correspondiente a 32, a las localidades BN2 en RAM,
CALL MFP utilizando los registros DE, HL y BC y la instrucción
LDIR. Llama a continuación a la subrutina AFP para
sumar el resultado de la multiplicación anterior (BN1)
DE < BM2 más 32 (BN2). Por lo tanto se ha aplicado la fórmula:
HL < FRH1
BC < 4H
LDIR °F = 9/5°C+32

En la dirección CENTG, ya con la medición en la escala


de temperatura seleccionada, llama a la subrutina
BBCD para convertir el resultado de la medición que se
encuentra en BN1 y que es un número binario
normalizado en punto flotante, a un número BCD que se
guarda en las localidades BCDE que constan de 3
bytes, en cada byte 2 dígitos BCD, y con la posición del
punto decimal en el registro E del joP.

El resultado de la medición transformada a números


BCD es necesario ahora mostrarla en el display, para lo
cual llama a la subrutina DISTP, que transforma el
número BCD obtenido, a los códigos a 7 segmentos
correspondientes.

A la dirección TKL salta a verificar si se ha terminado


con el número de mediciones, de acuerdo al tiempo que
se debe mostrar la medición de cada termocupla;
recupera de la pila en el registro B el número de
mediciones, lo decrementa y si todavía no es O salta a la
dirección RM1S; si es ya O, apunta con el registro IY la
localidad NTER (número total de termocuplas) y con el
registro HL la localidad SCAN (termocupla que se está
192

barriendo); incrementa el contenido de esta última para


continuar con la termocupla siguiente.

HL -< SCAN En la dirección TKLO, a donde salta el programa a


INC (HL)
comprobar si la termocupla que se está barriendo,
indicada por SCAN, es la última, carga su contenido en
el acumulador, y le resta 10H para quitar los bits de
habilitación de los multiplexores, y lo compara con
A < (HL)
A •< A-10H
NTER que está apuntado por el registro IY: si no son
CP (1Y + 0) iguales (bandera Z = 0L), salta a la dirección TKL1; si
son iguales (bandera Z - 1[_), carga SCAN, que está
apuntada por el registro HL con 10H, para iniciar la
medición con la termocupla 0.

En la dirección TKL1, a donde el programa salta a


comprobar si de la siguiente termocupla se debe o no
mostrar su medición, carga en el acumulador el
contenido de SCAN que está apuntado por HL, lo copia
en el registro C, intercambia los registros principales AF
con los registros alternos AF', y copia en el acumulador
A < (HL)
C •< A
alterno A' el registro C (contenido de SCAN); le resta
EX AF, AF' 10H para quitar los bits de habilitación de los
A x C multiplexores, copia el resultado en el registro C, carga
A -< A-10H
el registro B con OH para sumar luego el registro doble
C X A
B < OH BC con el registro IX, con el cual apunta la dirección
IX -< MTERO MTERO, suma los registros mencionados y entonces
IX < IX+BC apunta con IX la dirección MTERx; lee su contenido en
A < (IX-i-0}
CP OH
el acumulador A1 y lo compara con OH; si es igual a O
(bandera Z - 1i_), no se debe mostrar la medición de
esta termocupla y por tanto salta a la dirección TKL2; si
NO
no es cero (bandera Z = 0L), intercambia los registros
alternos AF1 con los principales, y en el acumulador
principal A se tiene el contenido de SCAN, antes de
restarle 10H, y repite las instrucciones indicadas en la
EX AF, AF' página 185, tercer párrafo, para habilitar los
OUT (7DH, A)
A < 54H multiplexores análogo y digital, y empezar el barrido de
OUT (7CH. A) las termocuplas desde la número 0.
A < 14H
OUT (7CH.A)
B -< 1H
Carga los registros: B con 1H, DE con OH y HL con
DE -< OH 7FFFH, para llamar a la subrutina DELYO con el objeto
HL -< 7FFFH de producir un retardo de aproximadamente 0.5
segundos. Salta luego a la dirección AGAIN a realizar
la primera medición de la termocupla señalada por eí
193 contenido de SCAN.
193

A la dirección TKL2 salta si el contenido del MTERx de


la termocupla respectiva es O (no mostrar); intercambia
los registros alternos AF' con los principales AF,
incrementa el contenido de lo apuntado por HL que es
CALL DELYO
SCAN para continuar con la medición de la siguiente
termocupla en la dirección TKLO.

A la dirección RM1S salta si aún no se ha terminado el


tiempo que se debe mostrar la medición de cada
termocupla; guarda en la pila (stack) el registro B que
contiene el número de mediciones; lo carga ahora con
1H, el registro DE con OH, y el registro HL con 7FFFH
EX AF , AF' para llamar a la subrutina DELYO, y producir un retardo
INC (HL) aproximado de 0.5 segundos; finalmente salta a la
dirección AGAINO a efectuar una nueva medición de la
misma termocupla,

En esta subrutina permanece el programa midiendo la


temperatura de las termocuplas conectadas al equipo,
mientras no se pulse una tecla; es por eso que en ella
no consta la instrucción RET de retorno de subrutina.
PUSH BC
B < 1H Desde la subrutina ATDC se ha llamado a las siguientes
subrutinas: CLEAR, DISPY, DELAY y DELYO que ya
HL X 7FFFH han sido descritas; a la subrutina ADCONV que será
descrita al analizar la conversión análogo-digital; a la
subrutina EVPOL que será descrita al analizar la
CALL DELYO
linealización del voltaje de las termocuplas; a las
subrutinas MFP, AFP y BBCD que serán descritas al
analizar aritmética de punto flotante; y a la subrutina
DISTP que se pasa a describir a continuación.

Con el objeto de que la descripción de las subrutinas no se extienda


demasiado, y ya que la metodología utilizada para el diseño del software está
ya explicada, se describirán las subrutinas a partir de ahora de acuerdo a la
tarea que ejecutan; sin embargo, si se desea revisarlas a nivel de instrucción,
se lo puede hacer en el listado del programa que consta en los anexos.

4.5.2.1.1 SUBRUTINA DISTP

Esta subrutina es muy similar a la subrutina C7SEG, porque convierte el


número BCD que viene almacenado en las localidades BCDE (3 bytes), y la
posición del punto decimal en el registro E del (iP, con la diferencia de que el
194

número BCD es el resultado de una medición de temperatura y no el resultado


de una operación aritmética.

En primer lugar entonces llena las localidades DBUF con lo que se debe
mostrar en el display, así: en DBUF+2 almacena el código a 7 segmentos de la
letra t (10000111 binario, 87H) y en DBUF+3 el código a 7 segmentos del
número de termocupla que se está barriendo con el punto decimal encendido.

A continuación chequea si el resultado de la medición es un número negativo,


y si lo es muestra en el display í#. neg, leyendo el patrón en memoria TNEG.

Si el resultado es positivo, va a mostrar únicamente la parte entera del


resultado pues como el conversor utilizado es de 10 bits, se tienen 1023
posibilidades de cuantización, y como el rango de temperatura es de O a 1000
°C, no tendría sentido mostrar la parte decimal. De todas formas, como el
proceso de iinealización se realiza con la evaluación del polinomio
correspondiente a cada termocupla, se va obtener parte decimal, y por ello se
efectúa un redondeo: para lo cual se verifica si el primer dígito de la parte
decimal es > que 5; si lo es llama a la subrutina ROOUBCD para redondear la
parte entera.

Como la medición máximo es de 4 dígitos (1000 °C) se requieren solamente 4


displays (los 2 primeros de la izquierda muestran el número de termocupla); si
es menor, los displays anteriores al primer dígito significativo deben apagarse,
por lo tanto la subrutina verifica cuántos displays debe apagar antes del primer
dígito significativo almacenando en las localidades DBUF correspondientes, el
código OFFH (display apagado); y por último encuentra los códigos a 7
segmentos que corresponden al resultado de la medición.

Si el resultado de la medición es O °C, carga el código a 7 segmentos de O en


la localidad DBUF+7 (primer display de la derecha).

Finalmente borra el display llamando a la subrutina CLEAR, y luego escribe en


la RAM del display del 8279, lo almacenado en las localidades DBUF, con una
llamada a la subrutina DISPY. Concluye retornando de la subrutina.

Esta subrutina invoca a las subrutinas CLEAR y DISPY ya analizadas, y a la


subrutina ROUBCD que se describe a continuación.

4.5.2.1.2 SUBRUTINA ROUBCD

Esta subrutina suma 1 al byte menos significativo de la parte entera de un


número BCD que está almacenado en las localidades BCDE, con la ayuda de
195

la bandera carry (Cp) y utilizando las instrucciones ADC (suma con carry) y
DAA, que convierte el contenido del acumulador a dos dígitos BCD, si es la
siguiente instrucción de una instrucción de suma o resta con el acumulador
conteniendo dígitos BCD. Se debe hacer un lazo con los 3 bytes de BCD para
que el redondeo involucre a todo el número.

Finaliza retornando de la subrutina.

La siguiente subrutina que debemos describir, de acuerdo a la tabla de las


páginas 147 y 148 (subrutinas para medición de temperatura) es la subrutina
CALFS.

4.5.2.2 SUBRUTINA CALFS

Esta subrutina es invocada si estando en la calibración de cero (CAL. 0).del


amplificador operacional asociado al conversor DAC1000] se pulsa la tecla L
de calibración. El programa atiende la interrupción, decodifica la tecla pulsada
y retorna de la interrupción a esta subrutina.

En ella escribe el valor 07H a la dirección de datos del pórtico A del PIÓ, con lo
cual mantiene el latch 74LS373 en retenga (latch), habilita el conversor
DAC1000, mantiene el circuito muestreador-retenedor en muestrear (sample) y
pone 1L en los bits de entrada más significativos del conversor. La tabla
adjunta nos ayuda a comprender el porqué del valor 07H, de acuerdo a la
conexión del pórtico A del PIÓ.

Pórtico Señales
Código Dirección
A PÍO Conectadas
A? X + Salida Multiplexor Digital
G 1 Siga (Follow)
A6 0
Habilitación Latch 74LS373 0 Retenga (Latch)

As X Sin conexión
CS 1 Deshabilitado
A4 0
Selección de chip Conversor DAC1000 0 Habilitado

A3 X -< Salida Comparador LM311
Control 1 Muestrear (Sample)
A2 1 Circuito Muestreador Retenedor 0 Mantener (Hold)

A! 1 • * Dh» Conversor DAC1000
Ao 1 > D]8 Conversor DAC1000
07 H

NOTA: Las condiciones no importa (X) se reemplazan por ceros.

Escribe también en el pórtico B del PIÓ OFFH, con lo cual ha puesto todos los
10 bits del conversor en IL y con ello se puede efectuar la calibración de
196

escala completa (Full Scale), conectando un multímetro en (os puntos de


prueba respectivos, y moviendo el potenciómetro correspondiente a esta
calibración. El valor que se debe medir en esta calibración está de acuerdo
con la fórmula que se mencionó en el capítulo 3 al analizar el conversor
DAC1000:

VOUT = ~ (V
^ ' 1024

Y, reemplazando el VREF que es de -10 V, obtenemos;

VOUT = - ( - 1 0 7 ) 1Q23 = 9.990K


v y 1024

Adicionalmente esta subrutina borra el display, escribe en él los caracteres


CAL. FS que los lee del patrón en memoria PDCALO, con el objeto de indicar
al usuario que el programa está en la calibración de escala completa; pone un
1t en el bit 1 de FLAGS para indicar al programa la misma situación, y
finalmente salta a la subrutina WA1T1 a esperar la pulsación de una nueva
tecla. Para realizar lo indicado la subrutina llama a las subrutinas CLEAR y
DISPY que ya se han explicado.

La siguiente subrutina a describir de acuerdo a la definición con los directivos


DWM es la WAIT1 que ya fue descrita, por lo tanto la siguiente a describir, es
la subrutina NUMTER.

4.5,2.3 SUBRUTINA NUMTER

Si estando en medición de temperatura se pulsa la tecla A (cambio de


configuración) el programa salta a esta subrutina después de decodificar la
tecla pulsada y retornar de la interrupción. También salta a esta subrutina
(dirección NUMTERO) cuando se enciende el equipo, después de mostrar en el
display CPU-UP y de configurar el sistema.

Habilita interrupciones, pone un 1i_ en el bit 5 de FLAGS, para indicar que se


está ingresando el número de termocuplas, y muestra en el display los
caracteres nú.te. ? cuyos códigos a 7 segmentos los lee del patrón en
memoria TNUM. El signo de interrogación del último display aparece
intermitentemente a una frecuencia de aproximadamente 0.5 segundos. Para
realizar lo indicado llama a las subrutinas CLEAR, DISPY y DELYO (parte de
la subrutina DELAY) ya analizadas.
197

Esta subrutina permanece en un lazo continuo que le permite mostrar


intermitentemente el signo de interrogación, hasta que se pulse una tecla que
debe estar entre 1 y 4, ya que el equipo está provisto de 4 pórticos para
termocuplas. Las únicas teclas, a más de las indicadas, que son aceptadas
cuando está preguntando el número de termocuplas son: la tecla L para
calibración o la tecla SHIFT para pasar al modo de calculadora. Si se pulsa
cualquier otra tecla el programa volverá a esta subrutina.

Dentro de esta subrutina se han etiquetado las direcciones NUMTERO,


NUMTER1 y NUMTER2 pues se efectúan llamadas a estas direcciones desde
otras subrutinas.

4.5.2.4 SUBRUTINA CONFIG

Si estando en medición de temperatura se pulsa la tecla B (mostrar


configuración) el programa salta a esta subrutina luego de atender la
interrupción provocada por la pulsación de la tecla, a mostrar la configuración
del equipo: número de termocuplas, tipos, de cuáles mostrar o no la medición,
tiempo de muestra de la medición de cada termocupla y la escala de
temperatura.

En primer lugar escribe en el display los caracteres nu.tc. leyendo los códigos
a 7 segmentos desde el patrón en memoria TNUM; en el último display escribe
el código a 7 segmentos del número de termocuplas ingresado que, después
de leerlo de la localidad NTER, lo evalúa en la tabla HTAB (códigos a 7
segmentos de los dígitos O a 9). Esto lo muestra durante 1 segundo, llamando
a la subrutina NTYTY ya explicada.

Después de ello cambia el contenido del buffer del display para mostrar el tipo
de termocupla y si se debe mostrar o no la medición de cada una. Para ello
lee las localidades de memoria TERO a TER3, donde se almacenan los tipos
de termocuplas ingresados de la siguiente forma: para termocupla tipo K se
almacena un O, tipo J un 1, tipo E un 2, y tipo T un 3. Igualmente lee las
localidades de memoria MTERO a MTER3 donde se almacena la información
de si mostrar o no la medición de cada termocupla con la siguiente
equivalencia: O no mostrar, 1 mostrar. Y va mostrando una a una la
información de cada termocupla; por ejemplo, si se ingresó 4 termocuplas, y se
seleccionó la No. O tipo E, mostrar su medición; la No. 1 tipo K, no mostrar; la
No. 2 tipo J, no mostrar; y, la No. 3 tipo T, mostrar; en el display se podrá ver:

W. E 1 durante 1 segundo
ti. K O durante 1 segundo
t2. J O durante 1 segundo
198

t3. t 1 durante 1 segundo

A continuación verifica si el programa está en ingreso del número y tipo de


termocuplas o en mostrar configuración, probando el bit 6 de la localidad
FLAGS; si ese bit es 1|_ salta a la dirección CONFIG2 a borrar el display y a
poner OL en los bits 5 y 6 de FLAGS para indicar que ha finalizado el ingreso
del número y tipo de termocuplas, y en el bit 1 de FLAGS+1 para indicar que
ha finalizado el ingreso de cuál termocupla mostrar. Se hace así porque esta
.subrutina también es invocada desde las subrutinas que corresponden a las
funciones de configuración mencionadas. Finalmente habilita interrupciones y
salta a la dirección ATDC_F, a continuar con la medición de temperatura.

Si el bit 6 de FLAGS es OL significa que no está ingresando ni el número ni el


tipo de termocuplas; prueba entonces el bit 1 de FLAGS+1 para comprobar si
se está en el ingreso de cuál termocupla mostrar; si ese bit es IL salta también
a la dirección CONFIG2 a realizar lo indicado en el párrafo anterior; si por el
contrario, ese bit es OL significa que se está mostrando la configuración total y
por lo tanto llama a la subrutina SNSEG para mostrar el número de segundos
que se debe mostrar la medición de cada termocupla durante 1 segundo, y
luego a la subrutina SSCALE para transferir al buffer del display el patrón a 7
segmentos de los caracteres SCL. ?; carga en el último byte del buffer del
display el código a 7 segmentos de la letra C o F correspondiente a la escala
de temperatura seleccionada, y llama a la subrutina NTYTY para mostrar
también durante 1 segundo la escala de temperatura. Prosigue en la dirección
CONFIG2.

Esta subrutina para su funcionamiento invoca las subrutinas NTYTY, SNSEG y


CLEAR ya analizadas, y a la subrutina SSCALE que describimos a
continuación.

En esta subrutina se ha etiquetado la dirección CONFIG3, pues el programa


saltará a esta dirección al terminar de ingresar el tipo de la última termocupla.

4.5.2.4.1 SUBRUTINA SSCALE

Esta subrutina es utilizada para cargar en primer lugar, en el acumulador A el


contenido de la localidad WSCALE que almacena el código a 7 segmentos de
las letras C o F dependiendo de la escala de temperatura escogida.

A continuación, en la dirección SSCALEO, transfiere al buffer del display los


códigos a 7 segmentos desde el patrón en memoria SCALEP, con los que se
mostrará en el display los caracteres SCL. ?. Por último retorna de la
subrutina.
199

4.5.2.5 SUBRUTINA SECÓNOS

Si al estar en medición de temperatura se pulsa la tecla C (tiempo de muestra


de medición) el programa salta a esta subrutina después de atender la
interrupción, a preguntar el número de segundos que se debe mostrar la
medición de cada termocupla.

Esta subrutina habilita interrupciones, pone un 1[_ en el bit 7 de FLAGS para


indicar que el programa está en la rutina de ingreso del número de segundos, y
transfiere desde el patrón en memoria NSEG al buffer del display, los códigos
a 7 segmentos para mostrar en el display los caracteres SEC. ?. Finalmente
salta a la dirección NUMTER1, que es parte de la subrutina NUMTER ya
analizada, a preguntar el número de segundos con el signo de interrogación
intermitente.

4.5.2.6 SUBRUTINA SCALE

Si estando en medición de temperatura se pulsa la tecla D (escala) el


programa salta a esta subrutina después de atender la interrupción, a
preguntar en qué escala de temperatura mostrar la medición.

Habilita interrupciones, pone un 1t en el bit O de la localidad FLAGS+1 para


indicar que el programa está en la rutina de ingreso de escala de temperatura
y llama a la subrutina SSCALE ya descrita, para transferir al buffer del display
los códigos a 7 segmentos de los caracteres SCL. ?. Por último salta a la
dirección NUMTER1 para preguntar la escala con el signo de interrogación
intermitente.

4.5.2.7 SUBRUTINA MOSTRAR

Si estando en medición de temperatura se pulsa la tecla E (qué termocuplas


r¡§ mostrar) el programa salta a esta subrutina, después de atender la
interrupción, a preguntar de cada termocupla si mostrar o no su medición.

Pone primero un 1Len el bit 1 de FLAGS+1 para indicar que el programa está
en la rutina de preguntar si mostrar o no la medición de cada termocupla.
Luego entra en un lazo para preguntar consecutivamente de cada termocupla
si mostrar o no su medición, escribiendo en el display los caracteres f#. x ?,
donde # corresponde al número de termocupla de la cual se está preguntando,
200

y x al tipo de termocupla configurado, con el signo de interrogación


intermitente, para lo cual salta a la dirección NUMTER1, después de habilitar
las interrupciones.

Dentro de esta subrutina se ha etiquetado la dirección MOSTRAR1, pues el


programa saltará a esta dirección a preguntar si mostrar o no la medición de
una nueva termocupla.

4.5.2.8 SUBRUTINA NTCIN

Si el equipo está preguntando el número de termocuplas, y se pulsa cualquiera


de los dígitos del 1 al 4, el programa salta a esta subrutina, después de
atender la interrupción, a mostrar el número ingresado durante 1 segundo, y
luego pasa a preguntar el tipo de la primera termocupla.

Para ello carga el acumulador con el contenido de la localidad NTER, donde se


almacenó el número de termocuplas ingresado, pone un IL en el bit 6 de
FLAGS, para indicar que se va a ingresar el tipo de termocuplas, carga la
localidad DBUF+7 del buffer del display con el número de termocuplas
ingresado, luego de obtener el código a 7 segmentos respectivo, y llama a la
subrutina NTYTY para mostrar durante 1 segundo en el display los caracteres
nu.tc. #, donde # corresponde al dígito ingresado.

Luego carga la localidad SCAN con O, para empezar a preguntar desde la


termocupla O el tipo, cambia los códigos del buffer del display para mostrar los
caracteres W.ty. ?, y desde la etiqueta TYPEINO entra en un lazo para
preguntar el tipo de las demás termocuplas, luego de habilitar las
interrupciones y saltar a la dirección NUMTER1, para que se pregunte el tipo
de termocupla con el signo de interrogación intermitente.

El programa llamará a la dirección TYPEINO hasta que se termine de ingresar


los tipos de todas las termocuplas.

4.5.2.9 SUBRUTINA BADTY

El programa invoca esta subrutina, después de atender la interrupción, cada


vez que se pulsa una tecla no válida, cuando el equipo está preguntando algo
relacionado con su configuración.
201

Así: si esta preguntando el número de termocuplas y se pulsa una tecla


diferente a los números del 1 al 4; si está preguntando el tipo de termocuplas y
se pulsa una tecla diferente a los números del O al 3; si está preguntando
cuántos segundos mostrar la medición de cada termocupla y se pulsa una
tecla diferente a los números del O al 9; si está preguntando la escala y se
pulsa una tecla diferente a las letras C o F; y por último, si está preguntando si
mostrar o no la medición de alguna termocupla y se pulsa una tecla diferente a
los números O o 1.

Simplemente lo que hace es habilitar las interrupciones y cargar en la localidad


DBUF+7 del buffer del display 2CH que corresponde al código a 7 segmentos
del signo de interrogación, y saltar a la dirección NUMTER1 a continuar
preguntando lo que estaba preguntando antes de pulsar la tecla.

4.5.2.10 SUBRUTINA TYPEIN

Si el programa se encuentra en la rutina de preguntar el tipo de alguna


termocupla, salta a esta subrutina, después de atender la interrupción, a
mostrar el tipo de termocupla ingresado durante 1 segundo; y a continuación a
preguntar el tipo de la siguiente termocupla; o, si fue la última, a mostrar el
número de termocuplas configurado y el tipo de cada una de ellas.

Determina el tipo de termocupla ingresado leyendo la localidad TERx


correspondiente, con la ayuda del contenido de la localidad SCAN que indica
de cuál termocupla se está ingresando el tipo; encuentra el código a 7
segmentos del tipo ingresado leyendo cualquiera de las localidades TYPEK,
TYPEJ, TYPEE o TYPET definidas en la memoria con el directivo DFB; escribe
este código en la localidad DBUF+7 del buffer del display, y llama a la
subrutina NTYTY para mostrar en el display, por 1 segundo, el tipo de
termocupla ingresado.

A continuación verifica si es la última termocupla; si lo es salta a la dirección


CONFIG3 que es parte de la subrutina CONFIG ya analizada, a mostrar en el
display el número de termocuplas y el tipo de cada una de ellas; si no ha sido
la última, salta a la dirección TYPEINO, que es parte de la subrutina NTCIN ya
descrita, a preguntar el tipo de la siguiente termocupla.

4.5.2.11 SUBRUTINA MOSTRARO


202

Si el programa se encuentra en la rutina de preguntar de alguna termocupla si


mostrar o no su medición, salta a esta subrutina, después de atender la
interrupción, a mostrar la tecla pulsada O (no mostrar) o 1 (mostrar). Luego
salta a la subrutina para preguntar de la termocupla que sigue, y si ha sido la
última salta a la subrutina que muestra la configuración de todas las
termocuplas.

Para ello lee la localidad SCAN para conocer de cuál termocupla se está
preguntando; lee también la localidad MTERx donde se almacena la
información de si mostrar o no la medición de la termocupla en cuestión;
encuentra el código a 7 segmentos del número ingresado (O o 1) y lo carga en
la localidad DBUF+7 del buffer del display; llama entonces a la subrutina
NTYTY para mostrar por 1 segundo la información ingresada, junto con el
número y el tipo de termocupla de la cual se está preguntando.

A continuación verifica si es la última termocupla, y si lo es salta a la dirección


CONFIG3 a mostrar el número de termocuplas, y luego el tipo de cada una,
junto con la información de si mostrar o no su medición; si no ha sido la última
incrementa el contenido de la localidad SCAN, para señalar la siguiente
termocupla, y por último salta a la dirección MOSTRAR1, que es parte de la
subrutina MOSTRAR ya descrita, a preguntar si mostrar o no su medición.

4.5.2.12 SUBRUTINA CALO

Esta subrutina es invocada si estando en el modo de medición de temperatura,


se pulsa la tecla L de calibración. El programa atiende la interrupción,
decodifica la tecla pulsada y retorna de la interrupción a esta subrutina.

En ella escribe el valor 04H a la dirección de datos del pórtico A del PIÓ, con lo
cual mantiene el latch 74LS373 en retenga (laten), habilita el conversor
DAC1000, mantiene e! circuito muestreador-retenedor en muestrear (sample) y
pone 0L en los bits de entrada más significativos del conversor. La tabla
adjunta nos ayuda a comprender el porqué del valor 04H, de acuerdo a la
conexión del pórtico A del PIÓ.

Pórtico Señales
Código Dirección
A PIÓ Conectadas
A7 X + Salida Multiplexor Digital
G 1 Siga (Follow)
A6 0
Habilitación Latch 74LS373 0 Retenga (Latch)

As X Sin conexión
CS 1 Deshabilitado
A4 0
Selección de chip Conversor DAC1000 0 Habilitado

203

Pórtico Señales
Código Dirección
A PIÓ Conectadas
A3 X * Salida Comparador LM31 1
Control 1 Muestrear (Sample)
A2 1

Ai 0
—> Circuito Muesíreador Retenedor
Dls Conversón DAC1000
0 Mantener (Hold)

Ao 0 • + DIsConversorDACIOOO
04 H

NOTA: Las condiciones no importa (X) se reemplazan por ceros.

Escribe también en el pórtico B del PIÓ OH, con lo cual ha puesto todos los 10
bits del conversor en 0L y con ello se puede efectuar la calibración de cero,
conectando un multímetro en los puntos de prueba respectivos, y moviendo el
potenciómetro correspondiente a esta calibración, hasta obtener O voltios.

Adicionalmente esta subrutina borra el display, escribe en él los caracteres


CAL. O que los lee del patrón en memoria PDCAL, con el objeto de indicar al
usuario que el programa está en la calibración de cero; pone un 1i_ en el bit O
de FLAGS para indicarle al programa la misma situación, y finalmente salta a
la subrutina WAIT1 a esperar la pulsación de una nueva tecla. Para realizar lo
indicado llama a las subrutinas CLEAR y DISPY que ya se han explicado.

4.6 CONVERSIÓN ANALOGO-DIGITAL UTILIZANDO UN CONVERSOR


DIGITAL-ANÁLOGO Y EL MICROPROCESADOR

La conversión análogo-digita! se realiza utilizando el conversor digital-análogo


DAC1000, con su amplificador operacional LF-356 asociado, el circuito
muestreador-retenedor LF-398, el comparador de voltaje LM-311, la referencia
de voltaje LH-0070, el PIÓ y la programación del pP Z-80. El método usado es
el de aproximaciones sucesivas, cuyo funcionamiento, desde el punto de vista
del hardware ya fue explicado en el capítulo 3, cuando se analizó el circuito
para la conversión análogo-digital implementado. En consecuencia, en esta
sección pasamos a describir la subrutina ADCONV a través de la cual se
efectúa la conversión, y que es invocada desde la subrutina ATDC, cuando el
equipo está en el modo de medición de temperatura.

4.6.1 SUBRUTINA ADCONV

Esta subrutina hace uso del registro doble DE del jaP para obtener el resultado
de la conversión; como el conversor es de 10 bits se requiere almacenar el
204

resultado en un registro de más de 8 bits. La idea es ir generando un voltaje


análogo con el conversor DAC1000, el mismo que se compara con el voltaje
retenido por el circuito muestreador-retenedor; del efecto de la comparación se
obtendrá uno de los bits del resultado, y se decidirá si el próximo voltaje a
generar se ubicará en la mitad inferior o superior del voltaje anterior; la
secuencia se repite hasta obtener los 10 bits del resultado.

Para iniciar carga el registro B con OAH (10 decimal),


ADCONV
que servirá como contador del número de bits
obtenidos, y por tanto del número de aproximaciones a
realizar. En el registro C se carga la dirección de datos
OAH
C -<• 7DH
(7DH) del pórtico B del PIÓ, y en el registro HL 400H
HL -<- 400H que en binario es:
IX < TEMADO
(IX+ 0) < H
DE < OH 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
OUT (C). L
DEC C
XOR A registro H registro L

Con el objeto de ir desplazando en cada aproximación


el 1[_ del bit 2 del registro H. Apunta con el registro
índice IX la localidad en RAM etiquetada como
TEMADO, donde se almacenará temporalmente el
contenido del registro H o del registro L; y para iniciar
guarda el contenido del registro H que es 4H en esa
localidad que está apuntada por IX. Inicializa el registro
DE con OH que es donde se irá almacenando el
resultado de la conversión. Escribe en la dirección de
datos del pórtico B del PIÓ que está en el registro C, lo
que contiene el registro L que para iniciar es OH.

Decrementa el registro C para apuntar la dirección de


datos del pórtico A del PIÓ (7CH), con la instrucción
A •*• 20H XOR A indirectamente pone un 0L en la bandera carry
OUT (CJ.A (Cp) que se usará posteriormente con la instrucción RR
1N A . (CJ
BIT 3,A
H (rotar a la derecha).

En la dirección etiquetada con MSBC, a donde salta el


programa mientras está convirtiendo los bits más
significativos del resultado, carga el contenido de lo
apuntado por IX (localidad TEMADO) en el registro H.
Con la instrucción RR H, rota hacia la derecha los bits
del registro H, introduciendo el bit menos significativo en
la bandera carry (CF), de la siguiente manera:

OF t * U
205

Con ello se comprueba si se han obtenido los 2 bits más significativos de la


conversión; lo que tenía la bandera de carry (Cp) entra al bit más significativo
del registro H, que siempre será un OL gracias a la instrucción XOR A ya
mencionada, y porque más adelante se pondrá un OL en esta bandera, antes
de regresar a la dirección MSBC.

Luego de la rotación si la bandera de carry (Cp) es 1L, significa que ya se han


obtenido los bits más significativos y salta a la dirección ENDH; si esta bandera
es OL, continúa y guarda en la localidad TEMADO, apuntada por el registro IX,
el contenido del registro H, en el cual se ha desplazado a la derecha el único
bit que es 1L. Copia en el acumulador lo que contiene el registro H, y hace un
OR lógico con el registro D, en el cual se van obteniendo los 2 bits más
significativos del resultado; después del OR lógico, en el acumulador quedarán
todos los bits que el registro D tenía en 1L, y también el único bit en IL del
registro H, con lo cual se va a generar la señal análoga en el conversor que se
va a comparar con la señal a convertirse.

Carga el resultado del OR lógico en el registro H, y en el acumulador A carga


el valor 3H (00000011 binario) para efectuar un AND lógico con el registro H,
para que en el acumulador queden el o los bits más significativos del resultado
de la conversión ya obtenidos.

Suma a continuación ai acumulador el valor 20H, para escribir luego en la


dirección de datos del pórtico A del PIÓ que está en el registro C, el resultado
de la suma, con lo cual se habilita el conversor DAC1000, se pasa el circuito
muestreador-retenedor a la condición mantenga (hold), el latch 74LS373 en
retenga (latch), y los 2 bits más significativos que corresponden al conversor
de acuerdo a lo que se va obteniendo.

Se debe ahora conocer el resultado de la comparación entre el voltaje análogo


a convertirse, mantenido por el circuito muestreador-retenedor y el voltaje
análogo generado por el conversor; para ello lee el pórtico A del PIÓ al
acumulador y prueba el bit 3 del mismo, pues a este bit está conectada la
salida del comparador LM-311; si el voltaje mantenido en el circuito
muestreador-retenedor es menor al voltaje del conversor (VS/H < V DAC ), la
salida del comparador es un 0L (A3 = OL) lo cual se refleja en el contenido de la
bandera Z invertido (ZF = 10, el programa salta a la dirección DECB sin
actualizar el registro D donde se está obteniendo la conversión, con lo cual el
próximo voltaje a generarse en el conversor estará en la mitad inferior
siguiente; por el contrario, si el voltaje mantenido en el circuito muestreador-
retenedor es mayor al voltaje del conversor (VS/H > VDAC), la salida del
comparador es un IL (As - IL) lo cual se refleja en el contenido de la bandera Z
invertido (ZF - OL), actualiza el contenido del registro D, copiando en él el
registro H, para que el próximo voltaje a generarse en el conversor se ubique
en la mitad superior siguiente.
206

En la dirección DECB decrementa el registro B para


verificar si ya es 0; si lo es [a conversión ha finalizado y
salta a la dirección DISCON; si no los es, en la dirección
ISB8 carga el acumulador con 8H, lo compara con el
registro B, pone un 1|_ en la bandera carry (Cp) con la
instrucción SCF (Set Carry Flag) y luego un 0L con la
instruccón CCF (Complement Carry Flag) pues no
existe una instrucción para poner directamente un OL en
la bandera carry. Se debe aclarar también que estas 2
últimas instrucciones no afectan las banderas Z y S que
se usarán a continuación.

Si el resultado de la comparación es O (bandera Z = 1t_),


A -<—- 8H lo que significa que el registro B - 8, se han obtenido los
CP B 2 bits más significativos y salta a la dirección MSBC a
SCF rotar a la derecha el único bit 1[_ que contiene el registro
CCF
H para luego introducirlo en el bit más significativo del
registro L

Si el resultado de la comparación es diferente de O (B ^


0), la bandera de signo S servirá para verificar si el
registro B es mayor o menor que 8; entonces, si B > 8
(bandera S = 1[_), no se ha concluido de obtener los 2
bits más significativos y salta a MSBC a continuar
obteniéndolos; si B < 8 (bandera S = OL), significa que
se están obteniendo alguno de los 8 bits menos
significativos con la participación del registro L, y por lo
tanto carga este registro con el contenido de la localidad
TEMADC que está apuntada por el registro IX; esta
última instrucción está etiquetada con LSBC, pues el
(IX + 0)
programa saltará a esta dirección mientras no finalice la
conversión.

Luego salta a la dirección SHIFTL a rotar el registro L.

En la dirección ENDH, a donde salta cuando ya se han obtenido los 2 bits más
significativos, carga el acumulador con 3H, realiza un AND lógico con el
registro D, suma el valor 20H y el resultado de las dos operaciones anteriores
lo escribe en la dirección de datos deí pórtico A del PIÓ, que está en el registro
C, con lo cual deja los circuitos integrados en la situación que se había
mencionado y los 2 bits más significativos del conversor de acuerdo a lo que
se ha obtenido; pone un IL en la bandera carry (Cp) con la instrucción SCF,
para introducirlo en el bit más significativo del registro L con la instrucción RR L
que está etiquetada con SHIFTL.
207

A continuación guarda el contenido del registro L en la


localidad TEMADO apuntada por el registro IX, y lo
copia también en el acumulador para efectuar un OR
lógico con el registro E, donde se están obteniendo los 8
bits menos significativos de la conversión, para que,
después de esta operación, en el acumulador queden
los bits ya obtenidos junto con el 1[_ que está en alguno
de los bits del registro L, resultado con lo cual se
generará con el conversor el voltaje en la mitad que
corresponda de acuerdo al estado de las
aproximaciones sucesivas; este resultado lo copia en el
registro L, incrementa el registro C para apuntar la
dirección de datos del pórtico B del PIÓ y escribir en él
el contenido del acumulador, con lo cual ingresan al
conversor los 8 bits menos significativos del valor digital
del voltaje análogo que se desea generar.

Vale la pena recordar que luego de encontrar el


resultado de los bits más significativos, estos quedan
retenidos en el pórtico A del PIÓ, y por lo tanto en las
entradas correspondientes a los 2 bits más significativos
del conversor.

Luego decrementa el registro C, para apuntar la


dirección de datos de! pórtico A del PIÓ, y leerlo en el
acumulador con el objeto de conocer el resultado de la
comparación de los voltajes del conversor y del circuito
muestreador-retenedor; para ello prueba el bit 3 del
acumulador, cuyo valor corresponde a la salida del
comparador; si el voltaje del circuito muestreador-
retenedor es menor al voltaje del conversor (VS/H <
VDAC), la salida del comparador es un OL (As = 0L) lo cual
se refleja en el contenido de la bandera Z invertido (Zp =
A < 14H
IL), el programa salta a la dirección DECB sin actualizar
OUT (C),A
el registro E donde se están obteniendo los bits menos
significativos de la conversión, con lo cual el próximo
voltaje a generarse en el conversor estará en la mitad
inferior siguiente.

Por el contrario, si el voltaje del circuito muestreador-retenedor es mayor al


voltaje del conversor (VS/H > VDAC), la salida del comparador es un IL (A3 = IL)
lo cual se refleja en el contenido de la bandera Z invertido (ZF = OL), actualiza
el contenido del registro E, copiando en él el registro L, para que el próximo
voltaje a generarse en el conversor se ubique en la mitad superior siguiente; y
salta a la dirección DECB a continuar con la conversión.
208

En la dirección DISCON, a donde el programa salta cuando ha finalizado de


obtener todos los bits de la conversión, carga el acumulador A con el valor 14H
y lo escribe en la dirección de datos del pórtico A del PIÓ, que está en el
registro C, para deshabilitar el conversor DAC1000, dejar el circuito
muestreador-retenedor en muestrear (sample), y el latch 74LS373 en latch
(retenga), como se ha indicado anteriormente.

4.7 LINEALIZACION

Como se describió en el capítulo 3, el voltaje generado por las termocuplas y


que es amplificado por los C.l. AD594 o AD595, según el caso, es el que se
convierte a digital con la subrutina ADCONV que se describió en el numeral
anterior; ese voltaje debe ser transformado en primer lugar al voltaje entregado
por cada termocupla, utilizando las ecuaciones de transferencia encontradas al
describir los voltajes de salida de los amplificadores, y que se las escribe a
continuación para facilitar la explicación:

Para la termocupla tipo K;

AD595

Para la termocupia tipo J;

T — AD594'OUT
'^-' ie , ,77
J OUT — ~~ 1 ° uy
°UT 193.4
Para la termocupla tipo E:

AD594
Enr,r = • — 28.5 LiV
°UT 164.1 ^
Y, para la termocupla tipo T:
= AD595OUT
247.3
Entonces se debe encontrar el voltaje entregado por cada termocupla
aplicando estas fórmulas, para lo cual se ha calculado manualmente los
números binarios normalizados en punto flotante correspondientes a los
divisores del primer término de cada ecuación, y a los términos que se deben
restar. Luego, con la ayuda del directivo DFB del ensamblador Cross16 se los
incluye en el listado del archivo a ensamblar, para que después de obtenido el
archivo hexadecimal que produce el CrossIG, sean grabados en la memoria
EPROM.
209

Obtenido el voltaje que entrega cada termocupla, se debe linealizarlo, lo cual,


como se explicó en el capítulo 2, se lo puede realizar con algunos métodos.
En el presente trabajo se escogió el método de evaluar el polinomio que
mediante un proceso de regresión matemática se lo puede obtener de las
tablas de los voltajes que entregan las termocuplas proporcionadas por los
fabricantes. El grado del polinomio debe ser tal que se aproxime lo mejor
posible a la curva de la termocupla.

Los coeficientes que se utilizan han sido obtenidos del Manual OMEGA
"Temperature Measurement Hand Book and Encyclopedia", Edición 1985 y
que se pueden observar en la Tabla 2.5 del capítulo 2 y que parcialmente se
repiten a continuación con las termocuplas que interesan; en ella aparecen: la
precisión que se puede lograr y el rango de temperatura en los cuales se
pueden usar los polinomios.

Tabla 2.5 Coeficientes de los Polinomios.

TIPO K TIPO J TIPO E TIPO T


COEFICIENTES

0°C a 1370°C 0°Ca760°C -100°Ca1000°C -160°Ca400°C


±0.7°C ±0.1°C ±0.5°C ±0.5°C
8vo. Orden 5to. Orden 9no. Orden 7mo. Orden

ao 0.226584602 -0.048868252 0.104967248 0.100860910


ai 24152,10900 19873.14503 17189.45282 25727.94369
32 67233.4248 -218614.5353 -282639.0850 -767345.8295

as 2210340.682 11569199.78 12695399.5 78025595.81

34 -860963914.9 -264917531.4 -448703084.6 -9247486589


as 4.83506 E+10 2018441314 1.1 0866 E+10 6.97688 E+11
36 -1.18452E+12 -1. 76807 E+11 -2.66192 E+13

a? 1.38690 E+13 1.71842E+12 3.94078 E+14


as 6.33708 E+13 -9.19278 £+12
39 2.06132 E+13

Igual que para las. ecuaciones de las termocuplas, los coeficientes mostrados
en la tabla, fueron calculados manualmente para obtener los números binarios
normalizados en punto flotante correspondientes; y, con la ayuda del directivo
DFB del ensamblador Cross16 se los incluyó en el listado del archivo a
ensamblar, para que después de obtenido el archivo hexadecimal que produce
el CrossIG, sean grabados en la memoria EPROM.
210

Las definiciones con los directivos DFB se realizaron iniciando con el grado del
polinomio, a continuación los 2 términos de las ecuaciones y finalmente los
coeficientes de los polinomios, como se muestra en las tablas que siguen:

TERMOCUPLA TIPO K
Número Normalizado
Coeficientes Decimal Etiqueta En Punto Flotante
Grado Polinomio 8 GRADOK 08
Divisor Ecuación 247.3 TKO 43.77.4C.CD
Término Ecuación 0.011 TK1 3C.34.39.58
38 6.33708 E+13 CKA8 AE.8B.5A.97
a; 1.38690 E+13 CKA7 32.6E.44.82
36 -1.18452E+12 CKA6 B5.9E.FB.CC
as 4.83506 E+10 CKA5 38.4A.CC.10
34 -860963914.9 CKA4 BA.61.B2.4F
33 2210340.682 CKA3 3B.10.DB.5D
32 67233.4248 CKA2 3D.89.B1.AE
31 24152.10900 CKA1 41. C1. 37.85
ao 0.226584602 CKAO 3E.68.05.CB

TERMOCUPLA TIPO J
Número Normalizado
Coeficientes Decimal Etiqueta En Punto Flotante
Grado Polinomio 5 GRADOJ 05
Divisor Ecuación 193.4 TJO 43.41.66.66
Término Ecuación 0.016 TJ1 3C.83.12.6F
35 2018441314 . CJA5 36.07.74.8F
34 -264917531.4 CJA4 B9.8A.E4.A1
33 11569199.78 CJA3 3C.3D.8C.BE
32 -218614.5353 CJA2 BE.5F.DC.7D
31 19873.14503 CJA1 41.9E.FC.33
30 -0.048868252 CJAO BD.48.2A.14

TERMOCUPLA TIPO E
Número Normalizado
Coeficientes Decimal Etiqueta En Punto Flotante
Grado Polinomio 9 GRADOE 09
Divisor Ecuación 164.1 TEO 43.24.19.99
Término Ecuación 0.0285 TE1 3C.E9.78.D5
39 2.06132 E+13 CEA9 28.B9.AA.CE
aa -9.19278E+12 CEAS AD.21.B8.9A
a? 1.71842 E+12 CEA7 30.EC.2D.87
36 -1. 76807 E+11 CEA6 B4.3D.D8.57
35 1.10866 E+10 CEAS 37.3a.00.96
34 -448703084.6 CEA4 B9.EB.3F.E9
33 12695399.5 CEAS 3C.50.00.1D
32 -282639.0850 CEA2 BE.90.B6.12
31 17189.45282 CEA1 41.89.84.00
3o 0.104967248 CEAO 3D.D6.F9.12
211

TERMOCUPLA TIPO T
Número Normalizado
Coeficientes Decimal Etiqueta En Punto Flotante
Grado Polinomio 7 GRADOT 07
Divisor Ecuación 247.3 TTO 43.77.4C.CD
Término Ecuación 0.011 TT1 3C.34.39.58
a? 3.94078 E+14 CTA7 34.D3.91.AB
36 -2.66192 E+13 CTA6 B7.DF.4C.4C
as 6.97688 E+11 CTA5 3A.36.E5.0D
34 -9247486589 CTA4 BC.17.82.C5
33 78025595.81 CTA3 3D.9F.CB.E2
32 -767345.8295 CTA2 BF.44.70.C7
ai 25727.94369 CTA1 41.CD.D2.D4
ao 0.100860910 CTAO 3D.CE.90.2A

Se han definido los coeficientes como aparecen en las tablas para facilitar la
evaluación del polinomio de cada termocupia; se debe aclarar que en las
tablas anteriores, el grado del polinomio no está normalizado porque se lo
utilizará como contador al realizar la evaluación.

Como se había mencionado en el capítulo 2, el polinomio que se va a evaluar


se lo puede poner en la forma;

T -

Y también de la forma:

T =

Si se aplica ia forma general del polinomio al caso de la termocupia tipo J,


cuyo polinomio es de 5to. grado, se tiene:

T = { { { { a5 . x + a4 } x + a3 } x + a2 } x + a\ x + a0

Allí se puede notar que las operaciones de multiplicación y suma en cada


paréntesis se efectúan por 5 ocasiones, lo cual coincide con el grado del
polinomio. Con este ejemplo se pasa a describir la subrutina EVPOL que se
ha implementado para evaluar el polinomio de cualquiera de las termocuplas.

Como se mencionó en la descripción de la subrutina ATDC, que hace


funcionar al equipo en el modo de medición de temperatura, el resultado de la
conversión del voltaje generado por la termocupia luego de normalizarlo, se lo
multiplica por un factor de corrección que se encuentra almacenado en las
localidades FCCR. Este factor de corrección es necesario debido a que los
coeficientes del polinomio han sido calculados tomando en cuenta que el
voltaje generado por las termocuplas está en milivoltios, y además que el
212

voltaje de referencia para el conversor digital-análogo es de 10 voltios. Como


el conversor es de 10 bits, significa que el paso de conversión estará entre O y
210 que es 1024; por lo tanto el factor de corrección será:

REFERENCIA 1QQOO mV
FCCR = y
= 9.765625 mV
Paso C
^"onversion 1024

Este valor fue convertido a un número binario normalizado en punto flotante en


forma manual y está incluido en el ensamblador Cross16 con el directivo DFB;
el valor obtenido en hexadecimal es; 41.1C.40.00.

4.7.1 SUBRUTINA EVPOL

Esta subrutina es invocada desde la subrutina ATDC luego de que se ha


obtenido el resultado de la conversión, se lo ha normalizado, se lo ha
multiplicado por el factor de corrección FCCR, y el resultado se lo ha
almacenado en las localidades BN1. El registro B del ¡j,P viene cargado con el
grado del polinomio, y el registro HL con la dirección del primer byte del divisor
correspondiente a la ecuación del tipo de termocupla que se está barriendo,
asi: HL - T?0, donde ? puede ser K, J, E o T, dependiendo del tipo de
termocupla. (Ver tablas de polinomios).

Guarda primero el contenido del registro B, que es el grado


del polinomio, en la pila (stack). Apunta con el registro DE
la localidad BN2, y carga el registro BC con 4H, para
PUSH BC
transferir a estas localidades, con la instrucción LDIR, los 4
DE < BN2 bytes correspondientes al divisor de la ecuación que, como
BC -< 4H se mencionó, está apuntado por el registro HL. Al finalizar
LDIR
PUSH HL
la instrucción LDIR, el registro HL quedará apuntando al
primer byte de! término que se debe restar (T?1) de
acuerdo a las ecuaciones de cada termocupla. Guarda por
CALL DFP ello el contenido de este registro en la pila.

Llama a continuación a la subrutina DFP para dividir el


POP HL número normalizado que se encuentra en las localidades
BN1, que es el resultado de la conversión, para el número
normalizado que se encuentra en las localidades BN2, que
213 es el divisor de la ecuación respectiva. El resultado de
esta división queda almacenado en las localidades BN1.

Recupera de la pila en el registro HL, la dirección del primer byte del término
que se debe restar de acuerdo a la ecuación, y transfiere este término a las
213

localidades BN2 con la instrucción LDIR, apuntando su primer byte con el


registro DE, y cargando el registro BC con 4H. Al finalizar la instrucción LDIR,
el registro HL quedará apuntando al primer byte del coeficiente de mayor
exponente del polinomio respectivo C?Ant donde ? representa el tipo de
termocupla, y n el grado del polinomio. Guarda por ello el contenido de este
registro en la pila.

212
Llama a continuación a la subrutina SFP para restar del
número normalizado que se encuentra en las
localidades BN1, que es el resultado de la división
anterior, el número normalizado que se encuentra en las
DE <-— BN2
BC -<-— 4H localidades BN2, que es el término que se debe restar
LDIR de acuerdo a la ecuación respectiva. El resultado de
PUSH HL esta resta queda almacenado en las localidades BN1.
Con ello se ha obtenido el voltaje generado por la
termocupla a partir del voltaje convertido desde el
CALL SFP
amplificador AD-594 o AD-595.

Apunta con el registro DE las localidades en memoria


DE <-— X
HL <-— BN1
RAM etiquetadas con X (4 bytes), para transferir desde
BC <-— 4H las localidades BN1 que las apunta con el registro HL,
LDIR cargando el registro BC con 4H, a través de la
DE <—— BN1
POP HL
instrucción LDIR. En las localidades X entonces, se
BC <-— 4H almacena el voltaje generado por la termocupla, con el
LDIR cual se evaluará el polinomio.
POP BC

Apunta ahora las localidades BN1 con el registro DE,


—< recupera de la pila en el registro HL la dirección del
primer byte del coeficiente de mayor exponente, y luego
PUSH BC de cargar el registro BC con 4H, transfiere ese
PUSH HL
coeficiente a las localidades BN1 con la instrucción
LDIR. Al finalizar la instrucción LDIR, el registro HL
BC -<-— 4H quedará apuntando al primer byte del coeficiente que
LDIR
sigue, es decir C?An-i. Recupera de la pila en el
registro B, el grado del polinomio que servirá como
CALL MFP
contador del número de evaluaciones.

En la dirección EVO, a donde saltará el programa a


DE <—- BN2
efectuar una nueva evaluación, guarda el contenido del
POP HL registro B y del registro HL en la pila; apunta el primer
byte de las localidades BN2 con el registro DE, y el
LDIR
PUSH HL
primer byte de las localidades X con el registro HL, y
después de cargar el registro BC con 4H, transfiere el
contenido de X a BN2 con la instrucción LDIR. Llama a
214
la subrutina MFP para multiplicar el contenido de las
localidades BN1 con el contenido de las localidades
214

BN2, es decir: el primer coeficiente (C?An) por el voltaje


generado por la termocupla (X). El resultado de esta
operación queda almacenado en las localidades BN1.

Apunta a continuación el primer byte de las localidades


BN2 con el registro DE, recupera de la pila en el registro
HL la dirección del primer byte del coeficiente que sigue,
y después de cargar el registro BC con 4H, transfiere los
4 bytes de este coeficiente a las localidades BN2 con la
instrucción LDIR. Al finalizar esta instrucción el registro
HL quedará apuntando el primer byte del siguiente
coeficiente, por esta razón guarda el registro HL en la
pila.

Llama luego a la subrutina AFP para sumar el contenido


de las localidades BN1 con el contenido de las
localidades BN2, es decir; el resultado de la
multiplicación anterior más el segundo, coeficiente.

El resultado de esta operación queda almacenado en las localidades BN1.

Con las operaciones realizadas hasta este punto, se ha obtenido lo indicado en


el primer paréntesis del polinomio. Por lo tanto se puede repetir el mismo
procedimiento, el número de veces indicado por el grado del polinomio. Por
esta razón recupera de la pila la dirección del primer byte del siguiente
polinomio en el registro HL, y el grado del polinomio en el registro B.
Decrementa el registro B para verificar si ha finalizado la evaluación del
polinomio; si B ^ O salta a la dirección EVO a continuar con la evaluación del
polinomio; si, en cambio B = O retorna de la subrutina.

4.8 ARITMÉTICA DE PUNTO FLOTANTE

Con el objeto de que el equipo sea capaz de realizar operaciones aritméticas


básicas a través de las cuales pueda manipular la medición de temperatura
efectuada, desde el voltaje generado por las termocuplas que no tiene una
relación lineal voltaje vs. temperatura, se desarrollaron las subrutinas de punto
flotante basadas en el estándar del IEEE (Norma 754, 1985) que sucintamente
se describe a continuación.

La norma define tres formatos; precisión sen'cilla (32 bits), doble precisión (64
bits) y precisión extendida (80 bits). Este último formato está concebido para
reducir errores de redondeo y es usado principalmente dentro de unidades de
aritmética de punto flotante. Tanto el formato de precisión sencilla como el de
215

doble precisión utilizan base 2 para las fracciones y notación en exceso para
los exponentes. En las figuras que siguen se muestran los formatos:

3ITS 1 8 23
PRECISIÓN FRACCIÓN
SENCILLA
SIGNO EXPONENTE

BITS 52
DOBLE
PRECISIÓN EXPONENTE FRACCIÓN

SIGNO

Ambos formatos se inician con un bit de signo para el número en su conjunto,


un O para positivo y un 1 para negativo. A continuación viene el exponente
que usa notación en exceso (bias): 127 para precisión sencilla y 1024 para
doble precisión. Los exponentes mínimo (0) y máximo (255 y 2047) no se
utilizan para números normalizados sino que tienen usos especiales que se
mencionarán más adelante. Por último, se tiene las fracciones de 23 y 52 bits
respectivamente.

Una fracción normalizada se inicia con un 1 binario, seguido de un punto


binario y después el resto de la fracción. Los autores de la norma se dieron
cuenta de que el primer bit 1 en la fracción no se requiere almacenar ya que
siempre debe existir. En consecuencia, la norma define un punto binario
implícito y, después 23 o 52 bits arbitrarios. Si todos estos bits son ceros, la
fracción tiene el valor numérico 1.0; si todos ellos son unos, la fracción es
ligeramente menor a 2.0. Para evitar confusiones con una fracción
convencional, la combinación del 1 implícito, el punto binario implícito y los 23
o 52 bits explícitos se denomina significando en lugar de fracción o mantisa.
Todos los números normalizados tienen un significando s, en el rango: 1 < s
< 2.

Las características numéricas de los números en punto flotante del IEEE se


muestran en la figura que sigue.

CONCEPTO PRECISIÓN SENCILLA DOBLE PRECISIÓN


Bits para el signo 1 - 1
Bits para el exponente 8 11
Bits para [a fracción 23 52
Tota! de bits 32 64
Sistema del exponente Notación en exceso: 127 Notación en exceso: 1023
Normalizado más pequeño 2-126 2-1022
Normalizado más grande aprox. 2+i2a aprox. 2*1024
Rango decimal aprox. 10-38 a 10*8 aprox. 10-^8 a 10*08
Desnormalizado más pequeño aprox. 1045 Aprox. 10-324
216

Como ejemplos se pueden considerar a los números 0.5, 1, y 1.5 en el formato


normalizado de precisión sencilla. Estos números estarán representados
como: 3F.OO.OO.OO H, 3F.80.00.00 H y 3F.CO.OO.OO H, respectivamente.

Uno de los problemas tradicionales con los números de punto flotante es cómo
tratar con números demasiado pequeños o demasiado grandes. La norma del
IEEE, además de los números normalizados, trata con otros cuatro tipos
numéricos que se describen a continuación.

Normalizado ± 0 < Exp < Max Cualquier patrón de bits

Desnormalizado ± 0 Cualquier patrón de bits diferente de cero

Cero ± 0 0

Infinito ± 111.. .1 0

No-número ± 111.. .1 Cualquier patrón de bits diferente de cero

Bit de signo

Surge un problema cuando el resultado de un cálculo tiene una magnitud


menor que el número normalizado de punto flotante más pequeño que se
puede representar en este sistema. Anteriormente, la mayoría de fabricantes
de hardware elegían uno de dos enfoques; simplemente ajustar el resultado a
cero y continuar, o provocar un mensaje de insuficiencia de punto flotante.
Como ninguno de estos dos enfoques era satisfactorio, la norma del IEEE
inventó los números desnormalizados. Estos números tienen un exponente de
O y una fracción dada por los siguientes 23 o 52 bits. El bit 1 implícito a la
izquierda del punto binario se convierte ahora en 0. Se puede distinguir a los
números desnormalizados de los normalizados porque en los segundos no se
permite tener un exponente de 0.

4.8.1 EJEMPLO DE NUMERO NORMALIZADO EN PUNTO FLOTANTE

Como ejemplo de obtener un número normalizado en punto flotante en forma


manual, se normaliza a continuación el factor de corrección FCCR por el cual
se multiplica el resultado de la conversión A/D en la subrutina ATDC.

FCCR = 9.765625 mV

Primero se obtiene el número binario que corresponde a la parte entera,


dividiéndolo sucesivamente para 2 hasta obtener O, y anotando los O's o 1's del
217

residuo; luego se multiplica sucesivamente por 2 la parte fraccionaria,


anotando los O's o 1 J s que se van obteniendo en la parte entera, desechándola
para la siguiente multiplicación, hasta obtener los 23 bits del significando o
hasta que la parte fraccionaria se haga cero; así:

91 .-.9 decimal = 1001 binario


4 O
2 O 0.765625 0.53125 0.0625 0.125 0.25 0.5
1 1 _x 2_ x 2 x 2 x 2 x 2^ x 2
O 1.531250 1.06250 0.1250 0.250 0.50 1.0

.-. 0.765625 decimal = 0.110001 binario; y,


/. 9.765625 decimal = 1001.110001 binario

Poniendo el número en punto flotante de acuerdo al estándar, tenemos;

2 127 x 1001.110001

Si se recorre el punto binario hacia la izquierda hasta que quede el 1 implícito,


se debe aumentar también el exponente en una cantidad igual al número de
lugares recorridos, entonces:

2127+3 x 1.001110001 = 2130 x 1.001110001

Se debe ahora encontrar el número binario que representa al exponente y que,


utilizando el mismo método que se siguió para encontrar la parte entera del
número a convertir, se tiene que: 130 decimal - 10000010 binario. Con esto
se puede ensamblar el número binario normalizado en punto flotante: el primer
bit que corresponde al signo, en este caso positivo, es 0; a continuación en los
8 bits siguientes el exponente, y finalmente el significando que es el número
binario obtenido sin el 1 implícito; como en este ejemplo solo se tienen 9 bits
significativos para el significando, se completa los 23 bits del significando con
O's. El número normalizado quedaría por lo tanto:

O 10000010 00111000100000000000000

SIGNO EXPONENTE SIGNIFICANDO

Separando ahora en grupos de 4 bits para expresarlo en forma hexadecimal:

0100 0001 0001 1100 0100 0000 0000 0000


4 1 1 C 4 O O O

Es decir: 41.1C.40.00, que es el factor de corrección utilizado para multiplicarlo


por el resultado de la conversión.
218

4.8.2 SUBRUTINAS PARA OPERACIONES EN PUNTO FLOTANTE

Como se podrá notar, de lo descrito en relación con la norma del IEEE para
punto flotante, el desarrollo de las subrutinas que permitan operar ai pP en
base a esa norma implica un desarrollo bastante complejo y tedioso que no es
el objetivo del presente trabajo. Por estas razones se desarrollaron las
subrutinas indicadas con precisión sencilla, pues la medición de temperatura
que se consigue con el equipo tiene una precisión de ± 1 °C por el conversor
análogo-digital utilizado que es de 10 bits, y por los polinomios de Idealización
empleados que sirven para precisiones de ese mismo orden.

Las subrutinas desarrolladas por lo tanto, trabajan con números normalizados


de precisión sencilla (32 bits, 4 bytes), no manejan números desnormalizados,
y lo relacionado con el redondeo se lo trató en la forma menos complicada
posible.

Para facilitar las operaciones con los números normalizados, se escogió una
metodología con la cual se guarda el signo del número normalizado, el
exponente se lo ubica en el primer byte del número, y se coloca el 1 implícito
del número normalizado en el bit más significativo del segundo byte. Con ello
se puede operar más fácilmente por un lado con el byte correspondiente al
exponente y por otro con los 3 bytes del significando. A este procedimiento se
lo ha llamado desempacar un número normalizado.

Como en todas las subrutinas para operaciones aritméticas en punto flotante


es necesario desplazar el significando hacia la derecha para igualar
exponentes por ejemplo, se pueden perder bits del número con los
desplazamientos; por ello se trabajó siempre aumentando 3 bytes al
significando para no perder precisión, y al momento de normalizar los
resultados se procedió a efectuar un redondeo tomando en cuenta esos 3
bytes adicionales.

De lo expuesto se puede concluir que el desarrollo de las subrutinas para


operaciones en punto flotante es un proceso complejo que tomó mucho tiempo
y esfuerzo para lograrlo, y que aunque se lo realizó, no siendo el objetivo del
presente proyecto, se lo describe resumidamente. De todas maneras en el
listado del programa que se encuentra en los anexos aparecen todas las
subrutinas descritas instrucción por instrucción.

Todas las subrutinas de punto flotante chequean ciertas excepciones como


números demasiado pequeños, o números demasiado grandes para ser
representados en precisión sencilla, y también operaciones no permitidas
como división por cero. Aunque en la evaluación de los polinomios de las
termocuplas no se producirán estas excepciones, se las tomó en cuenta
219

debido a que el equipo funciona también en el modo de calculadora, como una


forma de comprobar la eficacia de estas subrutinas.

4.8.2.1 SUBRUTINAS AFP Y SFP

Subrutinas para sumar (AFP) o restar (SFP) dos números normalizados


almacenados en las localidades de memoria RAM etiquetadas con BN1 y BN2.
El resultado se almacena en BN1 normalizado. En realidad es una sola
subrutina, pero cuando se requiere restar dos números, como en BN2 viene el
número normalizado a restar, lo que se hace es primero que todo cambiar el
signo del número que está en BN2, y a continuación tratar la operación como
una suma. La decisión de sumar o restar los números dependerá entonces de
sus signos.

Para realizar la operación de suma o resta, la subrutina realiza las siguientes


tareas: desempaca los números, deja al número mayor en BN1, iguala los
exponentes desplazando el significando del número menor hacia la derecha;
dependiendo de los signos suma o resta los significandos; verifica si el
resultado es: O, un número demasiado pequeño que igualmente lo trata como
un O, o un número demasiado grande, en cuyo caso pone en BN1 un código
de error. Finalmente, si el resultado es representable de acuerdo a la norma,
realiza redondeo, si es necesario, y lo normaliza.

Esta subrutina para su funcionamiento llama a otras subrutinas que se indican


a continuación, junto con una breve descripción de su función:

Subrutina UNP. Para desempacar los números normalizados almacenados


en BN1 y BN2: guarda los signos de los números, y deja en el primer byte de
cada número el exponente, y en los 3 bytes restantes el significando con el 1
implícito ubicado en el bit más significativo del segundo byte. En ella existe la
etiqueta UNO, donde se la puede llamar para que se ejecute parcialmente.

Subrutina CLN. Para borrar o llenar con ceros desde la dirección que está
apuntada por el registro HL, y el número de bytes con que viene cargado el
registro B. En ella existe la etiqueta REP, donde se la puede llamar para que
se ejecute parcialmente.

Subrutina CFP. Para determinar cuál de los números con los que se va a
operar, BN1 y BN2, es mayor: si BN1 ^ BN2 los deja como están; en cambio
si BN2 > BN1, los intercambia; con lo cual esta subrutina siempre dejará el
número mayor en BN1.
220

Subrutina SHF. Para desplazar 1 bit hacia la derecha los bytes de un número
binario desempacado cuyo primer byte, el exponente, viene apuntado por el
registro HL1 para incrementar su valor; en el registro E viene el número de
veces que se debe incrementar al registro HL para que apunte el byte desde
donde se debe empezar a desplazar el significando; y, el registro D viene con
el número de bytes que conforman el número desempacado. En ella existe la
etiqueta SH1, donde se la puede llamar para que se ejecute parcialmente.

Subrutina RAD. Para sumar desde el byte menos significativo del


significando de 2 números desempacados que vienen apuntados por los
registros HL y DE, y el número de bytes con que viene el registro B. El
resultado se va acumulando en los bytes apuntados por el registro DE.

Subrutina RSU. Para restar desde el byte menos significativo del significando
de 2 números desempacados que vienen apuntados por los registros HL y DE,
y el número de bytes con que viene el registro B. El resultado se va
acumulando en los bytes apuntados por el registro DE.

Subrutina CMO. Para verificar si el número de bytes con que viene cargado el
registro B contienen ceros, y desde la dirección apuntada por el registro HL. Si
alguno de los bytes es diferente de cero, retorna sin tomar ninguna acción; en
cambio, si todos los bytes contienen ceros, carga O en el byte apuntado por el
registro IX, que generalmente es el exponente de un número desempacado.

Subrutina ÑOR. Para desplazar hacia la izquierda los bytes del significando
de un número desempacado localizado en los 6 bytes de BN1, hasta que en el
bit más significativo del primer byte del significando quede un 1. Con cada
desplazamiento decrementa el exponente del número, que viene apuntado por
el registro índice IX. Cheque también si el exponente del número es cero, y si
lo es retorna de la subrutina sin tomar ninguna acción. Para cumplir con su
función, esta subrutina llama a su vez a la subrutina SL, que se describe a
continuación.

Subrutina SL. Para desplazar hacia la izquierda un bit, el número de veces


con que viene cargado el registro B, y desde el byte menos significativo de un
número desempacado cuya dirección viene apuntada por el registro HL. En
ella existe la etiqueta SLO, donde se la puede llamar para que se ejecute
parcialmente.

Subrutina GEX. Para averiguar si el resultado de una operación efectuada,


que se almacena en BN1, se hizo demasiado grande y no puede representarse
de acuerdo a la norma que se ha escogido; escribe entonces en BN1 un
código de error. Si no es así, normaliza el número después de efectuar
redondeo. Si el número, en cambio, es demasiado pequeño, llena de ceros los
bytes de BN1. En ella existen las etiquetas RON, ERR, PAK, PA3 y PA2,
donde se la puede llamar para que se ejecute parcialmente.
221

Subrutina AOV. Para sumar la bandera carry (Cp) a (a cual se [e pone un 1u,
al significando del resultado de una operación efectuada, desde el byte menos
significativo apuntado por el registro HL, y eí número de bytes con que viene
cargado el registro B.

4.8.2.2 SUBRUTNAMFP

La función de esta subrutina es la de multiplicar dos números binarios


normalizados en punto flotante, que están almacenados en las localidades de
memoria RAM etiquetadas con BN1 y BN2. El resultado se almacena en BN1
normalizado.

Esta subrutina para su funcionamiento realiza las siguientes tareas:


desempaca los números guardando sus signos, suma los exponentes para
obtener el exponente del resultado, suma sucesivamente el significando del
multiplicando de acuerdo a los bits del significando del multiplicador,
desplazando el primero un bit hacia la izquierda con cada suma, para obtener
el significando del resultado. Encuentra el signo del resultado, y verifica si el
resultado es: O, un número demasiado pequeño que igualmente lo trata como
un O, o un número demasiado grande, en cuyo caso pone en BN1 un código
de error. Finalmente, si el resultado es representable de acuerdo a la norma,
realiza redondeo, si es necesario, y lo normaliza.

Desde la subrutina MFP se hacen llamadas a las siguientes subrutinas que


fueron ya explicadas en el numeral anterior: UNP, CLN, SH1, RAD, SL, ÑOR,
GEXy ERR.

4.8.2.3 SUBRUTINA DFP

La función de esta subrutina es la de dividir dos números binarios


normalizados en punto flotante, que están almacenados en las localidades de
memoria RAM etiquetadas con BN1 y BN2. El resultado se almacena en BN1
normalizado.

Esta subrutina para su funcionamiento realiza las siguientes tareas:


desempaca los números guardando sus signos, resta los exponentes para
obtener el exponente del resultado, verifica si el significando del dividendo es
mayor que el significando del divisor, para lo cual resta sus significandos; si el
del dividendo es mayor, pone un 1 en el significando del cuociente, si es menor
222

pone un cero; luego desplaza a la izquierda el significando del dividendo para


obtener el siguiente bit, y repite hasta obtener todos los bits del significando del
cuociente. Encuentra el signo del resultado, y verifica si el resultado es; O, un
número demasiado pequeño que igualmente lo trata como un O, o un número
demasiado grande, en cuyo caso pone en BN1 un código de error.
Finalmente, si el resultado es representable de acuerdo a la norma, realiza
redondeo, si es necesario, y lo normaliza.

Desde la subrutina DFP se hacen llamadas a las siguientes subrutinas que


fueron ya explicadas al analizar las subrutinas AFP y SFP, estas son: UNP,
CLN, RSU, SLO, RAD, SL, ÑOR, GEX , ERR y PA3.

4.8.2.4 SUBRUTINA BBCD

Esta subrutina se utiliza para convertir un número binario normalizado en punto


flotante que está almacenado en las localidades BN1, a un número BCD
(Binario Codificado en Decimal), para que posteriormente pueda ser mostrado
en los 6 display's del equipo; el primer display con el signo del número y 5
dígitos BCD. El resultado queda almacenado en las localidades BCDE (3
bytes), y en cada byte 2 dígitos BCD. La posición del punto decimal queda en
el registro E del ¡jP.

El funcionamiento resumido de la subrutina es como sigue: desempaca el


número binario a convertir, guarda el signo, verifica si el resultado tendrá solo
parte entera, solo parte decimal o ambas, analizando el valor del exceso del
exponente. Convierte la parte entera, si la hay, bit a bit haciendo un ajuste
decimal del resultado que se va obteniendo, aprovechando la instrucción DAA
que posee el set de instrucciones del ¡iP. Deja a continuación la parte
decimal, si la hay, primero de la forma O.xxx , es decir eliminando el exceso
(bias) del exponente, y la convierte luego bit a bit a un número binario,
generando las potencias positivas de 5, que coinciden con las potencias
negativas de 2 en decimal, para lo cual utiliza las subrutinas MULT10 y
MULT5. Luego convierte el número binario así obtenido a un número BCD,
utilizando la instrucción DAA. Junta la parte entera y la parte decimal si
existen ambas, verifica si el resultado es demasiado grande'para mostrarlo en
los 6 displays, y si lo es, escribe mensaje de error, realiza redondeo si es
necesario y empaqueta el número BCD obtenido en las localidades de RAM
etiquetadas con BCDE.

Desde la subrutina BBCD se hacen llamadas a las siguientes subrutinas que


fueron ya explicadas al analizar las subrutinas AFP y SFP, estas son: UNP,
CLN, SL, SH1, RAD y REP. A más de estas a la subrutina ROUBCD que se
describió en el numeral 4.5.2.1.2.
223

Además de las subrutinas indicadas, desde esta subrutina se llama a las que
se indican a continuación, junto con una breve descripción de su función;

Subrutina DAD. Para sumar la bandera carry (CF) ai número de bytes con
que viene cargado el registro B, y desde la dirección apuntada por el registro
HL, que debe ser el byte menos significativo del número, y convertir el
resultado de la suma a dígitos BCD. La instrucción utilizada para ello DAA
(Ajuste Decimal del Acumulador) debe estar precedida de una instrucción de
suma o resta con el acumulador, lo cual se cumple en la subrutina.

Subrutina CERO. Para verificar si los 6 bytes de las localidades de memoria


RAM etiquetadas con TEM, están llenos de ceros. Si es así, retorna de la
.m subrutina con la bandera carry (CF) en 1i_, caso contrario retorna con esa
bandera en OL. En ella existe la etiqueta CEO, donde se la puede llamar para
que se ejecute parcialmente, con el objeto de verificar localidades de memoria
diferentes a TEM, cuya dirección debe venir en el registro HL, y el número de
bytes en el registro B.

Subrutina MULT10. Para multiplicar un número binario por 10 aplicando la


ecuación que sigue;

2 8
Si a un número binario se le aumenta 4 ceros a la derecha, se lo ha
multiplicado por 16; si a este resultado se lo desplaza 1 bit hacia la derecha se
lo ha dividido para 2, y se obtiene 8x; si al número multiplicado por 16 se lo
desplaza 3 bits a la derecha se lo ha dividido para 8, y se obtiene 2x; y, por
último si se suma los dos resultados anteriores, se obtiene el número original
multiplicado por 10.

La subrutina para efectuar las operaciones indicadas utiliza las localidades de


memoria en RAM etiquetadas con BCDF y GN5T.

Subrutina MULT5. Para multiplicar un número binario por 5 aplicando la


ecuación que sigue;
16 x 16 x
= 5x
16 4
Si a un número binario se le aumenta 4 ceros a la derecha, se lo ha
multiplicado por 16; si a este resultado se lo desplaza 4 bits hacia la derecha
se lo ha dividido para 16, y se obtiene x; si al número multiplicado por 16 se lo
desplaza 2 bits a la derecha se lo ha dividido para 4, y se obtiene 4x; y, por
último si se suma los dos resultados anteriores, se obtiene el número original
multiplicado por 5.
224

La subrutina para efectuar las operaciones indicadas utiliza las localidades de


memoria en RAM etiquetadas con GN5 y GN5T.

4.8.2.5 SUBRUTINA BCDBIN

Para convertir un número BCD, resultado de transformar un número que se


está mostrando en el display con códigos a 7 segmentos, y que fue
almacenado en las localidades de RAM etiquetadas con BCD (3 bytes, 1 por
cada 2 dígitos) por la subrutina ENTER, descrita en el numeral 4.5.1.6, y con la
posición del punto decimal en el registro C del ¡aP, a un número binario
normalizado en punto flotante que se almacena en las localidades de la
memoria RAM, etiquetadas con TEM. En el bit más significativo del primer
byte de BCD viene el signo (O positivo, 1 negativo).

Esta subrutina separa la parte entera de la parte decimal, obtiene los bits de la
parte entera dividiéndola sucesivamente para 2, para [o cual la desplaza 1 bit
hacia la derecha, hace el ajuste a números BCD después de cada división, y
va almacenando los residuos obtenidos (O's o 1's) para encontrar el número
binario requerido. A la parte decimal en cambio la multiplica sucesivamente
por 2, desplazándola hacia la izquierda 1 bit, hace el ajuste a números BCD
después de cada multiplicación, y va almacenando los 1's o O's que se reflejen
en la bandera carry (llevo) resultado de las sucesivas multiplicaciones. En la
conversión de la parte entera cuenta el número de bits obtenidos para
encontrar el exponente con exceso (bias) del número en punto flotante. Si el
número ha tenido parte decimal en cambio, lo desplaza hacia la izquierda
hasta encontrar el primer 1 que será el 1 implícito, cuenta el número de
desplazamientos para encontrar igualmente el exponente con exceso (bias) del
número en punto flotante. Finalmente realiza redondeo si es necesario y
normaliza el número obtenido.

Desde la subrutina BBCD se hacen llamadas a las siguientes subrutinas que


fueron ya explicadas en los numerales anteriores, estas son: CEO, CLN, DAD,
SLO, SL, AOV, SHFy PA2.

Además de las subrutinas indicadas, desde esta subrutina se llama a las que
se indican a continuación, junto con una breve descripción de su función:

Subrutina SL4V. Para desplazar 1 dígito (4 bits) hacia la izquierda, lo 3 bytes


de las localidades de memoria etiquetadas con BCD, introduciendo O's en los 4
bits correspondientes al último dígito del último byte.

Subrutina BCBIEN. Para convertir bit a bit un número BCD, cuyo byte más
significativo viene apuntado por el registro HL, con el número de bytes con que
viene el registro C, a un número binario puro que se va almacenando con el
225

mismo número de bytes, en las localidades cuyo byte más significativo viene
apuntado por el registro DE. Hace la corrección a números BCD del número
original después de cada desplazamiento.

Para cumplir con su función invoca a la subrutina SH1 que ya se ha explicado.


CAPITULO V

EXPERIMENTACIÓN, CONCLUSIONES Y

RECOMENDACIONES

5.1 EXPERIMENTACIÓN

A continuación se muestran fotografías de las etapas de diseño y construcción


del equipo. En la fotografía de la Figura 5.1 se puede observar la fuente de
poder del equipo con todos sus componentes: transformadores, condensadores
de filtro, puentes rectificadores y los reguladores para las fuentes de + 5 VDC y ±
15 VDC¡ la regleta de conexiones a donde ingresa el voltaje alterno de 110 V ACj
y desde donde se distribuyen los voltajes de alimentación continua ya
mencionados a los diversos circuitos integrados que los requieren.

Figura 5.1 Fuente de Poder y Tarjeta Principal.


227

En esa figura también se tiene una vista frontal de la tarjeta principal donde se
observan los diferentes C.l. utilizados en el diseño entre los que se pueden
distinguir: el j¿P Z-80, el INTEL 8279, el PIÓ, las memorias EPROM y RAM, el
conversón DAC1000, entre otros. Junto a cada circuito integrado se ha instalado
un condensador de 0.01 [iF, que es una técnica corriente al diseñar tarjetas con
varios de estos circuitos.

En las fotografías de la Figura 5.2 se observan junto al equipo, las 4 termocuplas


utilizadas para el diseño, y cuyo tipo se lo puede diferenciar por el color del
conector macho que posee cada una, así; conector amarillo, tipo K; conector
negro, tipo J; conector violeta, tipo E; y, conector azul, tipo T. Junto a cada
termocupla se encuentran los cajetines telefónicos donde se acomodaron los
circuitos de amplificación para cada una de ellas. En la parte lateral del equipo
en cambio, se observan los cajetines telefónicos que sirven como pórticos y que
además de recibir los voltajes amplificados de cada termocupla, y las señales
+ALM, permiten trasladar a los circuitos de amplificación, los voltajes de
polarización de +15 VDC.

En las fotografías de la Figura 5.3 se tiene un acercamiento de los circuitos de


amplificación construidos, en donde se observa que en cada circuito se ha
montado el conector hembra correspondiente a cada termocupla, y que tiene el
mismo color que el conector macho. Los circuitos de amplificación para las
termocuplas tipos K y J son similares y por ello se muestra una vista frontal del
primero y una vista posterior del segundo. De manera similar para los circuitos
de amplificación de las termocuplas tipos E y T, con la diferencia de que en el
circuito de la tipo E, se incluyen los potenciómetros de recalibración.

En las fotografías de la Figura 5.4 se tiene una vista frontal del teclado y del
display con los 2 LED's de indicación de escala, y un sócalo de 14 pines que
concentra las señales de los pórticos de entrada. Se tiene también una vista
posterior donde se nota que para el montaje del teclado se utilizó un circuito
impreso, y para el montaje del display la técnica de wire wrapping. Se observa
además el montaje de los cajetines telefónicos utilizados como pórticos de los
circuitos de amplificación de las termocuplas.

En la fotografía de la Figura 5.5 se observa la parte posterior de la tarjeta


principal cuyas conexiones se realizaron con la misma técnica de wire wrapping
mencionada, lo cual permitió efectuar modificaciones de las conexiones de los
diferentes circuitos integrados durante el proceso de diseño y construcción con
mucha facilidad. En esta figura se observan también las etiquetas de los sócalos
de cada chip que facilitaron enormemente el proceso de conexionado. Se puede
distinguir también en la parte inferior de la fotografía, el conector de la tarjeta
principal (color verde) a través del cual: ingresan los voltajes de polarización,
salen las señales hacia el display e ingresan las señales de los pórticos de
entrada de los voltajes amplificados de las termocuplas.
228

Figura 5.2 Termocuplas tipos K, J, Ey T.


229

Figura 5.3 Circuitos de Amplificación de las Termocuplas.


230

r.f > tí iTrjJGOOOOQQQ

F/gura 5.4 Teclado y Display.

Figura 5.5 Vista posterior tarjeta principal.

En la fotografía de la Figura 5.6, se encuentra el equipo completamente


ensamblado con una termocupla tipo K más pequeña conectada al cajetfn
telefónico donde se encuentra el amplificador que corresponde a este tipo de
termocupla; desde este cajetín sale el extremo de un cable telefónico de 4 hilos,
y el otro extremo está ingresando al pórtico O del equipo para que el voltaje
amolificado de la termocupla ingrese al multiplexor análogo. Se observan
230

Figura 5.4 Teclado y Display.


231

Figura 5.5 Vista posterior tarjeta principal.

En la fotografía de la Figura 5.6, se encuentra el equipo completamente


ensamblado con una termocupla tipo K más pequeña conectada al cajetín
telefónico donde se encuentra el amplificador que corresponde a este tipo de
termocupla; desde este cajetín sale el extremo de un cable telefónico de 4 hilos,
y el otro extremo está ingresando al pórtico O del equipo para que el voltaje
amplificado de la termocupla ingrese al multiplexor análogo. Se observan
también al teclado y al display con sus conectores correspondientes, y en la parte
superior del display los transistores y resistencias de base y colector, elementos
con los cuales se maneja el display.
232

Figura 5.6 Equipo ensamblado completamente.

En esta última figura entonces se tiene al equipo efectuando ya una medición de


temperatura con todos los elementos montados y funcionando; el teclado por
ejemplo listo para recibir la pulsación de una tecla, y el display mostrando el
resultado de la medición de la termocupla a él conectada.

El la fotografía de la Figura 5.7 se observa al equipo junto con el Analizador


Lógico Tektronics, que fue una de las herramientas utilizados para el desarrollo
y depuración de los programas del joP Z-80, aprovechando el hecho de que se
disponía de la punta de prueba para este jj,P.
233

Igualmente se observa en esa figura a un computador portátil que al instante de


tomar la fotografía se encontraba corriendo el programa simulador del Z-80
(AVSIMZ80), y que también fue una herramienta muy útil en el proceso de
desarrollo y depuración del programa para el funcionamiento del equipo.

En aquella fotografía el equipo se encontraba en el proceso de depuración de las


subrutinas para calibración de cero y de escala completa del amplificador
operacional asociado al convertidor digital-análogo DAC1000, es por ello que
está presente un multímetro digital para medir los voltajes mencionados.

Figura 5.7 Proceso de desarrollo y depuración de los programas.


234

5.2 CONCLUSIONES

Los objetivos planteados en el desarrollo del presente proyecto fueron logrados


en su totalidad pues se investigó y familiarizó extensamente con los fenómenos
termoeléctricos gracias a los cuales la industria fabrica sensores de temperatura;
se profundizó en el conocimiento del comportamiento de las termocuplas, y en
base a ello se diseñó los circuitos de amplificación que permitieron manipular en
forma adecuada los voltajes entregados por este tipo de sensores de
temperatura.

El proceso de diseñó del hardware fue bastante dinámico porque en una primera
aproximación se previo por ejemplo que solamente con el [iP Z-80 y un PIÓ, se
podría realizar la mayoría de tareas requeridas para el funcionamiento del
equipo, pero conforme se iba cargando de tareas al ¡iP se comprendió que era
necesario liberarlo de algunas de ellas como las de barrido del teclado y refresco
del display; fue entonces cuando se decidió utilizar el C.l. INTEL 8279 gracias a
lo cual se liberó de esa tarea al jiP. Con este cambio fue necesario rediseñar el
hardware y consecuentemente modificar el software,

Otra aproximación que resultó fallida fue cuando se calculó que para el desarrollo
de los programas para el jiP serían suficientes 2 memorias EPROM de 2 KB de
capacidad para tener un total de 4 KB, las cuales resultaron insuficientes, por lo
que fue necesario incrementar esa capacidad, cambiando una de ellas por una
memoria con capacidad de 4 KB, para tener un total de 6 KB, capacidad con la
cual ya se logró grabar todo el programa desarrollado.

Este cambio implicó por supuesto un rediseño del hardware en lo que tiene
relación al circuito de decodificación de memoria, el que consta, como se analizó
en el capítulo III, de un decodificador de 8 salidas con 3 líneas de selección y una
compuerta AND.

Otro cambio de diseño apareció cuando se decidió que las señales +ALM de los
amplificadores de las termocuplas, a más de utilizarse para que enciendan el
LED de alarma de los cajetines telefónicos que albergan a los amplificadores de
cada termocupla, sean leídas por el ¡iP para que a través de esta información
pueda éste dar en el diplay la indicación de termocupla abierta (f#.oPEn). Al
intercalar el C.l. 1489 con el cual se cambia el nivel de señal de 15 VDC a 5VDC
el LED de alarma se encendía sin que la señal +ALM esté activa; fue necesario
por tanto cambiar el diseño como se explicó en el numera] respectivo.

En lo relacionado con la conversión análogo-digital se pudo haber utilizado un


conversor análogo-digital, pero con el objetivo de aprovechar al máximo la
potencialidad del ¡aP se decidió hacer esta conversión con un conversor digital-
análogo, un circuito muestreador-retenedor, un comparador y la programación del
235

fj,P. Esto demostró que haciendo un poco más de esfuerzo en la programación


se logra limitar la inversión y complejidad del hardware.

En cuanto al diseño del software se puede mencionar que se aprovechó de


herramientas disponibles como el Analizador Lógico Tektronix, con la punta de
prueba para el pP Z-80, y el simulador de AVS1MZ8Q, las mismas que
contribuyeron enormemente a depurar el programa y conseguir que funcione
óptimamente. Lo mencionado fue lo que determinó que se haya escogido utilizar
para el diseño del equipo al ¡aP Z-80.

El desarrollo de las subrutinas de punto flotante demandó un gran esfuerzo de


diseño por que implicó manipular números normalizados de precisión sencilla
que están conformados por 4 bytes (32 bits) dentro de los cuales 8 bits
corresponden al exponente en exceso; se debía por ello tener mucho cuidado en
los cambios relacionados con este exponente cuando se realizaban operaciones
de suma o resta con el significando de los números normalizados.

5.3 RECOMENDACIONES

El equipo diseñado puede ser utilizado en prácticas demostrativas en el campo


de la medición digital, así como en la investigación del comportamiento de
sensores de temperatura como las termocuplas.

Queda abierta la posibilidad de incrementar el número de pórticos para el voltaje


amplificado de otros tipos de termocuplas pues los multiplexores análogo y digital
de entrada tienen capacidad para 8 entradas cada uno. La restricción que se
debe tener en cuenta es que ese voltaje no podrá se mayor a 10 VDC por la
referencia de voltaje utilizada en el conversón

La medición de temperatura que se obtiene del equipo puede servir para realizar
acciones de control en procesos donde intervenga la temperatura, para lo cual
sería necesario incrementar el hardware del equipo de acuerdo al control que se
desee obtener, y modificar por supuesto la programación.

Se podría también efectuar un diseno adicional para que la medición de


temperatura que proporciona el equipo sea leída por un computador, el cual
podría construir gráficos de la temperatura medida, lo que permitiría realizar
investigaciones y estadísticas en procesos donde la temperatura es un factor
importante o determinante.

Si se incrementa una referencia de voltaje negativa que se conmute


automáticamente de acuerdo a la polaridad del voltaje entregado por las
236

termocuplas, se podría conseguir que el equipo sea capaz de medir temperaturas


negativas.

Se podría también ampliar la capacidad del equipo para que mida temperaturas
a través de otros tipos de sensores como termistores o RTD's pues con el
desarrollo de las subrutinas de punto flotante se facilita la manipulación de los
voltajes que entregan los sensores mencionados,

Queda también abierta la posibilidad de la investigación y desarrollo de la


aritmética de punto flotante sobre todo en lo relacionado con el tratamiento de
números demasiado pequeños o demasiado grandes, y en el manejo de
excepciones como división por cero, números infinitos y operaciones con estos
números, etc.

Igualmente, basados en el desarrollo de subrutinas con números normalizadas


con precisión sencilla, se podría extenderlo a números normalizados en doble
precisión que de acuerdo a la norma del IEEE, se representan en 8 bytes.
237

REFERENCIAS BIBLIOGRÁFICAS

OMEGA "Temperatura Measurement HandBook and Encyclopedia"

"Microcomputer Based DesignV John B. Peatman

"Microcomputer Interfacing".- Bruce A. Artwick

"Instrumentaron Fundamentáis and Applications".- Ralph Morrison

"Aplications of Operational Amplifiers".- Jerald G. Graeme

"Análisis Numérico" S.D. Conté - Cari de Boor

"Digital Integrated Electronics".- Herbert Taub - Donald Schilling

Manuales y Especificaciones Técnicas de los diferentes elementos a utilizarse


en el Diseño
ANEXO A

Listado de los Programas para el Funcionamiento del Equipo

0000 CPU •Z80B.TBL"


0000 HOF "INTfl"

1800 = CONTA: EQU 1800H


1801 = FLAGS: EQU 1BQ1H
1803 = BCD: EQU 1803H
1806 = BN1: EQU 1806H
1800 = 8N2: EQU 180DH
1814 = TEM: EQU 1814H
BCDE: EQU 181AH
1810 = BCDF: EQU 1B1DH
1830 = GN5: EQU 1830H
1843 = GN5T: EQU 1843H
1856 = BINNE: EQU 1856H
1850 = TEMADO: EQU 185DH
185E = X: EQU 185EH
1863 = DBUF: EQU 1863H
SCAN: EQU 186BH
1860 = NTER: EQU 186GH
1860 = TERO: EQU 186DH
186E = TER1: EQU 186EH
186F = TER2: EQU 186FH
1870 = TER3: EQU 1870H
1871 = SEGDL: EQU 1871H
1872 = WSCALE: EQU 1872H
1873 = MTERO: EQU 1873H
1874 = MTER1: EQU 1874H
1875 = MTER2: EQU 1875H
1876 = MTER3: EQU 1876H

0000 ORG OH
0000 C37B01 JP INICIO

0038 ORG 38H


0038 C3F801 JP KEYB

0040 ORG 40H

0040 0356 INTBL: DWM ENTRY


0042 037A DWM SUMA
0044 0389 DWM RESTA
0046 0398 DWM MULT
03A7 DWM DIV
004A 03BC DWM SIGN
0040 040B DWM POINT
004E 01F4 DWM WAIT1

0050 04E3 ATDCO: DWM ATDC


0052 0686 CALFSO: DWM CALFS
0054 01F4 WAITO: DWM WAIT1

0056 06A6 PROG: DWM NUMTER


0058 06E1 DWM CONFIG
005A 077A DWM SECÓNOS
0050 0795 SCALE
H800'HS'H89'H3e ado :OV>IO aososgse OdOO
HSS'HZe'HtOO'H^ ada :Í-VMO SeZEl-OLt 0300
H3VO'HLaOrH69'Hae ada :2VMO svi-aeaae 8300
HGg'Haoo'Hoi-'Hae ada •evMo agaaoi-ae ^300
Hdt/'H2SQIHt9lHvao 9dG •Í'V^O dí'SSi.gva 0300
HOL'HOOO'HVfHee 9dO ^9V>iO oi-oovi'se oaoo
HOOO'H8da'H36'HSSO ada :9V>iO ooad36sa 8000
H28'HH'H39'H2G aja :¿V)iO ZBW39ZE taoo
HZ6'HVS'H88'H3VO ada :8VMO Z6VS883V oaoo
HBs'HGe'Hte'Hoe sda HM1 aseeteoe 0000
HaOO'HOf'HZZ'Het 8dO :OMI aooí'Zzet' 8000
H8 ada :Moavys 80 ¿000

H^e'HBeteOO'HBdO ada :SH3Hi d29868308d 2000

HdVO'HOOO'HdVO'HdVO'HgB ada :^30 dVOOdVdV98 aaoo

HoaHttKXftt» sda :93N1 06t'880dd 6900

navo'Hgs'Hoa'Hevo'HZs ada :N3d01 aV980BGVZ9 >aoo

H02'H06'HddQ<HZÍ'1H90QiH26 ada :d31VOS 08^9» 3VOO

HOZ'HddO'HddOWH98'HZ6 9dO :93SN 8VOO


^9826

HZ8 8dO uadAí Z8 zvoo


H98 sda :33dAl 98 gvoo
Í-H30 8da •P3dAl 1-3 svoo
HOO 8da :>13dAl 00 woo

HOS'HddO'HZS'HZS'Heg'HaVO ada iwnNi ddzszsegav 3600

H26'H38'HddOWH88'HgOO ada :oivoad 3™9o 8600

HOOO'HddO'HddOWH98'H900 sda nvood ddddZ^9890 2600

ada :SVÍH 660aW6dOO 8800

ado :dnndo I0d9 100890 2800

ioavyg WMO 9>tO 0800


300VH3 WMO SI40 3ZOO
roavMo WMO tdOO OZOO
>ioavy9 |A)MO :Vlda31 zooo VZOO

01VO WMQ ;raoad W 8ZOO


OidVHISOW WMQ :£90yd aato gzoo
NI3dAi WMO :S90Hd OdZO tzoo
A1QV8 WMO HSO^d S3ZO 2ZOO
NI01N WMO :090Md 8VZO ozoo

HOZ 9MO ozoo

avyisow WMO ZZfrO 3SOO


A3

OOF4 05 GRADOJ: DFB 5H


OOF5 43416666 TJO: DFB 43H,41H.66H,66H
OOF9 3C83126F TJ1: DFB 3CH.fl3H.12H.6FH
OOFD 3607748F CJA5: DFB 36K7H.74H.8FH
0101 B98AE4A1 CJA4: DFB OB9H,8AH,OE4HtOA1H
0105 3C3D8CBE CJA3: DFB SCH.SDH.aCH.OBEH
0109 BE5FDC7D CJA2: DFB OBEH.5FH.ODCH.7DH
010D 419EFC33 CJA1: DFB 41H,9EH,OFCH,33H
0111 BD482A14 CJAO: DFB OBDH.48H.2AH.14H

0115 09 GRADOE: DFB 9H


0116 43241999 TEO: DFB 43H,24H,19H,99H
011A 3CE978D5 TE1: DFB 3CH.OE9H.78H.OD5H
011E 28B9MCE CEA9: DFB 28H,OB9H,OMH,OCEH
0122 AD21B89A CEAS: DFB OADH,21H,OB8H(9AH
0126 30EC2D87 CEA7: DFB 30H.OECH12DH187H
012A B43DD857 CEA6: DFB OB4H,3DH,OD8H,57H
012E 373A0096 CEAS: DFB 37H.3AH.OH.96H
0132 B9EB3FE9 CEA4: DFB OB9H.OEBH.3FH.OE9H
0136 3C50001D CEAS: DFB 3CH.50H.OH.1DH
013A BE90B612 CEA2: DFB OBEH,90H.OB6H,12H
013E 41898400 CEA1: DFB 41H.89H.84H.OH
0142 3DD6F912 CEAO: DFB 3DH.OD6H.OF9H.12H

0146 07 GRADOT: DFB 7H


0147 43774CCD TTO: DFB 43H,77H,4CH1OCDH
01 48 3C343958 TT1: DFB 3CH134H,39H,58H
01 4F 34D391AB CTA7: DFB 34H,OD3H,91H,OABH
0153 B7DF4C4C CTA6: DFB OB7H,ODFH,4CH,4CH
0157 3A36E50D CTA5: DFB 3AK36H.OE5H.ODH
015B BC1782C5 CTA4: DFB OBCH.17H.82H.OC5H
015F 3D9FCBE2 CTA3: DFB 3DH,9FH1OCBH,OE2H
0163 BF4470C7 CTA2: DFB OBFH144H,70H,OC7H
0167 41CDD2D4 CTA1: DFB 41H,OCDH,OD2H,OD4H
016B 3DCE902A CTAO: DFB 3DH.OCEH.90H.2AH

016F 411C4000 FCRR: DFB 41H,1CH140H.OH

0173 3FE66666 FRHO: DFB 3FH,OE6H,66H,66H


0177 42000000 FRH1: DFB 42H,OH.OH1OH

017B 31FF1F INICIO: LD SP,#1FFFH


017E CD950A CALL CLEAR
0181 3E32 LD A,#32H
0183 D3BF OUT (OBFH),A
0185 3E10 LD A,#10H
0187 D3BF OUT (OBFH).A
0189 218200 LD HL,#CPUUP
018C 0606 LD B;#6H
018E 1690 LD D,#90H
0190 CDAOOA CALL DISPY
0193 0603 LD B,#3H
0195 CD7D08 CALL DELAY
0198 CD950A CALL CLEAR
019B 3E03 LD A,#3H
019D D37E OUT (7EH),A
019F D37F OUT (7FHJ.A
01A1 3ECF LD A,#QCFH
01A3 D37E OUT (7EHJ.A
01A5 3E88 LD A,#88H
01A7 D37E OUT (7EHJ.A
01A9 3EOF LD A.ífQFH
01AB D37F OUT (7FHJ.A
01AD 3E08 LD A,#8H
01AF D37D OUT (7DH),A
01B1 3E54 LD A,#54H
01 83 D37C OUT {7CH),A
01 B5 3E14 LD A,#14H
01 B7 D37C OUT (7CH),A
01 B9 AF XOR A
01 BA 320018 LD (CONTAJ.A
01BD 320118 LD (FLAGSJ.A
0100 320218 LD (F!_AGS+1),A
0103 326D18 LD (TERO),A
01C6 30 INC A
0107 327118 LD {SEGDLJ.A
01CA 326C18 LD (NTERJ.A
01CD 3EC6 LD A,#OC6H
01CF 327218 LD (WSCALE).A
01D2 3EFE LD A,#QFEH
01D4 326418 LD (DBUF+1J.A
01 D7 3E01 LD A,#1H
01D9 217318 LD HL,#MTERQ
01DC 0604 LD B,#4H
01DE 77 MOSTOD: LD (HL).A
01DF 23 INC HL
01 EO 10FC DJNZ MOSTOD
01 E2 3E90 LD Ah#90H
01 E4 D3BF OUT (OBFHJ.A
01 E6 CDA80A CALL CLDB
01 E9 ED56 IM 1
01EB FB El
01 EC 210118 LD HL,#FLAGS
01 EF CBD6 SIT 2.(HL)
01F1 C3AD06 JP NUMTERO

01F4 FB WAIT1: El
01F5 00 WAIT: NOP
01F6 18FD JR WAIT

01F8 F5 KEYB: PUSH AF


01F9 E5 PUSH HL
01 FA 3E40 LD A,#40H
01 FC D3BF OUT (OBFH),A
01FE DBBE IN AC.(OBEH)
0200 210118 LD HL,#FLAGS
0203 CB46 BIT 0,(HL)
0205 2055 JR N2.KCAL
0207 CB56 BIT 2,(HL)
0209 C28D02 JP NZ.KADC
0200 FEOA CP #OAH
020E 3810 JR C,KNUM
0210 DD214000 LD IX,#INTBL
0214 D60A TBL: SUB #OAH
0216 CB27 SLA A
0218 4F LD C,A
0219 0600 LD B,#OH
021 B DD09 ADD IX.BC
021 D C34A03 JP RTBL
0220 4F LD C,A
0221 CB5E BIT 3.(HL)
0223 2009 JR NZ.CLR
0225 3A0018 LD A.(CONTA)
0228 FEOS CP #5H
022A 282A JR Z.PULLR
0220 1806 JR WDR
022E CD5708 CLR: CALL STAG
0231 CDA80A CALL CLDB
0234 DD218800 WDR: LD IX.SHTAB
023B 0600 LD B,#OH
023A DD09 ADD IX.BC
0230 DD7EOO LD A.(lX-tO)
023F D3BE OUT (OBEH).A
A5

0241 010400 LD BC,#4H


0244 E5 PUSH HL
0245 216718 LD HL,#DBUF*4
0248 116618 LD DE,#DBUF+3
0248 EDBO LDIR
024D 326A18 LD (DBUF+7).A
0250 E1 POP HL
0251 2B DEC HL
0252 34 INC (HL)
0253 CD6908 CALL COSG
0256 E1 PULIR: POP HL
0257 F1 POP AF
0258 FB El
0259 C35403 JP RFI
025C FE11 KCAL: CP #11 H
025E 201F JR NZ.NKCAL
0260 CB4E BIT 1.(HL)
0262 2822 JR Z.RKCAL
0264 3E14 LD A,#14H
0266 D37C OUT (7CHJ.A
0268 AF XOR A
0269 77 LD (HL),A
026A C3E604 JP ATDC.F
026D 3E08 RACF: LD A,#8H
026F D37D OUT {7DH),A
0271 3E54 LD A,#54H
0273 D37C OUT (7CH),A
0275 3E14 LD A.#14H
0277 D37C OUT (7CH).A
0279 CD5708 CALL STAG
027C CDA80A CALL CLDB
027F DD215400 NKCAL: LD IX,#WAITO
0283 C34A03 JP RTBL
0286 DD215200 RKCAL: LD IX,#CALFSO
028A C34A03 JP RTBL
028D FE12 KADC: CP #12H
028F 28DC JR Z.RACF
0291 FE11 CP
0293 2820 JR Z.CALADC
0295 CB6E BIT 5,(HL)
0297 2039 JR NZ.TTC
0299 CB7E BIT 7,(HL)
029B 2066 JR NZ.SGDL
029D 23 INC HL
029E CB46 BIT 0.(HL)
02AO 207D JR NZ.SCLE
02A2 CB4E BIT 1,(HL)
02A4 2016 JR NZ.CUMOS
02A6 FEOA CP #OAH
02A8 38AC JR C.PULLR
02AA FEOF CP #QFH
02AC 30A8 JR NC.PULLR
02AE DD215600 LD !X,#PROG
02B2 C31402 JP TBL
02B5 DD217800 CALADO: LD IX,#PROG4
02B9 C34A03 JP RTBL
02BC FE02 CUMOS: CP #2H
02BE 302B JR NC.NTC
02CO 57 LD D.A
02C1 3A6B18 LD A.(SCAN)
02C4 217318 LD HL.tfMTERO
02C7 4F LD C,A
02CB 0600 LD B,#OH
02CA 09 ADD HL.BC
02CB 72 LD (HLJ.D
02CC DD217600 LD ]X,#PROG3
0200 1B78 JR RTBL
02D2 CB76 TTC: BIT 6.{HL)
02D4 2011 JR NZ.TTCO
02D6 FEOS CP
A6

02D8 3011 JR NC.NTC


02DA FEOO CP #OH
02DC 280D JR Z,NTC
02DE 326C18 LD (NTER).A
02E1 DD217000 LD IX.flPROGO
02E5 1863 JR RTBL
02E7 FE04 TTCO: CP #4H
02E9 3806 JR C.TTC1
02EB DD217200 NTC: LD IX,#PROG1
02EF 1859 JR RTBL
02F1 57 TTC1: LD D.A
02F2 3A6B18 LD A.ÍSCAN)
02F5 216D18 LD HL,#TERO
02F8 4F LD C,A
02F9 0600 LD B.SOH
02FB 09 ADD HL.BC
02FC 72 LD (HL),D
02FD DD217400 LD IX,#PROG2
0301 1847 JR RTBL
0303 FEOA SGDL: GP #OAH
0305 30E4 JR NC,NTC
0307 FEOO CP #OH
0309 28EO JR Z.NTC
030B 327118 LD (SEGDL).A
030E CD3908 CALL SNSEGO
0311 CD950A CALL CLEAR
0314 210118 LD HL,#FLAGS
0317 CBBE RES 7.{HL)
0319 DD215000 RCAD: LD IX,#ATDCO
031 D 182B JR RTBL
031F FEOC SCLE: CP flOCH
0321 281 E JR Z.SCLE1
0323 FEOF CP #OFH
0325 20C4 JR NZ.NTC
0327 3EFD LD A,#OFDH
0329 326418 LD (DBUF+1),A
032C 3E8E LD A,#8EH
032E 327218 SOLEO: LD (WSCALEJ.A
0331 326A18 LD (DBUF+7),A
0334 CD1808 CALL NTYTY
0337 CD950A CALL CLEAR
033A 210218 LD HL,#FLAGS+1
033D CB86 RES 0,{HL)
033F 18D8 JR RCAD
0341 3EFE SCLE1: LD A,#QFEH
0343 326418 LD (DBUF+1J.A
0346 3EC6 LD A,#OC6H
0348 18E4 JR SCLEO
034A E1 RTBL: POP HL
034B F1 POP AF
034C DD4600 LD B,(IX+0)
034F DD4E01 LD C,{IX+1}
0352 D1 POP DE
0353 C5 PUSH BC
0354 ED4D RFI: RETÍ

0356 31FF1F ENTRY: LD SP,#1FFFH


0359 3EA3 LD A,#OA3H
035B D3BF OUT (OBFH),A
035D CDF508 CALL ENTER
0360 CDC60E CALL BCDBIN
0363 110618 LD DE,#BN1
0366 211418 LD HL,#TEM
0369 010400 LD BC.ÍMH
036C EDBO LDIR
036E 3EAO LD A,#OAOH
0370 D3BF OUT (OBFHJ.A
0372 210118 LD HL.SFLAGS
0375 CBDE SIT 3,(HL)
0377 C3F401 JP WAIT1

037A 31FF1F SUMA: LD SP,#1FFFH


0370 FB El
037E CDDCOB CALL ÍDEM
0381 CD340B CALL AFP
0384 CDEE08 CALL IDEMO
0387 182B JR S83F

0389 31FF1F RESTA: LD SP,#1FFFH


038C FB El
038D CDDC08 CALL ÍDEM
0390 CD1BOB CALL SFP
0393 CDEE08 CALL IDEMO
0396 181C JR SB3F

0398 31FF1F MULT: LD SP,#1FFFH


039B FB El
039C CDDCOB CALL ÍDEM
039F CDDBOB CALL MFP
03A2 CDEE08 CALL IDEMO
03A5 180D JR SB3F

03A7 31FF1F DIV: LD SP,#1FFFH


03AA FB El
03AB CDDC08 CALL ÍDEM
03AE CD570C CALL DFP
03B1 CDEE08 CALL IDEMO

03B4 210118 SB3F: LD HL,#FLAGS


03B7 CBDE SIT 3,(HL)
03B9 C3F501 JP WAIT

03BC 31FF1F SIGN: LD SP,#1FFFH


03BF 3A0018 LD A,{CONTA)
03C2 FEOO CP #GH
03C4 CAF401 JP 2.WA1T1
03C7 210118 LD HL,#FLAGS
03CA CB5E BIT 3.{HL)
03CC 201F JR NZ.SG2
03CE C662 ADD A,#62H
03DO D3BF OUT (OBFH),A
03D2 F5 PUSH AF
03D3 DBBE IN AC,(OBEH)
03D5 CB77 BIT 6.A
03D7 2004 JR NZ.SGO
03D9 CBF7 SIT 6,A
03DB 1802 JR SG1
03DD CBB7 SGO: RES 6,A
03DF 08 SG1: EX AF.AP
OSEO F1 POP AF
03E1 C620 ADD A,#20H
03E3 D3BF OUT (OBFH),A
03E5 08 EX AF.AF
03E6 D3BE OUT (OBEH).A
03E8 326518 LD (DBUF+2J.A
03EB 184D JR SPF
03ED 3E60 SG2: LD A,#60H
03EF D3BF OUT (OBFH),A
03F1 DBBE IN AC,(OBEH)
03F3 CB77 BIT 6,A
03F5 2004 JR NZ.SG3
03F7 CBF7 SIT 6,A
03F9 1802 JR SG4
03FB CBB7 SG3: RES 6,A
03FD F5 SG4: PUSH AF
03FE 3E80 LD A,#80H
0400 D3BF OUT (OBFH),A
0402 F1 POP AF
0403 D3BE OUT (OBEH),A
0405 326518 LD (DBUF+2J.A
0408 C3F401 JP WA1T1

040B 31FF1F POINT: LD SP,#1FFFH


040E 210118 LD HL,#FLAGS
0411 CB5E BIT 3.(HL)
0413 202F JR NZ.OPEF
0415 CB66 BIT 4,(HL)
0417 C2F401 JP NZ.WAIT1
041A 3A0018 LD A.(CONTA)
041D FEOO CP #OH
041F 2829 JR Z.FRSP
0421 D601 SUB #1H
0423 F5 PUSH AF
0424 C660 ADD A,#60H
0426 D3BF OUT (OBFH).A
0428 DBBE IN AC,(OBEHJ
042A CBBF RES 7,A
042C 08 EX AF.AF'
042D Fl POP AF
042E C680 ADD A,#8GH
0430 D3BF OUT (OBFH).A
0432 08 EX AF.AF
0433 D3BE OUT (OBEH),A
0435 326A1S LD (DBUF+7),A
0438 CBE6 SIT 4,{HL)
043A 3A0018 SPF: LD A,(CONTA)
043D C690 ADD A,#90H
043F D3BF OUT (OBFH),A
0441 C3F401 JP WAIT1
0444 CD5708 OPEF: CALL STAG
0447 CDA80A CALL CLDB
044A 3E40 FRSP: LD A,#40H
044C D3BE OUT (OBEH).A
044E CBE6 SIT 4,(HL)
0450 2B DEC HL
0451 34 INC (HL)
0452 326A1B LD (DBUF+7),A
0455 C3F401 JP WAIT1

0458 31FF1F CALO: LD SP,#1FFFH


045B 3E04 LD A,#4H
045D D37C OUT (7CHJ.A
045F AF XOR A
0460 D37D OUT [7DHJ.A
0462 CD950A CALL CLEAR
0465 219200 LD HL.#PDCAL
0468 0606 LD B,#6H
046A 1690 LD
046C CDAOOA CALL DISPY
046F 210118 LD
0472 CBC6 SIT 0.{HL)
0474 C3F401 JP WA1T1

0477 31FF1F MOSTRAR: LD SP.^IFFFH


047A 210218 LD HL,#FLAGS+1
047D CBCE SIT 1,(HL)
047F FD216518 LD IY.^DBUF+2
0483 FD360087 LD (IY+0),#87H
0487 F03602FF LD (IY+2).#OFFH
048B FD3604FF LD (lY-*-4).#OFFH
A9

048F AF XOR A
0490 326B18 LO (SCAN).A
0493 218800 MOSTRAR1: LO HL,#HTAB
0496 3A6B18 LD A,(SCAN)
0499 F5 PUSH AF
049A 4F LD C,A
049B 0600 LD B,#OH
049D 09 ADD HL.BC
049E 7E LD A.(HL)
049F CBBF RES 7,A
04A1 FD7701 LD (IY+1),A
04A4 216D18 LD HL.OTERO
04A7 F1 POP AF
04AB 4F LD C,A
04A9 09 ADD HL.BC
04AA 4E LD C,(HL)
04AB 21A400 LD HL,#TYPEK
04AE 09 ADD HL.BC
04AF 7E LD A,(HL)
04BO FD7703 LD {IY+3),A
04B3 FD36052C LD (IY+5},#2CH
04B7 FB Ei
04B8 C3BE06 JP NUMTER1

04BB 31FF1F MOSTRARO: LD SP,#1FFFH


04BE 3A6B18 LD A,(SCAN)
04G1 217318 LD HL,#MTERO
04C4 4F LD C,A
04C5 0600 LD B,#OH
04C7 09 AOO HL.BC
04C8 7E LD A,(HL)
04C9 218800 LD HL.ífHTAB
04CC 4F LD C,A
04CD 09 ADD HL.BC
04CE 7E LD A,(HL)
04CF FD7705 LD (1Y+5J.A
04D2 CD1808 CALL NTYTY
04D5 3A6C18 LD A,(NTER)
04D8 3D DEC A
04D9 216B18 LD HL,#SCAN
04DC BE CP (HL)
04DD CAE806 JP Z.CONFIG3
04EO 34 INC (HL)
04E1 18BO JR MOSTRAR1

04E3 31FF1F ATDC; LD SP,#1FFFH


04E6 210118 ATDC_F: LD HL,#FLAGS
04E9 CBD6 SIT 2,(HL)
04EB 217318 LD HL,#MTERO
04EE 0600 LD B,#OH
04FO 3A6C18 LD A.(NTER)
04F3 4F LD C,A
04F4 3E01 LD A.#1H
04F6 EDB1 CPIR
04F8 2815 JR Z.ATQM
04FA CD950A CALL CLEAR
04FD 21BDOO LD HL.^CERROR
0500 0605 LD B,#5H
0502 1690 LD
0504 CDAOOA CALL DÍSPY
0507 0601 LD B,#1H
0509 CD7D08 CALL DELAY
050C C37704 JP MOSTRAR
050F DD217318 ATQM: LD IX.ííMTERO
0513 216B18 LD HL,#SCAN
0516 3610 LD (HL),#10H
0518 DD7EOO ATQM1: LD A,(lX+0)
051 B FEOO CP
A10

051D 2005 JR NZ.ATQMO


051F 34 INC (HL)
0520 DD23 INC IX
0522 18F4 JR ATQM1
0524 FB ATQMO: El
0525 3A7218 LD A,(WSCALE)
0528 FE8E CP #8EH
052A 2004 JR NZ.LSCT
052C 3EFD LD A,#QFDH
052E 1802 JR LSCTO
0530 3EFE LSCT: LD A,#OFEH
0532 326418 LSCTO: LD (DBUF+1),A
0535 3A6B18 LD A,(SCAN)
0538 D37D OUT (7DH},A
053A 3E54 LD A.#54H
053C D37C OUT (7CH),A
053E 3E14 LD A,#14H
0540 D37C OUT (7CH),A
0542 CD950A CALL CLEAR
0545 21C200 LD HL,#THERS
0548 0605 LD B,#5H
054A 1690 LD D,#90H
054C CDAOOA CALL DISPY
054F 0601 LD B,#1H
0551 CD7D08 CALL DEUY
0554 3A7118 AGAIN: LD A.(SEGDL)
0557 CB27 SLA A
0559 47 LD B,A
055A C5 PUSH BC
055B DB7C AGAINO: IN AC,(7CH)
055D CB7F BIT 7.A
055F 282D JR Z.TCONC
0561 3A6B18 LD A.(SCAN)
0564 218800 LD HL,#HTAB
0567 D610 SUB #10H
0569 0600 LD B,#OH
056B 4F LD C,A
056C 09 ADD HL.BC
056D CD950A CALL CLEAR
0570 3A6418 LD A,(DBUF+1)
0573 5F LD E,A
0574 7E LD A,(HL)
0575 CBBF RES 7.A
0577 21B400 LD HL,#TOPEN
057A 0605 LD B,#5H
057C 1690 LD D,#90H
057E OEBF LD C,#OBFH
0580 ED51 OUT (C),D
0582 OD DEC C
0583 ED59 OUT (C),E
0585 EDA3 OUTI
0587 ED79 OUT (C).A
0589 EDB3 OTIR
058B C32F06 JP TKL
058E 3A6B18 TCONC: LD A.(SCAN)
0591 D610 SUB
0593 216D18 LD HL,#T£RO
0596 0600 LD B.SOH
0598 4F LD C,A
0599 09 ADD HL.BC
059A 7E LD A,(HL)
0598 DD217AOO LD IX,#TERPLA
059F CB27 SLA A
05A1 4F LD C,A
05A2 DD09 ADD IX.BC
05A4 DDE5 PUSH IX
05A6 F3 DI
05A7 3EA3 LD A,#OA3H
05A9 D3BF OUT (OBFH),A
05AB CDB40A CALL ADCONV
A11

05AE 3EAO LD A,#OAOH


05BO D3BF OUT (OBFH),A
05B2 FB El
05B3 0606 LD B,#6H
05B5 AF XOR A
05B6 CB13 RL E
05B8 CB12 RL D
05BA 10F9 DJNZ NBIN
05BC 060A LD B,#OAH
05BE OE88 LD C,#88H
05CO CB7A CONV: BIT 7.D
05C2 200C JR NZ.CONVO
05C4 AF XOR A
05C5 CB13 RL E
05C7 CB12 RL D
05C9 OD DEC C
05CA 10F4 DJNZ CONV
05CC OEOO LD C,#OH
05CE 180A JR CONV2
05DO CB39 CONVO: SRL C
05D2 3004 JR NC.CONV1
05D4 CBFA SIT 7.D
05D6 1802 JR CONV2
05D8 CBBA CONV1: RES 7.D
05DA DD210618 CONV2: LD IX,#BN1
05DE DD7100 LD (IX+OJ.C
05E1 DD7201 LD (IX+1J.D
05E4 DD7302 LD (IX+2J.E
05E7 DD360300 LD (IX+3},#GH
05EB 110D18 LD DE,#BN2
OSEE 216F01 LD HL,#FCRR
05F1 010400 LD BC,#4H
05F4 EDBO LDIR
05F6 CDD80B CALL MFP
05F9 DDE1 POP IX
05FB DD6600 LD H,(lX+0)
05FE DD6E01 LD L.0X+1)
0601 46 LD B.ÍHLJ
0602 23 INC HL
0603 CD8B08 CALL EVPOL
0606 3A7218 LD A,(WSCALE)
0609 FE8E CP #8EH
060B 201C JR NZ.CENTG
060D 110D18 LD DE,#BN2
0610 217301 LD HL.tfFRHO
0613 010400 LD BC,#4H
0616 EDBO LDIR
0618 CDD80B CALL MFP
061 B 110D1B LD DE.SBN2
061E 217701 LD HL,#FRH1
0621 010400 LD BC,#4H
0624 EDBO LDIR
0626 CD340B CALL AFP
0629 CDF80C CENTG: CALL BBCD
062C CDD209 CALL DISTP
062F C1 TKL: POP BC
0630 1045 DJNZ RM1S
0632 FD216C18 LD lY.ííNTER
0636 216B18 LD HUffSCAN
0639 34 INC (HL)
063A 7E TKLO: LD A.(HL)
063B D610 SUB #10H
063D FDBEOO CP (lY+0)
0640 2002 JR NZ.TKL1
0642 3610 LD (HL),#10H
0644 7E TKL1: LD A,(HL)
0645 4F LD C,A
0646 08 EX AF.AF1
0647 79 LD A.C
0648 D610 SUB #10H
064A 4F LD C.A
06 4B 0600 LD B,#OH
064D DD217318 LD !X,#MTERO
0651 DD09 ADD IX.BC
0653 D07EOO LD A,{IX+0)
0656 FEOO CP #OH
0658 2819 JR Z.TKL2
065A 08 EX AF.AF1
065B D37D OUT (7DHJ.A
065D 3E54 LD A,#54H
065F D37C OUT (7CHJ.A
0661 3E14 LD A,#14H
0663 D37C OUT (7CH},A
0665 0601 LD B.#1H
0667 110000 LD DE.ÍÍOH
066A 21FF7F LD HL,#7FFFH
066D CD8308 CALL DELYO
0670 C35405 JP AGAIN
0673 08 TKL2: EX AF.AP
vf- 0674 34 INC (HL)
0675 18C3 JR TKLO
0677 C5 RM1S: PUSH BC
067B 0601 LD B,#1H
067A 110000 LD DE,#OH
067D 21FF7F LD HL,#7FFFH
0680 CD8308 CALL DELYO
0683 C35B05 JP AGAINO

0686 31FF1F CALFS: LD SP,#1FFFH


0689 3E07 LD A,#7H
068B D37C OUT (7CH),A
068D 3EFF LD A,#OFFH
068F D37D OUT (7DH),A
0691 CD950A CALL CLEAR
0694 219800 LD HL,#POCALO
0697 0606 LD B,#6H
0699 1690 LD D,#90H
069B CDAOOA CALL DISPY
069E 210118 LD HL.flFLAGS
06A1 CBCE SIT l.(HL)
06A3 C3F401 JP WAIT1

G6A6 31FF1F NUMTER: LD


06A9 FB El
06AA 210118 LD HL,#FLAGS
06AD CBEE NUMTERO: SIT 5.1HL)
06AF FD216518 LD IY,ííDBUFf2
06B3 219EOO LD HL,#TNUM
06B6 116518 LD DE.ííDBUF+2
06B9 010600 LD BC,#6H
06BC EDBO LDIR
06BE 1EFF NUMTER1: LD
06CO CD950A NUMTER2: CALL CLEAR
06C3 216518 LD HL.ffiBUF+2
06C6 0606 LD B.ÍÍ6H
06C8 1690 LD D,#90H
06CA CDAOOA CALL DISPY
06CD 4B LD C,E
06CE 0601 LD B.#1H
06DO 110000 LD
06D3 21FF3F LD HL,#3FFFH
06D6 CD8308 CALL DELYO
06D9 FD5E05 LD E.llY+5)
06DC FD7105 LD (1Y+5J.C
06DF 18DF JR NUMTER2

06E1 31FF1F CONFIG: LD SP,#1FFFH


A13

06E4 FD216518 LD lY,#D8UF+2


06E8 219EOO CONFIG3: LD HL,#TMUM
06EB 116518 LD DE,#D8UF*2
06EE 010500 LD BC,#5H
06F1 EDBO LDIR
06F3 3A6C18 LD A,(NTER)
06F6 218800 LD HL,#HTAB
06F9 0600 LD B,#OH
06FB 4F LD C,A
06FC 09 ADD HL.BC
06FD 7E LD A,{HL)
06FE 12 LD (DEJ.A
06FF CD1808 CALL NTYTY
0702 AF XOR A
0703 326B18 LD (SCAN),A
0706 FD3600S7 LD (IY+0),#87H
070A FD3602FF LD (IY+2).#OFFH
070E FD3604FF LD (IY+4),#OFFH
0712 DD216D18 LD 1X,#TERO
0716 3A6B18 CONFIGO: LD A,(SCAN)
0719 218800 LD HL,#HTAB
071C 0600 LD B,#OH
071 E 4F LD C,A
071F 09 ADD HL.BC
0720 7E LD A.(HL)
0721 CBBF RES 7,A
0723 FD7701 LD (IY+1J.A
0726 217318 LD HUMERO
0729 09 ADD HL.BC
072a 7E LD A.(HL)
072B 218800 LD HL,#HTAB
072E 4F LD C,A
072F 09 ADD HL.BC
0730 7E LD A,(HL)
0731 FD7705 LD {IY+5},A
0734 DD4EOO LD C,(JX+0)
0737 21A400 LD HL,#TYPEK
073A 09 ADD HL.BC
0738 7E LD A,(HL)
073C FD7703 LD {IY+3),A
073F CD1808 CALL NTYTY
0742 3A6C18 LD A,(NTER)
0745 3D DEC A
0746 216B18 LD HL,#SCAN
0749 BE CP (HL)
074A 2805 JR Z.CONFIG1
074C 34 INC (HL)
074D DD23 INC IX
074F 18C5 JR CONFIGO
0751 210118 CONFIG1: LD HL,#FLAGS
0754 CB76 BIT 6,(HL)
0756 2011 JR NZ.CONFIG2
0758 23 INC HL
0759 CB4E BIT 1,(HL)
075B 200C JR NZ.CONFIG2
075D CD2B08 CALL SNSEG
0760 CD4808 CALL SSCALE
0763 326A18 LD (DBUF+7),A
0766 CD1808 CALL NTYTY
0769 CD950A CONF1G2: CALL OLEAR
076C 210118 LD HL,#FLAGS
076F CBAE RES 5.(HL)
0771 CBB6 RES 6,(HL)
0773 23 INC HL
0774 CB8E RES
0776 FB El
0777 C3E604 JP ATDC..F

077A 31FF1F SECÓNOS: LD SP,#1FFFH


A14

077D FD216518 LD IY,#DBUF-i-2


0781 FB El
0782 210118 LD HL,#FLAGS
0785 CBFE SIT 7,(HL)
0787 21A800 LD HL,#NSEG
078A 116518 LD DE,#DBUF+2
078D 010600 LD BC,#6H
0790 EDBO LDIR
0792 C3BE06 JP NUMTER1

0795 31FF1F SCALE: LD SP,#1FFFH


0798 FD216518 LD IY,#DBUF+2
079C FB El
079D 210218 LD HL,#FLAGS+1
07AO CBC6 SIT 0,(HL}
07A2 CD4B08 CALL SSCALEO
07A5 C3BE06 JP NUMTER1

07A8 31FF1F LD SP,#1FFFH


07AB 3A6C18 LD A,(NTER)
07AE 210118 LD HL,#FLAGS
07B1 CBF6 SIT 6,(HL)
07B3 218800 LD HL,#HTAB
07B6 0600 LD B,#QH
07B8 4F LD C.A
0789 09 ADD HL.BC
07BA 7E LD A,(HL)
07BB FD7705 LD [IY+5J.A
07BE CD1808 CALL NTYTY
07C1 AF XOR A
07C2 326B18 LD (SCAN),A
07C5 FD360087 LD {IY+0),#87H
07C9 FD360311 LD (IY+3),#11H
07CD 218800 TYPEINO: LD HL,#HTAB
07DO 3A6B18 LD A,(SCAN)
0703 4F LD C,A
07D4 0600 LD B,#OH
07D6 09 ADD HL.BC
07D7 7E LD A,(HL)
07D8 CBBF RES 7.A
07DA FD7701 LD (IY+1J.A
07DD FD36052C LD (IY+5),#2CH
07E1 FB El
07E2 C3BE06 JP NUMTER1

07E5 31FF1F BADTY: LD SP,#1FFFH


07E8 FB El
07E9 FD36052C LD
07ED C3BE06 JP NUMTER1

07FO 31FF1F TYPEIN: LD SP,#1FFFH


07F3 3A6B18 LD A.ÍSCANJ
07F6 216D18 LO HL,#TERO
07F9 0600 LD B,#OH
07FB 4F LD C.A
07FC 09 ADD HL.BC
07FD 7E LD A,(HL)
07FE 21A400 LD HL,#TYPEK
0801 4F LD C,A
0802 09 ADD HL.BC
0803 7E LD A,(HL)
0804 FD7705 LD (IYf-5),A
0807 CD1808 CALL NTYTY
080A 3A6C18 LD A,(NTER)
080D 3D DEC A
080E 216B18 LD
A15

0811 BE CP (HL)
0812 CAEB06 JP Z.CONF1G3
0815 34 INC {HL)
0816 18B5 JR TYPEINO

CD950A NTYTY: CALL CLEAR


216518 LD HL,#DBUF+2
081E 0606 LD B,#6H
0820 1690 LD D,#90H
0822 CDAOOA CALL DISPY
0825 0601 LD B.#1H
0827 CD7D08 CALL DELAY
082A 09 RET

21A800 SNSEG: LD HL,#NSEG


082E 116518 LD DE,#DBUF+2
0831 010600 LD BC,#6H
0834 EDBO LDIR
0836 3A7118 LD A.(SEGDL)
0839 218800 SNSEGO: LD HL,#HTAB
083C 0600 LD B,#OH
083E 4F LD C,A
083F 09 ADD HL.BC
7E LD A,(HL)
0841 326A18 LD (DBUF+AA
CD1808 CALL NTYTY
0847 C9 RET

3A7218 SSCALE: LD A,(WSCALE)


21AEOO SSCALEO: LD HL,#SCALEP
084E 116518 LD ÜE./ÍDBUF-Í-2
0851 010600 LD BC,#6H
0854 EDBO LDIR
0856 C9 RET

0857 CD950A STAG: CALL CLEAR


085A AF XOR A
320018 LD (CONTA),A
085E 320118 LD (FLAGS).A
0861 320218 LD (FLAGS+1J.A
3E90 LD A,#90H
D3BF OUT (OBFHJ.A
C9 RET

3A0018 COSG: LD A.(CONTA)


086C C682 ADD A,#82H
086E D3BF OUT (OBFH),A
0870 3A6518 LD A,(DBUF-f2)
0873 D3BE OUT {OBEHJ.A
0875 3A0018 LD A.ÍCONTA)
C690 ADD A,#90H
087A D3BF OUT (OBFH),A
OS7C C9 RET

087D 110000 DELAY: LD DE,#OH


21FFFF DELY: LD HL,#OFFFFH
2B DELYO: DEC HL
ED5A ADC HL.DE
20FB JR NZ.DELYO
10F6 DJNZ DELY
C9 RET
A16

088B C5 EVPOL: PUSH BC


088C 110D18 LD DE,#BN2
08BF 010400 LD BC,#4H
0892 EDBO LDIR
0894 E5 PUSH HL
OB95 CD570C CALL DFP
0898 E1 POP HL
0899 110D18 LD DE,#8N2
089C 010400 LD BC,#4H
089F EDBO LDIR
08A1 E5 PUSH HL
08A2 CD1BOB CALL SFP
08A5 115E18 LD DE,#X
08A8 210618 LD HL,#BN1
08AB 010400 LD BC,#4H
08AE EDBO LDIR
08BO 110618 LD DE,#BN1
08B3 E1 POP HL
08B4 010400 LD BC,#4H
08B7 EDBO LDIR
08B9 C1 POP BC
08BA C5 EVO: PUSH BC
08BB E5 PUSH HL
08BC 110D1B LD DE,#BN2
08BF 215E18 LD HL,#X
08C2 010400 LD BC,#4H
08C5 EDBO LDIR
08C7 CDD80B CALL MFP
08CA 110D18 LD DE,#BN2
08CD E1 POP HL
08CE 010400 LD BC,#4H
08D1 EDBO LDIR
08D3 E5 PUSH HL
08D4 CD340B CALL AFP
08D7 E1 POP HL
08D8 Cl POP BC
OBD9 10DF DJNZ EVO
08DB C9 RET

08DC CDF508 ÍDEM: CALL ENTER


08DF CDC60E CALL BCDBIN
08E2 110D18 LD DE,#BN2
08E5 211418 LD HL,#TEM
OSES 010400 LD BC.#4H
08EB EDBO LDIR
08ED C9 RET

08EE CDF80C IDEMO: CALL BBCD


08F1 CD7B09 CALL C7SEG
08F4 C9 RET

08F5 DD210518 EMTER: LD IX,#BCD+2


08F9 218800 LD HL,#HTAB
OBFC FD216A18 LD IY,#DBUF+7
0900 OEOO LD C,#OH
0902 1603 LD D,#3H
0904 1E02 LD E,#2H
0906 FD7EOO ETO: LD A,{IY+Q)
0909 FEFF CP #OFFH
2833 JR Z.ET5
090D CBFF SIT 7,A
090F BE ET1: CP (HL)
0910 2B04 JR Z.ET2
0912 23 INC HL
0913 OC IMG C
0914 18F9 JR ET1
0916 3E01 ET2: LD A,#1H
0918 BB CP E
0919 2810 JR Z.ET4
091 B DD7100 LD (IX+QJ.C
091 E BA CP D
091F 283B JR Z.ET9
0921 1D DEC E
0922 OEOO ET3: LD C,#OH
0924 218800 LD HL,#HTAB
0927 FD2B DEC IY
0929 18DB JR ETO
092B 79 ET4: LD A.C
092C CB27 SU A
092E CB27 SLA A
0930 CB27 SLA A
0932 CB27 SLA A
0934 DD8600 ADD A,{IX+G}
0937 DD7700 LD (IX+GJ.A
093A 15 DEC D
093B 1C INC E
093C DD2B DEC IX
093E 18E2 JR ET3
0940 AF ET5: XOR A
0941 BA CP D
0942 2810 JR Z.ET8
0944 30 INC A
0945 BB CP E
0946 2003 JR NZ.ET6
0948 10 INC E
0949 1804 JR ET7
094B DD360000 ET6: LD (IX+0},#QH
094F 15 ET7: DEC D
0950 DD2B DEC IX
0952 18EC JR ET5
0954 FD216518 ET8: LD lY,#DBUF+2
0958 DD23 INC IX
095A 1802 JR ETA
095C FD2B ET9: DEC IY
095E FD7EOO ETA: LD A,{IY*0)
0961 FEFF CP #OFFH
0963 2804 JR Z.ETB
0965 DDCBOOFE SIT 7,{IX+0)
0969 0604 ETB: LD B,#4H
096B OE02 LD C,#2H
096D FD23 INC IY
096F FDCB007E ETC: BIT 7,(lY+0)
0973 2805 JR Z.ETD
0975 FD23 INC IY
0977 OC INC C
0978 10F5 DJNZ ETC
097A C9 ETD: RET

097B 211A18 C7SEG: LD HL,#BCDE


097E FD216518 LD lY.#DBUF+2
0982 CB7E BIT 7.IHL)
2806 JR Z,C70
FD3600BF LD {IY+0),#OBFH
098A 1804 JR C71
098C FD3600FF C70: LD (IY+0),#QFFH
0990 FD23 C71: INC IY
0992 OE03 LD C,#3H
0994 0601 LD B,#1H
0996 DD218BOO C72: LD IX,#HTAB
099A 3EOF LD A,#GFH
099C A6 AND (HL)
099D 2805 C73: JR Z.C74
099F 3D DEC A
09AO DD23 INC IX
09A2 18F9 JR C73
09A4 DD7EOO C74: LD A,(IX+0)
09A7 FD7700 LD (IY+Q},A
09AA FD23 INC 1Y
09AC 1006 DJNZ C75
09AE OD DEC C
09AF JR Z.C76
09B1 0602 LD B,#2H
09B3 23 INC HL
7E C75: LD A,{HL)
09B5 ED67 RRDA
09B7 18DD JR C72
09B9 4B C76: LD C,E
09BA FD216418 LD lY.flDBUF+l
09BE FD09 ADD IY.BC
09CO FDCBOOBE RES 7,(IY+0)
09C4 CD950A CALL CLEAR
09C7 216518 LD HL.SDBUF+2
09CA 0606 LD B,#6H
09CC 1690 LD D,#9GH
09CE CDAOOA CALL DISPY
09D1 C9 RET

09D2 FD216518 DISTP: LD IY,#D8UF+2


09D6 FD360087 LD (IY+0)1#87H
09DA FD23 INC IY
09DC DD218800 LD IX,#HTAB
09EO 3A6B18 LD A,(SCAN)
09E3 D610 SUB #10H
09E5 2805 DTO: JR Z.DT1
09E7 3D DEC A
09E8 DD23 INC IX
09EA 18F9 JR DTO
09EC DD7EOO DT1: LD A.(IX+0)
09EF CBBF RES 7.A
09F1 FD7700 LD (IY*0),A
09F4 FD23 INC IY
09F6 211A18 LD HL,#BCDE
09F9 CB7E BIT 7,{HL)
09FB 207F JR NZ.DTJ
09FD 3E06 LD A,#6H
09FF 93 SUB E
OAOO 280F JR Z.DT4
OA02 4F LD C.A
OA03 211A1B DT2: LD HL.ÍÍBCDE
OA06 0604 LD B,#4H
OA08 AF XOR A
OA09 ED67 DT3: RRDA
OAOB 23 INC HL
OAOC 10FB DJNZ DT3
OAOE OD DEC C
OAOF 20F2 JR NZ.DT2
OA11 3A1D18 DT4: LD A,(BCDF)
OA14 E6FO AND #GFOH
OA16 D650 SUB #50H
OA18 2802 JR Z.DT5
OA1A 3803 JR C.DT6
OA1C CD8C12 DT5: CALL ROUBCD
OA1F 211B18 DT6: LD HL,#BCDE+1
OA22 OE02 LD C.ÍÍ2H
OA24 41 LD B.C
OA25 3EFO DT7: LD A,#OFOH
OA27 A6 DT8: AND (HL)
OA28 FEOO CP #OH
OA2A 201 C JR NZ.DTB
OA2C FD3600FF LD
OA30 FD23 INC IY
OA32 1008 DJNZ DT9
OA34 OD DEC C
OA35 2809 JR Z.DTA
OA37 0602 LD B.S2H
OA39 23 INC HL
OA3A 18E9 JR DT7
OA3C 3EOF DT9: LD A,#QFH
OA3E 18E7 JR DT8
OA40 FD2B DTA: DEC IY
OA42 FD3600CO LD (lY-KpOCOH
OA46 183F JR DTI
57 DTB: LD 0,A
OA49 3E02 LD A,#2H
88 CP B
OA4C 7A LD A,D
OA4D 2008 JR NZ.DTD
OA4F CB3F DTC: SRL A
OA51 CB3F SRL A
OA53 CB3F SRL A
OA55 CB3F SRL A
OA57 DD218800 DTD: LD IX,#HTAB
OA5B 2805 DTE: JR Z.DTF
OA5D 3D DEC A
OA5E DD23 INC IX
OA60 18F9 JR DTE
OA62 D07EOO DTF: LD A,(IX+OJ
OA65 FD7700 LD (IY+QJ.A
FD23 INC IY
OA6A 100B DJNZ DTG
OA6C OD DEC C
OA6D 2818 JR Z.DTI
OA6F 0602 LD B,#2H
OA71 23 INC HL
OA72 3EFO DTH: LD A.tfQFOH
OA74 A6 AND {HL)
OA75 1808 JR DTC
OA77 7E DTG: LD A,(HL)
OA7B ED67 RRDA
OA7A 18F6 JR DTH
OA7C 116718 DTJ: LD DE.SDBUF+4
OA7F 21B900 LD HL,#TNEG
OA82 010400 LD BC,#4H
OA85 EDBO LDIR
OA87 CD950A DTI: CALL CLEAR
OA8A 216418 LD HL,#DBUFf1
OA8D 0607 LD
OA8F 1690 LD D,#90H
OA91 CDAOOA CALL DISPY
OA94 C9 RET

OA95 3ECD CLEAR: LD A.tfOCDH


OA97 D3BF OUT (QBFH),A
OA99 DBBF DYABLE: IN AC.(OBFH)
OA9B CB7F BIT 7,A
OA9D 20FA JR NZ.DYABLE
OA9F C9 RET

OMO OEBF DISPY: LD C,#OBFH


OM2 ED51 OUT CJ.D
OM4 OD DEC C
OAA5 EDB3 OTIR
OAA7 C9 RET

OAA8 3EFF CLDB: LD A,#OFFH


OAM 0606 LD B,#6H
OAAC 116518 LD DE,#DBUF+2
OAAF 12 CLDBO: LD (DEJ.A
OABO 13 INC DE
OAB1 10FC DJNZ CLDBO
OAB3 C9 RET
OAB4 060A ADCONV: LD B,#OAH
OAB6 OE7D LD C,#7DH
OAB8 210004 LD HL,#400H
OABB DD215D18 LD IX,#TEMADC
OABF DD7400 LD (IX+OJ.H
OAC2 110000 LD DE,#QH
OAC5 ED69 OUT (C),L
OAC7 OD DEC C
OAC8 AF XOR A
OAC9 DD6600 MSBC: LD H,(IX+0)
OACC CB1C RR H
OACE 3816 JR C.ENDH
GADO DD7400 LD (IX+0),H
OAD3 7C LD A.H
OAD4 B2 OR D
OAD5 67 LD H,A
OAD6 3E03 LD A,#3H
OAD8 A4 AMD H
OAD9 C620 ADO A,#2GH
OADB ED79 OUT (C).A
OADD ED78 IN A.(C)
OADF CB5F BIT 3,A
QAE1 2823 JR Z.DECB
OAE3 54 LD D,H
OAE4 1820 JR DECB
OAEB 3E03 ENDH: LD A,#3H
OAEB A2 AND D
OAE9 C620 ADD A,#2QH
OAEB ED79 OUT (C).A
OAED 37 SCF
OAEE 1803 JR SHIFTL
GAFO DD6EOO LSBC: LD L,(IX+G)
OAF3 CB1D SHIFTL: RR L
OAF5 DD7500 LD (IX+0),L
OAF8 7D LD A,L
OAF9 B3 OR E
GAFA 6F LD L,A
OAFB OC INC C
OAFC ED79 OUT (C),A
OAFE OD DEC C
OAFF ED78 IN A,(C)
OB01 CB5F BIT 3,A
OB03 2801 JR Z.DECB
OBQ5 5D LD E,L
OB06 1002 DECB: DJNZ ISB8
OB08 180C JR DISCON
OBOA 3E08 ISB8: LD A,#8H
OBOC B8 CP
OBOD 37 SCF
OBOE 3F CCF
OBOF 28BS JR Z.MSBC
OB11 FAC90A JP M.MSBC
OB14 18DA JR LSBC
OB16 3E14 DISCON: LD A,#14H
OB18 ED79 OUT (C).A
OB1A C9 RET

OB1B FD210D18 SFP: LD IY,#BN2


OB1F FDCB007E BIT 7,(lY+0)
OB23 2006 JR N2.CHS
OB25 FDCBOOFE SIT 7,(IY+0)
OB29 1804 JR SFO
OB2B FDCBOOBE CHS: RES 7,{IY*0)
OB2F CD9110 SFO: CALL UNO
OB32 1803 JR FPO
OB34 CD8D10 AFP: CALL UNP
OB37 210A18 FPO: LD HL,#8N1+4
OB3A 0603 LD B,#3H
OB3C CDC610 CALL CLN
OB3F 211116 LD HL,#BN2+4
OB42 0603 LD B,#3H
OB44 CDC610 CALL CLN
OB47 CDCC10 CALL CFP
OB4A DD7EOO LD A.(lX+0)
OB4D FD9600 SUB (IY+Q)
OB50 2810 JR Z.AOS
OB52 47 LD B.A
OB53 061 8 SUB
OB55 303E JR NC.EOV
OB57 210E18 EQE: LD HL.SBN2+1
OB5A AF XOR A
OB5B 1606 LD D,#6H
OB5D CD1011 CALL SH1
OB60 10F5 DJNZ EQE
OB62 F1 AOS: POP AF
OB63 C1 POP BC
OB64 A8 XOR B
OB65 C5 PUSH BC
OB66 110C18 LD DE,#BN1+6
OB69 211318 LD HL.W2+6
OB6C 0606 LD B,#6H
OB6E CB7F BIT 7,A
OB70 2010 JR NZ.SUB
OB72 CD1711 CALL RAD
OB75 3019 JR NC.FP1
OB77 210618 LD HL,#BN1
OB7A 110106 LD DE,#601H
OB7D CDOB11 CALL SHF
OB80 1852 JR FP2
OB82 CD2011 SUB: CALL RSU
OB85 210718 LD HL,#BN1+1
OB88 0606 LD B,#6H
OB8A CD2911 CALL CMO
OB8D CD3611 CALL ÑOR
OB90 CD5D11 FP1: CALL RON
OB93 1842 JR FP3
OB95 3E30 EOV: LD
OB97 90 SUB B
OB98 3834 JR C.PK
210E18 LD HL.ÍÍBN2+1
OB9A
OB9D 111118 LD DE,#BN2+4
OBAO 78 LD A,B
OBA1 08 EX AF.AF1
OBA2 010300 LD BC,#3H
OBA5 EDBO LDIR
OBA7 210E18 LD HL,#BN2+1
OBAA 0603 LD B,#3H
OBAC CDC610 CALL CLN
OBAF 08 EX AF.AF
OBBO D618 SUB
OBB2 28AE JR Z.AOS
noo
Ubb4A nn
Uo £01: EX AF.AF1
OBB5 211118 LD
OBB8 AF XOR A
OBB9 1603 LD D.ÍÍ3H
OBBB CD1011 CALL SH1
OBBE 3008 JR NC.E02
OBCO 211318 LD
OBC3 0603 LD
OBC5 CDAF11 CALL AOV
OBC8 08 E02: EX AF.AF'
OBC9 3D DEC A
OBCA 2896 JR Z.AOS
OBCC 18E6 JR E01
OBCE F1 PK: POP AF
OBCF CD8B11 CALL PAK
OBD2 1803 JR FP3
OBD4 CD5611 FP2: CALL GEX
OBD7 C9 FP3: RET

OBD8 CD8D10 MFP: CALL UNP


OBDB F1 POP AF
Cl POP BC
OBDC
OBDD A8 XOR B
OBOE F5 PUSH AF
OBDF DD7EOO LO A,(IX+0)
FD8600 ADD A,{IY+0}
OBE2
3804 JR C.MFO
OBE5
2600 LD H,#OH
OBE7
OBE9 1802 JR MF1
OBEB 2601 MFO: LD H.#1H
OBED 6F MF1: LD L,A
OBEE AF XOR A
OBEF 017EOO LD BC,#7EH
OBF2 ED42 SBC HL.BC
3858 JR C.MF2
OBF4
OBF6 CB44 BIT 0,H
OBF8 2059 JR NZ.MF5
DD7500 LD (IX+0),L
OBFA
OBFD 210718 LD HL.#BN1+1
OCOO E5 PUSH HL
OC01 110A18 LD DE,#BNl+4
OC04 010300 LD BC,#3H
OC07 EDBO LDIR
OC09 El POP HL
OCOA 0603 LD B.#3H
OCOC CDC610 CALL CLN
211418 LD HL,#TEM
OCOF
OC12 0606 LD B,#6H
OC14 CDC610 CALL CLN
OC17 0618 LD B,#18H
OC19 C5 MF3: PUSH BC
OCIA 210E18 LD HL,#BN2+1
OC1D 1603 LD D,#3H
OC1F AF XOR A
OC20 CD1011 CALL SH1
OC23 300B JR NC.MF4
OC25 111918 LD DE.ífTEM+5
OC26 210C18 LD HL,«1+6
OC2B 0606 LD B,#6H
OC2D CD1711 CALL RAD
OC30 210C18 MF4: LD HL.W1+6
OC33 0606 LD B,#6H
OC35 CD4F11 CALL SL
OC38 C1 POP BC
OC39 10DE DJNZ MF3
OC3B 110718 LD
OC3E 211418 LD HL.fTEM
OC41 010600 LD BC,#6H
OC44 EDBO LDIR
OC45 CD3611 CALL ÑOR
OC49 CD5611 CALL GEX
OC4C 1808 JR MF6
OC4E CD9211 MF2: CALL PA3
1803 JR MF6
OC51
OC53 CD7D11 MF5: CALL ERR
OC56 C9 MF6: RET

OC57 CD8D10 DFP: CALL UNP


OC5A F1 POP AF
OC5B C1 POP BC
OC5C A8 XOR B
OC5D F5 PUSH AF
FD7EOO LD A.ÍIY+0)
OC5E
OC61 D600 SUB #OH
OC63 CAEFOC JP Z.DFO
OC66 DD7EOO LD A.(IX-t-O)
OC69 C67F ADD A,#7FH
OC6B 3804 JR C.DF1
OC6D 2600 LD H,#OH
OC6F 1802 JR DF2
OC71 2601 DF1: LD H.#1H
OC73 6F DF2: LD L,A
OC74 FD4EOO LD C,(IY+0)
OC77 AF XOR A
0078 47 LD B,A
OC79 ED42 SBC HL.BC
OC7B 3877 JR C.DF3
OC7D CB44 BIT O.H
OC7F 206E JR NZ.DFO
OC81 DD7500 LD (1X+0),L
OC84 110A18 LD DE,#BN1+4
OC87 210918 LD HL,#BNl+3
OC8A 010300 LD BC.#3H
OC8D C5 PUSH BC
OC8E EDB8 LDDR
OC90 DD360100 LD (IX+1},#OH
OC94 111118 LD DE,#BN2+4
OC97 211018 LD HL.3BN2+3
OC9A 01 POP BC
OC9B EDB8 LDDR
OC9D FD360100 LD (IY-1),#OH
OCA1 211418 LD HL,#TEM
OCA4 0604 LD B,#4H
OCAS CDCG10 CALL CLN
OCA9 0620 LD B,#20H
OCAS C5 DF5: PUSH BC
OCAC 110A18 LD DE,#BNl+4
OCAF 211118 LD HL,#BN2+4
OCB2 0604 LD B,#4H
CGB4 CD2011 CALL RSU
OCB7 3F CCF
OCB8 211718 LD HL,#TEM+3
OCBB 0604 LD B,#4H
OCBD CD5011 CALL SLO
OCCO FDC80A46 BIT 0.(IY-K)AH)
OCC4 200B JR NZ.DF4
OCC6 110A18 LD DE,#BN1+4
OCC9 211118 LD HL,#BN2-4
OCCC 0604 LD B,#4H
OCCE CD1711 CALL RAD
OCD1 210A18 DF4: LD HL.#BN1+4
OCD4 0604 LD B,#4H
OCD6 CD4F11 CALL SL
OCD9 01 POP BC
OCDA 10CF DJNZ DF5
OCDC 110718 LD DE,#BN1+1
OCDF 211418 LD HL,#TEM
OCE2 010400 LD BC,íí4H
OCE5 EDBO LDIR
OCE7 CD3611 CALL ÑOR
OCEA CD5611 CALL GEX
OCED 1808 JR DF6
OCEF CD7D11 DFO: CALL ERR
OCF2 1803 JR DF6
OCF4 CD9211 DF3: CALL PA3
OCF7 C9 DF6: RET

OCF8 CD8D10 BBCD: CALL UNP


OCFB F1 POP AF
OCFC 211A18 LD HL,#BCDE
OCFF 0603 LD B,#3H
OD01 CDC610 CALL CLN
OD04 DD7EOO LD A,(IX+0)
OD07 D600 SUB #OH
OD09 CABAOE JP Z,ZO
ODOC D67E SUB #7EH
ODOE 3841 JR C.LTO
ODIO 283F JR Z,LTO
OD12 4F LO C,A
OD13 D612 SUB #12H
OD15 D2ACOE JP NC.BIG
OD18 C5 PUSH BC
OD19 111718 LD DE,#TEM+3
OD1C 210718 LD HL,#BN1+1
OD1F 010300 LD BC,#3H
OD22 EDBO LDIR
OD24 211418 LD HL,#TEM
OD27 0603 LD B,#3H
OD29 CDC610 CALL CLN
OD2C 01 POP BC
OD2D 51 LD D,C
OD2E 211918 GTO: LO HL,#TEM+5
OD31 0606 LD B,#6H
OD33 CD4F11 CALL SL
OD36 15 DEC D
OD37 20F5 JR NZ.GTO
OD39 0618 LD B,#18H
OD3B C5 GT1: PUSH BC
OD3C 211918 LD HL,#TEM+5
OD3F 0606 LD B,#6H
OD41 CD4F11 CALL SL
OD44 211018 LD HL,#BCDE+2
OD47 0603 LD B,#3H
OD49 CDCA11 CALL DAD
OD4C 01 POP BC
OD4D 10EC DJNZ GT1
OD4F 1833 JR FRO
OD51 3E7E LTO: LD A,#7EH
OD53 DD9600 SUB (IX+0)
OD56 4F LD C,A
OD57 D60D SUB #ODH
OD59 2803 JR Z.LT2
OD5B D2BAOE JP NC.ZO
OD5E 05 LT2: PUSH BC
OD5F 111418 LD DE,#TEM
OD62 210718 LD HL,#BN1+1
OD65 010300 LD BC,#3H
OD68 EDBO LDIR
OD6A 211718 LD HL,#T£M+3
OD6D 0603 LD B,#3H
OD6F CDC610 CALL CLN
OD72 C1 POP BC
OD73 79 LD A.C
OD74 D600 SUB #OH
OD76 2800 JR Z.FRO
OD78 41 LD B,C
OD79 AF LT1: XOR A
OD7A 211418 LD HL.tfTEM
OD7D 1606 LD D,#6H
OD7F CD1011 CALL SH1
OD82 10F5 DJNZ LT1
OD84 211D18 FRO: LD HL,#BCDF
OD87 0639 LD B,#39H
OD89 CDC610 CALL CLN
OD8C CDB811 CALL CERO
OD8F 3830 JR C.FR
OD91 QE01 LD C,#1H
OD93 3E50 LD A,#5QH
OD95 323018 LD (GN5J.A
OD98 211918 FR5: LD
OD9B 0606 LD B,#6H
OD9D CD4F11 CALL SL
ODAO 3019 JR NC.FR1
ODA2 59 LD E.C
ODAS CB43 BIT 0,E
ODA5 2801 JR Z.FR2
ODA7 1C INC E
ODAS CB3B FR2: SRL E
ODAA 43 LD B.E
ODAB 10 DEC E
ODAC 1600 LD D,#OH
ODAE 211D18 LD HL,#BCDF
ODB1 19 ADD HL.DE
ODB2 E5 PUSH HL
ODB3 213018 LD HL,#GN5
ODB6 19 ADD HL.DE
ODB7 01 POP DE
ODB8 CD1711 CALL RAD
ODBB CDB811 FR1: CALL CERO
ODBE 3811 JR C.FR6
ODCO C5 PUSH BC
ODC1 CD0212 CALL MULTIO
ODC4 C1 POP BC
ODC5 C5 PUSH BC
ODC6 CD3D12 CALL MULT5
ODC9 01 POP BC
ODCA oc INC C
ODCB 18CB JR FR5
ODCD OEOO FR: LD C,#OH
ODCF 1872 JR FRA
ODD1 C5 FR6: PUSH BC
ODD2 79 LD A,C
ODD3 08 EX AF.AF
ODD4 CB39 SRL 0
ODD6 3001 JR NC.FR7
ODD8 OC INC 0
ODD9 D1 FR7: POP DE
ODDA CB23 SLA E
ODDC CB23 SLA E
ODDE 51 LD 0,0
ODDF 05 PUSH DE
ODEO 0600 LD B,#OH
ODE2 114318 LD DE.3GN5T
ODE5 211D18 LD HL,#BCDF
ODE8 EDBO LDIR
ODEA C1 POP BC
ODEB C5 PUSH BC
ODEC 211D18 LD HL,#BCDF
ODEF CDC610 CALL CLN
ODF2 211D18 LD HL.tfBCDF
ODF5 01 POP BC
ODF6 C5 PUSH BC
ODF7 48 LD C.B
ODF8 0600 LD B,#OH
ODFA 09 ADD HL.BC
ODFB 2B DEC HL
ODFC E5 PUSH HL
ODFD 214318 LD HL,#GN5T
OEOO 09 ADD HL.BC
OE01 2B DEC HL
OE02 D9 EXX
OE03 E1 POP HL
OE04 01 POP BC
OE05 C5 PUSH BC
OE06 09 EXX
GE07 01 POP BC
OE08 08 EX AF.AF1
OEQ9 5F LO E.A
OEOA 08 EX AF.AF1
OEOB CB43 BIT O.E
OEOD 2804 JR Z.FRMO
OEOF 3E04 LD A,#4H
OE11 1802 JR FR8
A26

OE13 3E08 FRMO: LO A,#8H


OE15 C5 FR8: PUSH BC
OE16 E5 PUSH HL
OE17 F5 PUSH AF
OE18 CD4F11 CALL SL
OE1B D9 EXX
OE1C E5 PUSH HL
OE1D C5 PUSH BC
OE1E CDCA11 CALL DAD
OE21 01 POP BC
OE22 El POP HL
OE23 09 EXX
OE24 F1 POP AF
OE25 El POP HL
OE26 01 POP BC
OE27 3D DEC A
OE28 2004 JR NZ.FRM1
OE2A 3E08 LD A,#8H
OE2C 2B DEC HL
OE2D 05 DEC B
OE2E OD FRM1: DEC C
OE2F 20E4 JR NZ.FR8
OE31 08 EX AF.AP
OE32 D9 EXX
OE33 48 LD C.B
OE34 CB47 BIT 0,A
OE36 280B JR Z.FRA
OE38 1604 LD D,#4H
OE3A E5 FR9: PUSH HL
OE3B 41 LD B.C
OE3C CD4F11 CALL SL
OE3F E1 POP HL
OE40 15 DEC O
OE41 20F7 JR NZ.FR9
OE43 3E03 FRA: LD A,#3H
OE45 81 ADD A.C
OE46 4F LD C,A
OE47 0600 LD B,#OH
OE49 211A1B LD HL,#BCDE
OE4C CB66 BIT 4,{HL)
OE4E 205C JR NZ.BIG
OE50 1604 LD D,#4H
OE52 1E06 LD E,#6H
OE54 E5 PUSH HL
OE55 05 PUSH DE
OE56 7E LD A.(HL)
OE57 E60F AMD #OFH
OE59 D600 SUB #OH
OE5B 2018 JR NZ.BB3
OE5D C5 PUSH BC
OE5E 09 ADD HL.BC
OE5F 2B DEC HL
OE60 59 LD E,C
OE61 OE04 LD C,#4H
OE63 E5 PUSH HL
OE64 43 LD B,E
OE65 CD4F11 CALL SL
OE68 E1 POP HL
OE69 OD DEC C
OE6A 20F7 JR NZ.BB2
OE6C 01 POP BC
OE6D D1 POP DE
OE6E E1 POP HL
OE6F 10 DEC E
OE70 15 DEC O
OE71 20E1 JR NZ.BBO
OE73 1802 JR BBC
OE75 D1 POP DE
OE76 E1 POP HL
OE77 3A1D18 BBC: LD A,(BCDF)
OE7A E6FO AND #OFOH
OE7C D650 SUB #50H
OE7E 2802 JR Z.BBD
OE80 381A JR C.BB5
OE82 E5 PUSH HL
OE83 CD8C12 CALL ROUBCD
OE86 E1 POP HL
OE87 CB66 BIT 4,(HL)
OE89 2811 JR Z.8B5
OE8B 7B LD A,E
OE8C D606 SUB #6H
OE8E 281 C JR Z.BK3
OE90 1C INC E
OE91 0604 LD B,#4H
OE93 E5 PUSH HL
OE94 1604 LD D,#4H
OE96 CD1011 CALL SH1
OE99 E1 POP HL
OE9A 10F7 DJNZ BBA
OE9C F1 POP AF
OE9D CB7F BIT 7,A
OE9F 2005 JR NZ.BB6
OEA1 3EOF LD
OEA3 A6 AND (HLJ
OEA4 1803 JR BB7
OEA6 3EFO LD A,#OFOH
OEA8 B6 OR (HL)
OEA9 77 LD (HLJ.A
OEAA 1819 JR BB9
OEAC 3EEE B!G: LD A,#QEEH
OEAE 211A18 LD HL,#BCDE
OEB1 0603 LD 8,#3H
OEB3 1E06 LD E,#6H
OEB5 CDC710 CALL REP
OEB8 180 A JR BB8
OEBA 211A18 ZO: LD HL,#BCDE
OEBD 0603 LD B,#3H
OEBF CDC610 CALL CLN
OEC2 1E02 LD E,#2H
OEC4 F1 POP AF
OEG5 C9 RET

OEC6 210318 BCDBIN: LD HL,#BCD


OEC9 7E LD A,(HL)
OECA F5 PUSH AF
OECB E60F AND #OFH
OECD 77 LD (HL),A
OECE 0603 LD B,#3H
OEDO CDBD11 CALL CEO
OED3 DA8310 JP C.ZERO
OED6 3E02 NSO: LD A,#2H
OED8 91 SUB C
OED9 2SOE JR Z.NS1
OEDB 210318 LD HL,#BCD
OEDE 7E LD A,(HL}
OEDF D600 SUB #OH
OEE1 2006 JR NZ.NS1
OEE3 CD7E12 CALL SL4V
OEE6 OD DEC C
OEE7 18ED JR NSO
OEE9 CB41 NS1: BIT o.c
OEEB 2803 JR Z.NS2
OEED CD7E12 CALL SL4V
OEFO 211418 MS2: LD HL.^TEM
OEF3 060D LD B,#ODH
OEF5 CDC610 CALL CLN
OEF8 215618 LD HL,#BINNE
OEFB 0606 LD B.#6H
QEFD CDC610 CALL CLN
A28

OFOO 41 LD B,C
OF01 05 DEC B
OF02 C5 PUSH BC
OF03 CB39 SRL C
OF05 0600 LD B,#QH
OF07 C5 PUSH BC
OF08 111C18 LD DE,#BCDE+2
OFOB 210218 LD HL,#BCD-1
OFOE 09 ADD HL.BC
OFOF EDB8 LDDR
OF11 01 POP BC
OF12 C5 PUSH BC
OF13 3E03 LD A,#3H
OF15 91 SUB C
OF16 280A JR Z.NF
OF1B 11141B LD DE,#TEM
OF1B 210318 LD HL,#BCD
OF1E 09 ADD HL.BC
OF1F 4F LD C,A
OF20 EDBO LDIR
OF22 211A18 NF: LD HL,#BCDE
OF25 0603 LD B,#3H
OF27 CDBD11 CALL CEO
OF2A DAE80F JP C.SOLOFR
OF2D 01 POP BC
OF2E D1 POP DE
OF2F D5 PUSH DE
OF30 CB22 SLA D
OF32 CB22 SLA O
OF34 42 LD B,D
OF35 C5 PUSH BC
OF36 0600 LD B,#OH
OF38 211D18 LD HL,#BCDF
OF3B AF XOR A
OF3C ED42 SBC HL.BC
OF3E 01 POP BC
OF3F C5 PUSH BC
OF40 C5 CPE: PUSH BC
OF41 E5 PUSH HL
OF42 115718 LD DE,#BINNE+1
OF45 CDD211 CALL BCBIEN
OF48 E1 POP HL
OF49 01 POP BC
OF4A 10F4 DJNZ CPE
OF4C 01 POP BC
OF4D D1 POP DE
OF4E C5 PUSH BC
OF4F 3E05 LD A,#5H
OF51 92 SUB D
OF52 CA3E10 JP Z.NORM
OF55 3E20 LD A,#20H
OF57 90 SUB B
OF58 47 LD B.A
OF59 3E03 LD A,#3H
OF5B 91 SUB C
OF5C 4F LD C,A
OF5D C5 PUSH BC
OF5E CB42 BIT O.D
OF60 2815 JR Z.DEPAR
OF62 D1 POP DE
OF63 01 POP BC
OF64 C5 PUSH BC
OF65 215718 LD HL,#BINNE+1
OF68 41 LD B.C
OF69 AF XOR A
OF6A ED67 DEIMP: RRDA
OF6C 23 INC HL
OF6D 10FB DJNZ DEIMP
OF6F 01 POP BC
OF70 3E04 LD
A29

OF72 80 ADD A.B


OF73 47 LO B.A
OF74 C5 PUSH BC
OF75 D5 PUSH DE
OF76 4B LO C,E
OF77 211418 OEPAR: LO HL,#TEM
OF7A 41 LO B,C
OF7B CDBD11 CALL CEO
OF7E 3004 JR NC.ENFR
OFBO 01 POP BC
OF81 C33E10 JP NORM
OF84 01 ENFR: POP BC
OF85 58 LO E,B
OF86 CB3B SRL E
OF88 CB3B SRL E
OF8A CB3B SRL E
OF8C 3001 JR NC.BFRT
OF8E 10 INC E
OF8F 1600 BFRT: LD D,#OH
OF91 211018 LO HL,#BCDF-1
OF94 19 ADD HL.DE
OF95 C5 PUSH BC
OF96 E5 PUSH HL
OF97 42 LD B,D
OF98 211318 LD HL,#TEM-1
OF9B 09 ADD HL.BC
OF9C 51 LD D,C
OF9D DDE1 POP IX
OF9F 01 POP BC
OFAO C5 PUSH BC
OFA1 DDE5 PUSH IX
OFA3 C5 CVFR: PUSH BC
OFA4 DDE5 PUSH IX
OFA6 E5 PUSH HL
OFA7 42 LD B,D
OFA8 CDCA11 CALL DAD
OFAB DDE1 POP IX
OFAD E1 POP HL
OFAE E5 PUSH HL
OFAF 43 LD B.E
OFBO CD5011 CALL SLO
OFB3 DDE5 PUSH IX
OFB5 E1 POP HL
OFB6 ODE1 POP IX
OFB8 01 POP BC
OFB9 10E8 DJNZ CVFR
OFBB E1 POP HL
OFBC Cl POP BC
OFBD CB38 SRL
OFBF CB38 SRL
OFC1 CB38 SRL
OFC3 300F JR NC.NDZI
OFC5 05 PUSH DE
OFC6 E5 PUSH HL
OFC7 1604 LD D,#4H
OFC9 E1 DZl: POP HL
OFCA E5 PUSH HL
OFCB 43 LD B.E
GFCC CD4F11 CALL SL
OFCF 15 DEC D
OFDO 20F7 JR NZ.DZI
OFD2 E1 POP HL
OFD3 D1 POP DE
OFD4 01 NDZl: POP BC
OFD5 C5 PUSH BC
OFD6 215718 LO HL.flBINNE+1
OFD9 0600 LD B,#QH
OFDB 09 ADD HL,BC
OFDC D5 PUSH DE
OFDD EB EX DE.HL
OFDE 211018 LD HL,#BCDF
OFE1 Cl POP BC
OFE2 0600 LD B,#OH
OFE4 EDBO LDIR
OFE6 1856 JR NORM
OFE8 C1 SOLOFR: POP BC
OFE9 D1 POP DE
OFEA OE7E LD C,#7EH
OFEC 211518 PBITO: LD HL,#TEM+1
OFEF 0602 LD B.#2H
OFF1 AF XOR A
OFF2 CDCA11 CALL DAD
OFF5 3803 JR C.PBIT1
OFF7 OD DEC C
OFF8 18F2 JR PBITO
OFFA DD215618 PBIT1: LD IX,#BINNE
OFFE DD7100 LD (IX+OJ.C
1001 DD360301 LD (IX+3),#1H
1005 OE17 LD C,#17H
1007 211418 BITSFR: LD HL.^TEM
100A 0602 LD B,#2H
100C CDBD11 CALL CEO
100F 3820 JR C.FRISO
1011 211518 LD
1014 0602 LD B,#2H
1016 CDCA11 CALL DAD
1019 215918 LD HL,#BINNE+3
101C 0603 LD B,#3H
101E CD5011 CALL SLO
1021 OD DEC C
1022 20E3 JR NZ.BITSFR
1024 211518 LD HL,#TEM+1
1027 0602 LD B,#2H
1029 AF XOR A
102A CDCA11 CALL DAD
102D 3044 JR NC.NORM1
102F 182F JR NORM2
1031 215918 FRISO: LD HL,#BINNE+3
1034 0603 LD B.ÍÍ3H
1036 CD4F11 CALL SL
1039 OD DEC C
103A 20F5 JR NZ.FRISO
103C 1835 JR NORM1
103E 01 POP BC
103F 3E7E LD A,#7EH
1041 80 ADD A.B
1042 DD215618 LD IX,#BINNE
1046 DD7700 LD (IXt-0),A
1049 DDCB017E NORMO: BIT 7,{IX+1)
104D 200B JR N2.NORM3
104F 215B18 LD HL,#BINNE+5
1052 0605 LD B,#5H
1054 CD4F11 CALL SL
1057 35 DEC (HL)
1058 18EF JR NORMO
105A DDCB047E MORM3: BIT 7,(IX+4)
105E 2813 JR Z.NORM1
1060 215918 NORM2: LD HL,ífBlNNEt-3
1063 0603 LD
1065 CDAF11 CALL AOV
1068 3009 JR NC.NORM1
106 A 215618 LD HL,#BINNE
106D 110103 LD DE,#301H
1070 CDOB11 CALL SHF
1073 CD9A11 NORM1: CALL PA2
1076 111418 LD DE.^TEM
1079 215618 LD HL.#BINNE
107C 010400 LD BC,ÍÍ4H
107F EDBO LDIR
1081 1809 JR ZER
A31.

1083 211418 ZERO: LD HL.ífTEM


1086 0604 LD B.#4H
1088 CDC610 CALL CLN
108B F1 POP AF
108C C9 ZER: RET

10BD FD210D18 LD IY,#BN2+0


1091 DD210618 LD IX,#BN1+0
1095 C1 POP BC
1096 DD7EOO LD A,(lX+0)
1099 F5 PUSH AF
109A FD7EOO LD A.(lY+0)
109D F5 PUSH AF
109E DD7E01 LD
10A1 07 RLCAC
10A2 DDCB0016 RL (IX+0)
10A6 DD7EOO LD A,(IX+0}
10A9 D600 SUB #OH
10AB 2804 JR Z.UN1
10AD DDCB01FE SIT 7.(IX+1J
10B1 FD7E01 UNÍ: LD
10B4 07 RLCAC
10B5 FDCB0016 RL (IY+0)
10B9 FD7EOO LD A,[lY+0)
10BG D600 SUB #OH
10BE 2804 JR Z.UN2
10CO FDCB01FE SIT 7,(IY+1)
10C4 C5 UN2: PUSH BC
10C5 C9 RET

10C6 AF CLN: XOR A


10C7 77 REP: LD (HL),A
10C8 23 INC HL
10C9 10FC DJNZ REP
10CB C9 RET

10CC DD7EOO CFP: LD A,(IX+0)


10CF FD9600 SUB (IY+0)
10D2 200F JR NZ.CFO
10D4 110918 LD DE,#BNl+3
10D7 211018 LD HL,#BN2+3
10DA 0603 LD B,#3H
10DC AF XOR A
10DD 1A CF1: LD A.(DE)
10DE 9E SBC A,(HL)
10DF 1B DEC DE
10EO 2B DEC HL
10E1 10FA DJNZ CF1
10E3 3025 CFO: JR NC.CF2
10E5 210618 LD HL.#BN1
10E8 111418 LD DE.ííTEM
10EB 010400 LD BC,#4H
10EE C5 PUSH BC
10EF C5 PUSH BC
10FO EDBO LDIR
10F2 210D18 LD HL.#8N2
10F5 110618 LD DE.ífBNl
10F8 01 POP BC
10F9 EDBO LDIR
10FB 211418 LD HL.ffTEM
10FE 110D18 LD DE.#BN2
1101 C1 POP BC
1102 EDBO LDIR
1104 D1 POP DE
1105 01 POP BC
1106 F1 POP AF
1107 C5 PUSH BC
1108 F5 PUSH AF
1109 D5 PUSH DE
110A C9 CF2: RET

110B 34 SHF: INC (HL)


110C 23 SHO: IMG HL
110D ID DEC E
110E 20FC JR NZ.SHO
1110 CB1E SH1: RR (HL)
1112 23 INC HL
1113 15 DEC D
1114 20FA JR NZ.SH1
1116 C9 RET

1117 AF RAO: XOR A


1118 1A RAO: LD A,(DE}
1119 8E ADC A.(HL)
111A 12 LD (DEJ.A
111B 1B DEC DE
111C 2B DEC HL
111D 10F9 DJNZ RAO
111F C9 RET

1120 AF RSU: XOR A


1121 1A RSO: LD A,(DE)
1122 9E SBC A,{HL)
1123 12 LD (DEJ.A
1124 1B DEC DE
1125 28 DEC HL
1126 10F9 DJNZ RSO
1128 C9 RET

1129 7E LD A,(HL}
112A D600 SUB #QH
112C 2007 JR NZ.CM1
112E 23 INC HL
112F 10F8 DJNZ CMQ
1131 AF XOR A
1132 DD7700 LD (IX+OJ.A
1135 C9 CM1: RET

1136 DD7EOO MOR: LD A,(IX+0)


1139 D600 SUB #OH
113B 2811 JR Z.NOO
113D DDGB017E BIT 7.(IX+1)
1141 200B JR NZ.NOO
1143 210C18 LD HL,#BN1+6
1146 0606 LD B,#6H
1148 CD4F11 CALL SL
114B 35 DEC (HL)
114C 18E8 JR ÑOR
114E C9 NOO: RET

114F AF SL: XOR A


1150 CB16 SLO: RL (HL)
1152 2B DEC HL
1153 10FB DJNZ SLO
1155 C9 RET

1156 3EFE GEX: LD A,#OFEH


1158 DD9600 SUB {IX+OJ
115B 3820 JR C.ERR
115D DDCB047E ROM: BIT 7.0X+4)
A33

1161 2828 JR Z.PAK


1163 210918 LD
1166 0603 LD B,#3H
1168 CDAF11 CALL AOV
116B 301E JR NC.PAK
116D 210618 LD HL.#BN1
1170 110103 LD DE.8301H
1173 CDOB11 CALL SHF
1176 3EFE LD A.tfQFEH
1178 DD9600 SUB (IX+OJ
117B 300E JR NC.PAK
117D 3EEE ERR: LD A,#OEEH
117F 210618 LD HL,#BN1
1182 0604 LD B,#4H
1184 CDC710 CALL REP
1187 01 POP BC
1188 Fl POP AF
1189 1822 JR PA1
118B DD7EOO PAK: LD A,(IX+0)
118E D600 SUB #OH
1190 2008 JR NZ.PA2
1192 210618 PA3: LD HL.#BN1
1195 0604 LD B,#4H
1197 CDC610 CALL CLN
119A 01 PA2: POP BC
119B F1 POP AF
1190 07 RLCAC
119D DDCB001E RR (IX+0)
11A1 3806 JR C.PAO
11A3 DDCB01BE RES 7,(IX+1)
11A7 1804 JR PA1
11A9 DDCBOIFE PAO: SIT 7,(1X+1)
11AD C5 PA1: PUSH BC
11AE C9 RET

11AF 37 AOV: SCF


11BO 7E AOO: LD A,{HL)
11B1 CEOO ADC A,#OH
11B3 77 LD (HL).A
11B4 2B DEC HL
11B5 10F9 DJNZ AOO
11B7 C9 RET

11B8 211418 CERO: LD HL,#TEM


11BB 0606 LD B,#6H
11BD 7E CEO: LD A,(HL)
11BE D600 SUB #OH
11CO 2006 JR NZ.CE1
11C2 23 INC HL
11C3 10F8 DJNZ CEO
11C5 37 SCF
11C6 1801 JR CE2
11C8 AF CE1: XOR A
11C9 C9 CE2: RET

11 CA 7E DAD: LD A,(HL)
11CB 8F ADC A,A
11CC 27 DAA
11CD 77 LD (HLJ.A
11CE 2B DEC HL
11CF 10F9 DJNZ DAD
1101 C9 RET

11D2 E5 BCBIEN: PUSH HL


11D3 D5 PUSH DE
11D4 51 LD D.C
A34

11D5 AF XOR A
11D6 CD1011 CALL SH1
11D9 E1 POP HL
11DA 51 LD D.C
11DB CD1011 CALL SH1
11DE E1 POP HL
11DF 41 LD B.C
11EO CB7E MQ8: BIT 7.(HL)
11E2 280B JR Z.MSD
11E4 7E LD A,(HL)
11E5 E60F AND #OFH
11E7 57 LD D.A
11E8 7E LD A,(HL)
11E9 E6FO AND #OFQH
11EB 0630 SUB #30H
11ED 82 ADD A,D
11EE 77 LD (HL),A
11EF CB5E MSD: BIT 3,(HL)
11F1 280B JR Z.LSD
11F3 7E LD A,(HL)
11F4 E6FO AND #OFOH
11F6 57 LD D.A
11F7 7E LD A,(HL)
11F8 E60F AND #OFH
11FA D603 SUB #3H
11FC 82 ADD A,D
11FD 77 LD (HLJ.A
11FE 23 LSD: INC HL
11FF 10DF DJNZ MQ8
1201 C9 RET

1202 C5 MULT10; PUSH BC


1203 CB41 BIT 0,C
1205 2801 JR Z.SRO
1207 OC IMG C
1208 CB39 SRO: SRL C
120A 0600 LD B,#OH
120C 114318 LD DE.#GN5T
120F 211D18 LD HL,#BCDF
1212 EDBO LDIR
1214 01 POP BC
1215 CB39 SRL C
1217 OC INC C
1218 0603 LD B,#3H
121A AF SR: XOR A
121B 51 LD D.C
121C 211D18 LD HL,#BCDF
121F CD1011 CALL SH1
1222 10F6 DJNZ SR
1224 AF XOR A
1225 214318 LD HL,#GN5T
1228 51 LD D,C
1229 CD1011 CALL SH1
122C 41 LD B.C
122D OD DEC C
122E 59 LD E.C
122F 211D18 LD HL,#BCDF
1232 19 ADD HL.DE
1233 E5 PUSH HL
1234 214318 LD HL,#GN5T
1237 19 ADD HL.DE
1238 D1 POP DE
1239 CD1711 CALL RAD
123C C9 RET

123D C5 MULT5: PUSH BC


123E CB41 BIT O.C
1240 2801 JR Z.FSR1
1242 OC INC C
1243 CB39 FSR1: SRL C
1245 0600 LD B,#GH
1247 114318 LD DE,#GN5T
124A 213018 LD HL,#GN5
1240 EDBO LDIR
124F EB EX DE.HL
1250 70 LD (HL).B
1251 C1 POP BC
1252 CB39 SRL C
1254 OC INC C
1255 0604 LD B,#4H
1257 AF FSR: XOR A
1258 213018 LD HL,#GN5
125B 51 LD D,C
125C CD1011 CALL SH1
125F 10F6 DJNZ FSR
1261 0602 LD B,#2H
1263 AF SSR: XOR A
1264 214318 LD HL.SGN5T
1267 51 LD D.C
1268 CD1011 CALL SH1
126B 10F6 DJNZ SSR
126D 41 LD B,C
126E OD DEC C
126F 59 LD E.C
1270 213018 LD HL.#GN5
1273 19 ADD HL,DE
1274 E5 PUSH HL
1275 214318 LD HL.SGN5T
1278 19 ADD HL.DE
1279 D1 POP OE
127A CD1711 CALL RAD
127D C9 RET

127E 1604 SUV: LD D,#4H


1280 210518 QV: LO HL,#BCD+2
1283 0603 LD B,#3H
1285 CD4F11 CALL SL
1288 15 DEC D
1289 20F5 JR NZ.QV
128B C9 RET

128C 211C1B ROUBCD: LD HL,#BCDE+2


128F 0603 LD B,#3H
1291 37 SCF
1292 3EOO ROU: LD A,#OH
1294 8E ADC A(HL)
1295 27 DM
1296 77 LO (HL),A
1297 2B DEC HL
1298 10F8 DJNZ ROU
129A C9 RET

0000 END
A36

0007 A OAB4 ADCONV OB34 AFP 0554 AGAIN 055B AGAINO


11 BO AOO OB62 AOS 11AF AOV 04E3 ATDC 0050 ATDCO
04E6 ATDC F 050F ATQM 0524 ATQMO 0518 ATQM1 0000 B
07E5 BADTY OE54 BBO OE63 BB2 OE75 BBS OE9C BB5
OEA6 BB6 OEA9 BB7 OEC4 BB8 OEC5 BB9 OE93 BBA
OE77 BBC OCF8 BBCD OE82 BBD 11D2 BCBIEN 1803 BCD
OEC6 BCDBIN 1B1A BCDE 1810 8CDF OF8F BFRT OEAC BIG
1856 BINNE 1007 BITSFR 1806 8N1 180D BN2 0001 C
09BC C70 0990 C71 0996 C72 099D C73 09A4 C74
09B4 C75 09B9 C76 0978 C7SEG 0458 CALO 02B5 CALADO
0686 CALFS 0052 CALFSO 1180 CEO 11C8 CE1 11C9 CE2
0142 CEAO 013E CEA1 013A CEA2 0136 CEAS 0132 CEA4
012E CEA5 012A CEAS 0126 CEA7 0122 CEAS 011E CEA9
0629 CENTG 11B8 CERO OOBD CERROR 10E3 CFO 1000 CF1
110A CF2 10CC CFP OB2B CHS 0111 CJAO 0100 CJA1
0109 CJA2 0105 CJA3 0101 CJA4 OOFD CJA5 OOFO CKAO
OOEC CKA1 OOE8 CKA2 OOE4 CKA3 OOEO CKA4 OODC CKA5
OODB CKA6 OOD4 CKA7 0000 CKA8 OAA8 CLDB OAAF CLDBO
OA95 OLEAR 10C6 CLN 022E CLR 1129 CMO 1135 CM1
06E1 CONFIG 0716 CONFIGO 0751 CONFIG1 0769 CONFIG2 06E8 CONFIG3
1800 CONTA 05CO COMV 05DO CONVO 05D8 CONV1 05DA CONV2
0869 COSG OF40 CPE 0082 CPUUP 016B CTAO 0167 CTA1
0163 CTA2 015F CTA3 01 5B CTA4 0157 CTA5 0153 CTA6
01 4F CTA7 02BC CUMOS OFA3 CVFR 0002 D 11CA DAD
1863 DBUF OB06 DECB OF6A DEIMP 0870 DELAY 0880 DELY •
0883 DELYO OF77 DEPAR OCEF DFO OC71 DF1 OC73 DF2
OCF4 DF3 OCD1 DF4 OCAB DF5 OCF7 DF6 OC57 DFP
OB16 DISCON OAAO DISPY 09D2 DISTP 03A7 ' DIV 09E5 OTO
09EC DT1 OA03 DT2 OA09 DT3 OA11 DT4 OA1C DT5
OA1F DT6 OA25 DT7 OA27 DT8 OA3C DT9 OA40 DTA
OA48 DTB OA4F DTC OA57 DTD OA5B DTE OA62 DTF
OA77 DTG OA72 DTH OA87 DTI OA7C DTJ OA99 DYABLE
OFC9 D2I 0003 E OAE6 ENDH OF84 ENFR 08F5 ENTER
0356 ENTRY OBB4 E01 OBC8 E02 OB95 EOV OB57 EQE
117D ERR 0906 ETO 090F ET1 0916 ET2 0922 ET3
092B ET4 0940 ET5 094B ET6 094F ET7 0954 ET8
095C ET9 095E ETA 0969 ETB 096F ETC 097A ETD
08BA EVO 088B EVPOL 016F FCRR 1801 FLAGS OB37 FPO
OB90 FP1 OBD4 FP2 OBD7 FP3 ODCD FR OD84 FRO
ODBB FR1 ODAS FR2 OD98 FR5 0001 FR6 ODD9 FR7
OE15 FR8 OE3A FR9 OE43 FRA 0173 FRHO 0177 FRH1
1031 FRISO OE13 FRMQ OE2E FRM1 044A FRSP 1257 FSR
1243 FSR1 1156 GEX 1830 GN5 1843 GN5T 0115 GRADOS
OOF4 GRADOJ OOC7 GRADOK 0146 GRADOT OD2E GTO OD3B GT1
0004 H 0088 HTAB 08DC ÍDEM OSEE IDEMO 017B INICIO
0040 INTBL OBOA ISB8 028D KADC 025C KCAL 01F8 KEYB
0220 KNUM 0005 L OAFO LSBC 0530 LSCT 0532 LSCTO
11FE LSD OD51 LTO 0079 LT1 OD5E LT2 OBEB MFO
OBED MF1 OC4E MF2 OC19 MF3 OC30 MF4 OC53 MF5
OC56 MF6 OBD8 MFP 01 DE MOSTOD 0477 MOSTRAR 04BB MOSTRARO
0493 MOSTRAR1 11EO MQ8 OAC9 MSBC 11EF MSD 1873 MTERO
1874 MTER1 1875 MTER2 1876 MTER3 0398 MULT 1202 MULT10
123D MULT5 05B5 NBIN OFD4 NDZI OF22 NF 027F NKCAL
114E MOO 1136 ÑOR 103E NORM 1049 NORMO 1073 NORM1
1060 NORM2 105A NORM3 OED6 MSO OEE9 NS1 OEFO NS2
OOA8 NSEG 02EB NTC 07A8 NTCIN 186C NTER 0818 NTYTY
06A6 NUMTER 06AD NUMTERO 06BE NUMTER1 06CO NUMTER2 0444 OPEF
11A9 PAO 11AD PA1 119A PA2 1192 PA3 118B PAK
OFEC PBITO OFFA PBIT1 0092 PDCAL 0098 FÓCALO OBCE PK
040B POINT 0056 PROG 0070 PROGO 0072 PROG1 0074 PROG2
0076 PROG3 0078 PROG4 0256 PULLR 1280 QV 1118 RAO
026D RACF 1117 RAD 0319 RCAD 10C7 REP 0389 RESTA
0354 RFI 0286 RKCAL 0677 RM1S 115D RON 1292 ROU
28C ROUBCD 1121 RSO 1120 RSU 034A RTBL 03B4 SB3F
0795 SCALE OOAE SCALEP 186B SCAN 031F SCLE 032E SOLEO
0341 SCLE1 077A SECÓNOS 1871 SEGDL OB2F SFO OB1B SFP
03DD SGO 03DF SG1 03ED SG2 03FB SG3 03FD SG4
0303 SGDL 110C SHO 1110 SH1 110B SHF OAF3 SHIFTL
03BC SIGN 114F SL 1150 SLO 127E SL4V 082B SNSEG
0839 SNSEGO OFE8 SOLOFR 043A SPF 121A SR 1208 SRO
SSCALEO 1263 SSR 0857 STAG OB82 SUB
037A SUMA "0214 TBL 058E TCONC 0116 TEO 011A-" TE1
1814 TEM 1S5D TEMADO 186D TERO 186E TER1 186F - ' ' " TER2
1870 TER3 007A TERPU OOC2 THERS OOF5 TJO OOF9 TJ1
OOC8. TKO OOCC TK1 062F TKL 063A TKLO 0644 * TKL1
0673 TKL2 OOB9 TNEG 009E TNUM OOB4 TOPEN -0147 ' TTO
014B TT1 02D2 TTC 02E7 TTCO 02F1 TTC1 OOA6 - TYPEE
07FO TYPEIN 07CD TYPEINO OOA5 TYPEJ OOA4 TYPEK OOA7 TYPET
1091 UNO 10B1 UN1 10C4 UN2 108D UNP 01F5 . WAlT
0054 WAITO 01F4 WAIT1 0234 WDR 1872 WSCALE 185E X
OEBA 20 108C 2ER 1083 ZERO
AN EXO B

MANUAL DE OPERACIÓN DEL EQUIPO

El equipo tiene 2 modos de operación: modo de Medición de Temperatura y


modo de Calculadora; se describe a continuación cada uno de ellos.

MEDICIÓN DE TEMPERATURA

Al encender el equipo, en el display se muestra durante 3 segundos el patrón


CPU-UP, que es una indicación de que el equipo se ha inicializado
correctamente; a continuación pregunta el número de termocuplas conectadas,
mostrando en el display el patrón nu.tc. ?, con el signo de interrogación
intermitente. El operador debe ingresar un número entre 1 a 4, porque se
dispone de 4 pórticos; si se ingresa un número diferente, se desechará la tecla
pulsada y continuará preguntando el número de termocuplas.

Al ingresar una tecla correcta el display mostrará durante 1 segundo el mismo


patrón con el número ingresado, es decir: nu.tc. 1, 2, 3 ó 4.

Enseguida pasa a preguntar el tipo de cada una de las termocuplas, mostrando


en el display el patrón W-.ty. ?, donde # significa el número de la termocupla. El
operador debe ingresar un número entre O y 3, con la siguiente equivalencia: O
para termocupla tipo K, 1 para termocupla tipo J, 2 para termocupla tipo E y 3
para termocupla tipo T. Si se ingresa un número diferente, se desechará la tecla
pulsada y continuará preguntando el tipo de termocuplas.

Al ingresar una tecla correcta el display mostrará durante 1 segundo el mismo


patrón con el número de termocupla y el tipo ingresado, es decir: W-.ty. K, J, E
ó í. Y, el lazo se repetirá hasta concluir con todas las termocuplas. Luego de
mostrar el último tipo de termocupla ingresado, el equipo mostrará nuevamente
el número de termocuplas por 1 segundo, y a continuación, por 1 segundo, el tipo
de cada una, con el siguiente patrón: f#. 01} donde # representa el número de
termocupla, Z7la letra correspondiente al tipo de termocupla, y el 1 al final la
indicación de que si se mostrará la medición de esa termocupla.

Después de mostrar el tipo de todas las termocuplas, pasa a mostrar en el


display el patrón 7/HEr. como una indicación de que el equipo pasa a realizar
la medición de temperatura de las termocuplas conectadas.
B2

En el modo de medición de temperatura, el programa barre todos las termocuplas


verificando primero si el pórtico tiene conectada la señal de voltaje amplificada
o si el amplificador conectado tiene la termocupla conectada; si cualquiera de las
dos situaciones no se cumple para cualquier pórtico, se mostrará en el display
el patrón W-.oPEn.

Si la rutina inicial de preguntar el número y tipo de termocuplas es interrumpida


pulsando la tecla L para calibración, o la tecla SHIFT para pasar al modo de
calculadora, el programa al volver a medición de temperatura se configura por
omisión con 1 sola termocupla tipo K.

Mientras el equipo se encuentre en este modo, se pueden pulsar las teclas que
se indican a continuación, con su respectiva función:

A Para configurar nuevamente al equipo. Es decir repite la secuencia inicial de


preguntar el número y tipo de termocuplas.

B Para mostrar la configuración total del equipo. A más de mostrar el número


de termocuplas y el tipo de cada una de ellas, como se ha explicado,
muestra: el tiempo que se debe mostrar la medición de cada termocupla con
el patrón SEC. #, donde # representa el número de segundos que por
omisión es 1, y como máximo 9; y, la escala de temperatura con la cual se
hace la medición con el patrón SCL. °/7, donde D puede ser la letra C o la
letra F correspondientes a grados Centígrados o a grados Fahrenheit.

C Para ingresar el número de segundos que se debe mostrar la medición de


temperatura de cada termocupla mostrando en el display el patrón SEC. ?,
con el signo de interrogación intermitente. El operador debe ingresar un
número entre 1 a 9, porque 9 es el máximo tiempo en segundos que se
puede mostrar la medición; si se ingresa un número diferente, se desechará
la tecla pulsada y continuará preguntando el número de segundos.

Al ingresar una tecla correcta el display mostrará durante 1 segundo el


mismo patrón con el número ingresado, es decir: SEC. #.

D Para ingresar la escala de medición de temperatura mostrando en el display


el patrón SCL. °?, con el signo de interrogación intermitente. El operador
debe ingresar las teclas C para grados Centígrados, o F para grados
Fahrenheit; si se ingresa una tecla diferente, se desechará la tecla pulsada
y continuará preguntando el número de segundos.

Al ingresar una tecla correcta el display mostrará durante 1 segundo el


mismo patrón con la tecla ingresada, es decir: SCL. °C ó °F.
B3

E Para indicarle al programa si mostrar o no la medición de temperatura de una


termocupla particular mostrando en el display el patrón f#. ü ?, donde #
representa el número de termocupla de la cual se está preguntando, y ¿7el
tipo, con el signo de interrogación intermitente. El operador debe ingresar
las teclas O para no mostrar la medición ó 1 para mostrarla; si se ingresa una
tecla diferente, se desechará la tecla pulsada y continuará preguntando el
número de segundos.

Al ingresar una tecla correcta el display mostrará durante 1 segundo el


mismo patrón con la tecla ingresada, es decir: f#. O O ó 1. El lazo se repite
para todas las termocuplas, y al finalizar muestra lo ingresado para todas
ellas.

L Para ejecutar la calibración de cero y la calibración de escala completa del


amplificador operacional asociado al conversor DAC1000. Después de
pulsar esta tecla, el programa muestra el patrón CAL. O para indicar que
está en la rutina de calibración de cero; el operador puede entonces realizar
esta calibración con el potenciómetro respectivo conectando un mutímetro
en los puntos de prueba disponibles. A continuación se debe pulsar la
misma tecla L para pasar a la calibración de escala completa. Si no se pulsa
esta tecla el programa desechará la tecla pulsada y continuará en la rutina
de calibración de cero. Si se pulsó la tecla L, el programa pasará a la rutina
de calibración de escala completa y mostrará en el display el patrón CAL. FS
para indicar que está en la rutina de calibración de escala completa; el
operador entonces realizará esa calibración. Para salir de la rutina de
calibración es necesario volver a pulsar la tecla L, si no el programa
desechará la pulsación de cualquier otra tecla y continuará en la rutina de
calibración hasta que se pulse la tecla L.

SHIFT Esta tecla permite conmutar entre el modo de medición de temperatura


y el modo de calculadora.

CALCULADORA

En este modo el equipo acepta cualquiera de los dígitos O a 9, y después de


pulsar alguno de ellos, se mostrará en el display el número ingresado. Se acepta
máximo 5 caracteres porque siendo 6 displays, el primero de la derecha está
reservado para el signo del número. A más de los dígitos O a 9 se pueden pulsar
las teclas que se describen a continuación con la función que cumplen;
B4

A Para ingresar el número que se está mostrando en el display para efectuar


alguna operación aritmética.

B Para sumar el número que previamente se ingresó pulsando la tecla A, y el


número que se está mostrando en el display,

C Para restar el número que previamente se ingresó pulsando la tecla A, y el


número que se está mostrando en el display.

D Para multiplicar el número que previamente se ingresó pulsando la tecla A,


y el número que se está mostrando en el display.

E Para dividir el número que previamente se ingresó pulsando la tecla A, y el


número que se está mostrando en el display.

F Para cambiar el signo del número que se está mostrando en el display. La


pulsación de esta tecla tiene resultado siempre y cuando se haya ingresado
por lo menos un carácter, o el número que se está mostrando en el display
es el resultado de una operación efectuada.

H Para poner el punto decimal en el número que se está ingresando. Si es el


primer carácter que se está ingresando, el programa mostrará en el display
el O con el punto decimal.

SHIFT Para conmutar al modo de medición de temperatura.


ANEXO G

LOS ELEMENTOS UTILIZADOS


Central Processing
Unit

X
J
Zilog
Product
Brieí

August 1980
Features 158 insiruciions, software compatible with • Extensive instruction set includes string, bit,
all 78 of the 8080A insíructions. byte, word operations and block transfers
High speed'—up to 4 MHz raíe with a along with efficient addressing modes such
mínimum 1.0 /ís instruction execuíion time as indexed and relative.
for the Z-80 A and 2.5 MHz and 1.5 /is for • All Z-80 Family components oífer bus-
the Z-80. request and prioritized interrupt request
Duplícate set of general-purpose and flag daisy chains that can be implemented
registers (16 total) eases design and opera- without external logic.
tion of such sysíem software programming, • Three modes of high-speed interrupt pro-
single context switching, background- cessing: 8080 compatible, non-Z-80
foreground programming, single-level inter- peripheral and Z-80 Family peripheral
rupt processing. Two 16-bit índex registers daisy chain.
allow efficient processing of tables and
arrays.
General The Zilog Z-80 microprocessor is the cen- instruction set, dual register sets and other
Description tral element of the Z-80 Microprocessor features of the Z-80 CPU provide higher
Family, which includes a variety of compatible ihroughput and greater efficiency in memory
i peripheral circuits. The Z-80 Family handles utilization. ín addition, the Z-80 CPU is easy io
most microprocessor applications with little use in a systern because of its single -r5 V
additional logic. Z-80 designs are efficient and supply requirernent and fully compatible
cost effective microcomputer systems. family oí peripheral circuits. All Z-80 Family
The Z-80 CPU is a third generation 8-bit mernbers are fabricated with scaled n-channel
microprocessor wiih exceptional capabiíities siíicon-gaíe depletion-load technology.
and computaiional power. The powerful

,rf7
MflEQ
<Q*
[ORO
|Q3
flB
WS
AIS

ñFSH
CLK d»
Qr
HALT

WATT

CPU
CONTROL íÑr
SF5R
ÑW- jJSi

RESET

CPU / . BUSHEQ. Q"


BUS <
QNTROL X
a us A ex..
HALI Qia
MREQ Q 13

CU-
¡ORO Q™
*aV
UNO

Figure 1. Pin Functions Figure 2. Pin Assignments

^CS034-0210 CS034-0211
ijpontinued) the programmer. The registers include two sets
of six general-purpose registers that may be
used individually as 8-bit regisíers or as 16-bit
regisier pairs. There are also two seis of
accumulator and flag registers.
The programmer has access to either set of
main or altérnate registers through a group of
exchange instructions. This altérnate set allows
foreground/background mode of operation or
may be reserved for very fast interrupt
response. Each CPU aiso contains a 16-bit
stack pointer which permits simple implemen-
tation of múltiple leve! iníerrupts, unlimíted
subroutine nesting and simplification oí many
types of data handling.
The two 16-bit índex registers alíow tabular
data manipulation and easy implementation of
reiocatable code. The refresh regisíer provides
for auiomatic, totally transparent refresh oí
D- external dynarnic memories. The I register is
used in a powerfui interrupt response mode ío
íorm the upper eight bits of a pointer to an
interrupt service address table, while the
interrupting device supplies the lower eight
bits of the pointer. An indirect cali is íhen
made to this service address. Figure 3. Typical Z-80 Family Environment

¿asíruction The Z-80 CPU has one of the most powerfui íransfers between mernory and I/O and bit
Seí and rich instruction sets available in any 8-bit operations on any location in memory. The
microprocessor. ít includes such unique opera- Z-80 CPU offers instructions in the following
tions as block move for fast and efficient data cataaories:

8-bit loads General-purpose Accumulaior and Flag


16-bit loads operations
Register exchanges Bit set, reset and test operations
Memory block moves Input and output operaiions
Memory block searches Jumps
8-bit arithmetic and logic operations Calis
16-bit ariíhmetic operations Restarts
Rotares and shifts Returns

CS037-01
Parallel Input Output
Controller

Product
Brieí

August 1980

Features a Provides a direct iníerface between Z-80 Programmable interrupts on peripheral


microcomputer systems and peripheral status conditions.
devices. Standard Z-80 Family bus-request and
* a Both ports have interrupt-driven handshake prioritized interrupt-request daisy chains
for fasí response. implemented without externa! logic.
a Four programmable operating modes: byte The eight Port B ouíputs can drive Dar-
input, byte output, byte input/outpuí (Port A lington transistors (1.5 mA at 1.5 V).
only), and bit input/output.

General The Z-80 PIÓ Paralieí I/O Circuit is a pro- interrupt control. The interrupt Íogic of íhe
Descripüon grammable, dual-port device that provides a PIÓ permits full use of the efficient interrupt
TTL-compatible interface between peripherai capabiiities of the Z-80 CPU during i/O
devices and the Z-80 CPU. The CPU con- transfers. All logic necessary to impíement a
figures the Z-80 PIÓ to inierface with a wide fuíly nested interrupt structure is included in
range of peripherai devices with no other the PIÓ.
external Íogic. Typicaí peripherai devices that Anoíher feature is that the PIÓ can be pro-
are compatible with the Z-80 PÍO include most grammed to interrupt the CPU on the occur-
keyboards, paper tape readers and punches, rence of specified status conditions in the per-
r printers, PROM programmers, etc. ipheral device. For exampíe, the PIÓ can be
One characteristic of the Z-80 PIÓ that programmed to interrupt if any speciñed per-
separates it from other interface controílers is ipheral aíarm conditions should occur. This
that all data transfer between the peripheral interrupt capability reduces the time the pro-
device and the CPU is accomplished under cessor musí spend in polling peripheral status
-. ~ DO Ao
~ °1 AI
~D 2 A,

DATA ~ ba" • A3
DI r i -10 U 03
BUS
- D. A, D-f \ 39 I] o«
_ _ > PORT A °5 C 3
38 D °5

DS A*
CE p 4 URÍ
-. .- D7 AT CÍO C 5 3G J IORO
B/A P B 35 J RD

H B/A SEL ARDY A7 Q 7 34 I] B7

CID SEL ASTB AS C 3 33 D B,

ASQ 9 32 I] B5
CE Z-80 PIÓ Bo A i £ ] 10 31
- z-ao pío
MI GND Q 11 30 JBS'
BI

-
" RD
10RQ 3j
B3
A3 9 12
A P 13
2
29

28
J B;

I] 31

A, fj 14 27 J B0

*- > PORT 3
Aq [J 15 25 U -rSV

GND a¡ ASTB fj 16 25 D CL|<


3; asTI F] 17 24 JlQ
CLK ARDY Q 18 23 ] ÍÑf

BRDY DQ rj l9 22 U 1EO
-, ¡NT" BSTB D, Q 20 31 I] BRDY
IHTERRUPT
CONTROL
IEI

IED

Figure 1. Pin Functions Figure 2. Pin Assignments

CS03S-029S
^ontinued) designated Port A and Port B. Each port has
i^» separaíe, individuaíly defined bits for each
eight data bits and two handshake signáis,
fíeady and Strobe, which control data íransfer. port. During operation, Ready and Strobe ar
The Ready output indicates to the peripheraí not used. Instead, an interrupt is generated i
that the port ís ready for a data transfer. the condition of one input changes, or if al!
Strobe is an input from the peripheraí that inpuís change. The requirements for gener-
indicates a data transfer has occurred. atíng an infcerrupí are defined during the pro
Operating Modes. The Z-80 ports can be pro- gramming operaíion; íhe active leve! is
grammed to opérate in four modes: byte output specified as either High or Low, and fche logi
(Mode 0), byte input (Mode 1), byte input/out- condition is specified as either one input acti
put (Mode 2) and bit input/output (Mode 3). (OR), or al! inpuís active (AND). For exampí
ín Mode O, either Port A or Port B can be if íhe porí is programmed for active Low
programmed to ouíput data. Both ports have inpuís, and the logic function is AND, íhen a
outpui regisíers that are individually addressed inputs at the specified porí must go Low to
by the CPU; data can be written to either port aenerate an iníerruot.
at any time. When data is.writíen to a port, an
active Ready output indícales to the external SYSTEM
device that data is available at the assocíated ausEs

port, and is ready for transfer ío íhe external


device. After the data transfer, the external
device responds with an active Strobe input, yl N,

which generates an inierrupt, if enabled. \


CPU
ín Mode 1, either Port A or Port B can be
configured in the input rnode. Each port has
an input register addressed by the CPU. When
the CPU reads data from a port, the PIÓ sets
the Ready signa!, which is sensed by the exter-
na! device. The externa! device then places -iV

data on the I/O Unes and strobes íhe I/O port, T


T

which latches the data into the Port Input zcrro,


1EI

Register, reseís Ready, and triggers íhe íníer- CTC


ZOTOi INT
rupt Request, if enabled. The CPU can read IEO
íhe input data ai any time, which again seis
T
Ready.
Mode 2 is bidirectional and uses Port A, H*CA JÑT INT

p!us the ínterrupts and handshake signáis from


L_ TICA IEO IE1

ñiCB
both ports. Port B must be set to Mode 3, and TxCB
must be masked off. In operation, Port A is
used for both data input and output. Ouíput
operation is similar to Mode O except data is SIO

allowed out onto íhe Port A bus only when


ASTB is Low. For inpuí, operaíion is similar to
Mode 1, except that íhe data input uses the \^
Port B handshake signáis and the Port B inter-
rupt (íf enabled). Figure 3. PIÓ Ín a Typícal Z8Q Family Environmen

C6036-
8279/8279-5
PROGRAMMABLE'KEYBOARD/DISPLAY ¡NTERFAC
a Slmultaneous Keyboard Display a Single 16-Character Dispiay
Operations
3 Ríghi or Laíi Eníry 16-Byte Display
a Scanned Keyboard Moda RAM
n Scanned Sensor Mode a Mode Programmable from CPU
a Sírobed Inpuí Eníry Moda 3 Programmable Sean Timing
E S-Characler Ksyboard PIFO « Iníerrupt Outpuí on Key Eníry
a 2-Key Lockouí or N-Key Roüover with
a Available in EXPRESS
Contad Debounca
—Standard Temperatura Range
*»&>'•' -'"'V^r'^v^^.' e Dual S- or 16-NumericaI Dispiay —Extended Temperatura Range
The Intel™ S279 is a general purpose programmable keyboard and display ¡/O ¡nlerface tíevice designed for use with
Iniel5 microprocessors. The keyboard portion can provitíe a scanned interface to a 6-i-contact fcey maínx. The
keyboard portion will aiso ¡nterface (o an array of sensors or-a strobetí interface keyboard, such as [he hall effecí and
ferrttc- vanely. Key depressions can be 2-kuy lockout or H-key roiiover. Keyboard entrtes are debounced and sirobsd-in
an 8-cnaracter r!FO. If more thsn 3 characiürs are eníeretí. overrun status is set. Key sntries set íhe interrupl oulpul
Une to ttífe CPU.
• The display portion provides a scanned display inlerfsce for LEO, incandescent, and other popular display
' technologies. Both numeric and alphanumeric segmeni disptaya may be used as well as simple indícators. The 3279
; has 16X8 display F.A.M which can be organizsd into dual 16X¿. Th3 HAW can be foaded orinterrogaíed by íhe CPU. Both
rignt entn/, catculator and left enír/ typewriler display formáis are possible. Eoíh read and v/rite of ¡he display RAM
; can be clone v/tlh aulo-incremenl of íhe display RAM address. :
\ .

- -ÍEYOATA

Figure 1. Logic Symbol Figure 2. Pin Confíguraíion

5-37*1

HARDWARE DESCñlPTlON
The 5279 is packaged in a 40 pin DIP. The following is
3 íunctional description of each pin.

Tafale 1. Pin Descripiions

Pin Pin
Symbcl No. Ñame and runction Symboí No. Ñame and Funcílon
DB0-DB7 19-! 2 Si-dlrectíocnl dota bus: AI! data SH1FT 36 Shlít: The shift ¡nput siatus is
and commands beiween ihe CPU siored along with the !tey position
and the 3279 are transmitied on on key closure ín the Scanned Key-
these linas. board modes. !í has an active in-
Clocic: Clock from-sysiem used to ternal pullup to keep it high until a
CLK 3
genérate i/iternal íiming. switch closure pulís ¡t low.

Roaet: Ahíghsignalon Ihispin re- CNTL'STB 37 Conírol/Sírobed Input Mode: For


HE5ET 9
sets the 8279. Afte.- barng reset tha keyboard modes thís une is used
8279 is placed ¡n the following as a control Input and stored Hke
motíe; status on 3 key ciosure. The line
1) 16 8-bi£ characíer display is also the strobe line that enters
— le/t entry, the data ¡ruó the FIFQ tn the -
2) Encodcd sean Iteyboard-— 2 31,-obed Input mode.
key locSíout.
. (Rising Edge). It ñas an active in-
Along '.vith this the program dock
prescaleris set to 31. ternal pullup ¡o keep It high uníll
a switch closure pulís it low.
es Chip Select: A lew on ihis pin en-
ables the interface'functíons to OUT Ao-OUT A3 27-2-1 Ouípula: These tv/o ports are the
recaive or íransmií. OUT 30-OUT 3j 31-28 ouíputs for the 16 x 4 tíisplay re-
íresh registers. The data /rom
A, 21 Buííer Adriress; A high on. this these outputs ¡s synchrcnized to
line indícales the signáis in or out the sean unes (SLg-SL]) /or multl-
are Interpreted as a command or plexed cigit displays. The twa -
status. A lov/ indícalas that they bit ports may De blanked inde-
are data. pendently. These íwo porís may
RO. VVR 10-11 Input/Qutput R e a d and Write: also be considerad as one 8-bit
Theso signáis enable the data port.
bu/fers lo either sene data to the ao 23 31ank DUplay: Thís ouiput is
exisrnal bus or recsive it Irom ¡he used lo blanfí the díspfay during
external bus. dlgit switching or by a dlsplay
IRQ Interrupt Raqueat: In a key- blanking command.
board rr.ode, the interrupt line is
high when there is data in the
FIFO/Sensor RAM. The ¡nterrupt
líne goes low v/ith each FIFO/
Sensor RAM read and returns
high ií there is still in/orrnatlon in
the RAM. In a sensor mode. fhe : UNCT!ONAL DESCRÍPTiON
Intsrrupt ítne goes high whenever
a cíiange In a sensor is datecíed.
Vss- Vcc m^o Groiind and power supply pina. Smce dala input and display are an integral psrt oí many
SLi-SL.3 22-35 Sean Unes: Sean Unes whlch are microprocessor designs. [he system designar needs an
used to sean Ihe ksy switch or ¡msrface that can control these funclions without placing
sensor matrix and the dísolay a large load on the CPU. The S279 provides this function .:
1 dlgjts. These fines can be either for 3-bít rnícroprocessqrs.
j encoded (1 of 16) or decoded (1
0/4).
The 6279 has tv/o sections: keyboartí and disoisy. The
ke'/board section can inferíase to regular typewntersíyie
; HU-RL7 28. Heturn Une: Rettirn Une inpms
keycoards or rantíom tcggie ot tnumb s\vitches. The
39. •ivhicn are connecíed ío the sean
display seclion dnves alphanumenc úisplays or a bank ot
1.2. lines through ihe keys or sensor
3-8 sv/itches, They nave acsive internal indicator iignts, Thus the CPU is relievea (rom scannmg
pudúes ío keep ihem htgn until a the keyhoard or re/resning the display.
switcn closure pulís one low. They The 3279 is designed to directly connect to ihe
also ser/e as an S-bü input ¡n (he microprocessor bus. The CPU can program all operatlng.
Slrooetí Input mooe.
modas /or the 327S. These modes in ¡ude.

6-375
•ABSOLUTE MÁXIMUM RATINGS*
Máximum P.atlngs" may cause permanent damage ío i
device. Thís is a stress rating only and funcional opera-
Ambient Temperatura' . O C to 70 C tlon of ihe device af ¡hese or any other conditions above
Storage Temperatura -G5°C to 125'C those indicated ín the operatlona! sectíons of íhls specifi-
Voltage on any Pin wíth catfon ¡s not implied. Exposure to absoluta máximum
Respect 10 Ground raíing condhíons (or extended periods may affeci devlce
Power Díssipation relia biliíy.

D.C. CHARACiERISiICS [TA = o°cío 7oDc. vss = ov.(NOT£3}]-

Symbol Parametsr MIn. | Max. Uní! Tast CondHions

VILI Inpui Lov/ Voltace for -0.5 1.4 V


Return Lines
VILT ! Input Low Voltage for Ail Others j -0.3 0.8 V

V|H1 Input Hicñ Voltaga íor 2,2 V


Return Lines
V¡H2 | Inpui Kich Voltage for All Others 2.0 V

Output Low Voltags 0.45 Note 1


Ouiput Hígh Voltage on Inierrupt 3.5 V Note 2
VOH1
Line
-¿00PA S2/S-5
VOH2 Olher Outputs 2.4 'OH - _ioo ^A £279

'ID Input Currsnt on Shíít, Control and •MO ^A VIN = VCc


Return Lines -100 ííA V,N = OV
I|L2 I Input Leakage Curreni on All Otfiers ! ±10 | pA VIM = vcc to ov
! OFL Output Fíoat LaaJage = 10 j ^A VoUT = VCC ÍO 0.45V

'ce Power Supply Curren: 1 20 | mA

CAPACITANCE
Symbol Parametcr Typ. | Max. | Unit 'j Test Condltíona
CIN Input Capacitance 5 | 10 | PF fr; = 1 MHz Unmsasured
COUT Output Capacitance j 10 j 20 | pF pins rsturned £o Vsg

A.C. CHAHACTHRISTICS 70-c, Vss = ov, (Note 3)]


Bus paramaters
READ CYCLE

8279 | 8279-5
Symbol Parameter MIn. Max. | MIn. | Max. Unit
UR Address Stable Sefore RÉAD | 50 I o | ns
.-•;.-,;-^í :••*-?. "'
•'•• :¿s¿. •.•-*<=.-:* i IRA Address Hold Time íor REAO •- j 5
! 0 J Í ™
'RR READ Pulsa Width 1 420 ! 250 Í i ns

r ¡RO f ' J Data Oelay from READ. | 300 1 i i 50 j ns


WJ3 Address to Data Valid 450 | | 250 ns
.
HEAD to Data rfoatíng ¡ 10 100 j 10 1 J 100 ns
[RCY Read Cycle Time 1 1 1 "S
1
WRITS CYCLH
8279 8279o !
Symbol Parameter Mln. Max. | Mln. Max. i Unít

IAW Address Stable 8efore WRITE SO 0 I ns


t
H'/A Address Hoid Time for WF.lTE 20 o ! ns

1WW WRITE Pulse Width 400 250 ! ns

1DW
Daia Set Up Time for WRITE 300 150 ! ns
1WD Data Hold Time for WRITE 40 | 0 ¡ ( ns
lwcr V^rite Cycle Time 1
1 1 1 I "*

OTHERTIMINGS
i
8279 8279-5 | |
Symbol f Parameter Mln. Max. Min. Mas. ; Unit ¡
toW 1 C!ock Pulse Widlh ¡ 230 120 ' nsec í
tcv ; Ciock Period 500 320 j nsec !

Keyboard Sean Time 5.1 msec Dígít-on Time 480 pisec


Keyboard Debounce Time , 10.3 msoc Blankíng Time 160 ¿isec
Key Sean Time 80 /¿sec Internal Clock Cyclef5' 10 -
Display Sean Time 10.3 msec

NOTES:
1. 3279. IOL =* l.SmA; 3279-5, IOL. » 2.2mA.
2. IOH a -lOOfiA
3. 3279. Vcc = -5V =5%; 8279-5. Vcc = -r5V r 10%.
4. 3279, CL = lOOpF; 3279-5. CL - ISOpr.
5. The Prescslar snould be programmed to provide a 10 /¿s íníernal cíock cycle.
' ?or Extended Temoeralure EXPRESS, use M8279A eléctrica! parameters.

A.C. TESTING INPUT, OUTPUTV/AVEFORM A.C. TESTING LOAD CIRCUIT

IHPUT/OUTPU7

•-*;"' •;; •' . ;'^.*:*•-•"•*';'",-•

A C. TESTIfíQ; IHPUTS «HE DHIVEH AT ZíV FOR A UOGIC * t * ANO O -=5V ?OR
A LOGIC 3 nUlMG MSASUñEMENTS AflE WADE AT J.OV FOfl A LOGIC -1" CL - lío D?
VIQOflVFOHALOGlC 0.' Ct(MCLUDSS JIG CAPACTTAÍtCE
DISPLAY

-,<-••ív^-l
"J*"*-''..;?.'£.- •"t í
V
/ V J
^^
1 i ftL, SI, ^ 1 ai, ai, 1 «t, 1 *u f-,u «U 1 HL
1 t Ui 1 ! ' U j "Ll 1 1 ' \ 1 "Li
C01I01TIONAL WP.ITE TO FIFO
flU SELECTEQ, LAICHED

NOTE; SUQWN |S ENCODEa SCAfl LE.-T ENIRÍ


3,01 ¿RE NO! SHOWN 3UT TUFf *flE SIHPLY S! OIVIOEC 3T 7 AHO •<

:
Semiconductor Temperatura
StorageTemp
NMC2732 32k-Bit (4k x 8) UV Erasable PROM AII Inpuí and
with Resp
VPP SuppíyV
General Description Features to VSS Dur
PowerOissíp
The NMC2732 Is a 32,768-blt EPROM operatlng (rom a • SingleSVpowersupply
single 5V power supply. Thís device is an ultraviolet » 450 nsmax access time LeadTemper
erasable, electrlcally programmable, read only memory
» Low power:
fabrícated using National's hlgh speed, low power, sillcon
gate technology.
Active—150 mA max READ O
Standby-—30 mA max
Thls device is deselected when pin 18 Is high and automat- • Fullystatlc DC Oper
Ically placed in the standby mode. Thís mode provides an • TRI-STATE® output
80% reduction ¡n power wlth no íncrease in access time.
• AIII/OpInsTTLcompatible Symbol
The NMC2732 has an output enable control to elimínate
bus contention In mlcroprocessorsystems. • Pin compatible with exístlng EPROMs and ROMs
1LI1
• Output enable control
Bits may be programmed at random, ¡n sequence or sin- ILI2
gly. Typical erasure time Is 20 minutes using a 12 mW/cm2
ICC1
ultraviolet lamp.
1CC2
VIL
Block and Connection Diagrams* VIH
Dual-ln-LIne Package VOL
CND
VCC VPP (VSS1
VOH

I II
SV !5V GNU

AC Char
Sym
Altérnate

IACC
'CE
toe

'OH
tPF

Capacíta
Order Number NMC2732Q
Sea NS Package J24CQ Symbol

Pin Name/Number CIN1 Inp


Pin Ñames*
CE OE/VPP (G/
VCC Outputs CE(É) Chlp Enable
Mode (É) (G/VPP) C1N2 OE
24 9-11, 13-17 OE(G) Ouíput Enable
18 20
AO-An Address Inputs COUT JQu
Read VIL VIL 5V DOUT
OQ-O7(Q1-Q8) Data Ouíputs
Standby VIH Don't Care 5V HÍ-Z
VPP Program Power 25V
Program VIL 25V 5V DIN
VCC Power 5V Nota i; "Abso
Program Verífy VIL VIL 5V DOUT Hange" ttiay ar
GND(VSS) Ground Oiltons (or actu
Program Inhibit VIH 25V 5V HI-Z
Nota2: 7yplca
Note 3: CaDac
• Symools in oarenineaes are prooosed Inoustry standard,
lesilng.

5-66
SíorageTemperature -65°Cto +125'C
All Input and Output Voltages + 6V to - 0.3V
wíth Respect io VSS During Read
VPP Supply Volíage with Respect + 26.5V to - 0.3V
to VSS During Programmlng
Power Dissípation 1.5W
LeadTemperature(Solder¡ng,10seconds) 300°C

READ OPERATION
DC Operating Characíeristics(Note2) TA=o°cto7o g c,vcc~5v±5% I vss=ov
Symbo! Parame-ter Conditions Min Max Units
ngEPROMsandROMs
ILI1 Input Load Current = S.25V 10

ILI2 OE/VPP Input Load Current 300


ICCl VCC Current Standby 15 30 mA
ICC2 85 150 mA
VIL Input Low Voltage -0.1

VIH 2.0 VCC-rl

Package VOL Output Lov/ Voltage 0.45

VOH Output High Voltage IOH= 2.4

AC Characíeristics7A=o°cto7o o c,vcc=:5v±5%,vss=ov
Symbol
Parameter Conditions Min Typ Max Units
Altérnate I Standard
AIO Address to Outouí Valid
ÍACC TAVQV 450
— CCiÉ) ICE TELQV C5 toOutput Delay
t OE I TGLOV I Output Enable lo Output Delay Ce = VIL 120

IDF TGHOZ Output Enable High to Output Hi-Z TOO

ÍOH TAXOX
— 05(Q6)
TEHOZ Ce (E) to Output Hi-Z 100
— 04|Q5I

— Oj(Q4|

Capacitance (Note3)TA^25 fl c, [=1 MHZ


NMC2732Q ACTest Conditions
jge J24CQ Symbol Parameíer Conditions Typ Max Units
Outpuí Load; 1 TTLgate and CL=100 p
CIN1 Input Capacitance Except OE/VPP VIN = OV 4 5 pF Input Rise and Fall Times: ¿20 ns
(G/VPP) Input Pulse Levéis: 0.8V to 2.2V
líiíp Enable Timing Measurement Reference Level:
CIN2 OÉ/VPP (G/VPP) Input Capacitance VIN=OV 20 pF
)uíput Enable Inpuís iVand2V
tódress Inputs COUT Output Capacitance VOUT^OV 12 pF Outputs 0.8V and 2V
)ata Outputs
*rogrsm Power 25V
'ower 5V Note i: "Absoiute Máximum flatmgs" are Ihose valúes beyond wíilcn tne safely o( ttie devlce cannol be guarameed. Except for "Operallng Temoerature
3round Ranga" tney are not meanl lo ímoly tnat tneaevices snould be operatec at tnese limits.The taole of "flecommended DC Ooeratlng Condlllons" provides con-
Oltions for actual device ooeralion.
Mole 2; Typical valúes ate lorTA = 25*C and nominal suopiyvoltages.
Note 3; Caaacitance measured wltn Boonton Meter or ef fectlve caoacitance calculated ítom tne equatlon C = lAÜiV. Caoacllance Is guaranteed by perloaic
lesilng.

5-67
DC Charact
RaadCycle(CÉ = Symbol

¡U Input

ADDRESSES VALIÓ VALIÓ VOL Ouípu


VOH Outp
- : QH ,~»n ICC VCC
[TAXQX}"
VIH VIL Inpuí
VIH Input
VIL
IPP VPP
'(TGLüV) _
(TGHQZ)
VOH
"(TAVQV)" AC Charac
Hi-Z
OUTPUT VALIÓ Symbol
VOL
Altérnate Sta
TAVE
TVPP
tos TDV

TEH
ReadCycIe(OE(G) = VIL)
TEH
TEHD
ADÜRESSES VALIÓ VALIÓ
TEH
tov TELQ
tpw TcLE
VIH
TVP
CE
VIL
'PF
'ACÓ "(TELQV)
[TAVQV)
VOH \Z
Hi-Z VALIÓ
OUTPUT
VOL

ADORESSES

Slandby Power Down Mode(OE= VIL) O ATA

VIH
AOORESSES VALIÓ VALIÓ
VIL

QE/VPP
tTELQVl
VIH
STAND B Y ACTIVE STANOBY
VIL

I ACC
(TAVQV)
_VIH-
VAL1D FOR VALIÓ FOR C£
QUTPUT VIL-
CURRENT AOORESS CURREWT AODRESS
VOL

Note -t: Tne Inoul t

* Symools ln patentnasea ara propasad inauslry slantíard. • Symools ln parent

5-63
DC CharacteristicsTA=25 a c=5 a c, vcc=5v±5%,vpp=25v±iv
Symbol Parameter Condltions Mln Typ Max Units
ILI Input Current All Inputs = VILorVIH 10

VOL Output Low Voltage During Verlfy 1OL= 2,1 mA 0.45

VOH Output High Voltage During Verlfy IOH = - 400 ¡A 2.4


ICC VCCSupply Current 85 150 mA

-0.1
r VIL

VIH Input High Leve! All Inpuis Except OE/VPP 2.0


0.8

VCC-fl

IPP VPPSupply Current = V1L,OE = 30 mA

AC CharacteristicsTA=25°Ci;5 o c 1 vcc=5V = 5
Hi-Z
Symbol
Parameter Condhions Mln Typ Max Unlts
Altérnate Standard

IA TAVEL AddressSet-UpTIme /IS

1OE5 TVPPHEL Program Voltage Set-Up Time


TDVEL | Data Set-Up Time 2 |
ITEHAX AddressHoldTlme
TEHVPPL OEHoldTime
TEHDX Data Hold Time
VfiLID
TEHQZ Chip Enable lo Output HI-Z 120
TELOV DataValid fromCE" ÓT=V[L
t pw | TELEH CE Pulse Wldth During Programming 45 50 55
tVH ITVPPLEL VPP RecoveryTime

Programmíng Waveforms* (Note4)TA=25 a c=5 o c,vcc=5v=:5% 1 vpp=25v±iv


Hi-Z
-PROGRAM-

AODRESSES

DATA

OÉ/VPP

STANOBY

HÍ-Z

Note -t: The inoui tltning laíefsnce level ls IV lor VIL ana 2V for VIH.
• Symbols In oarentnesos are prooosed Indusify standard.

5-59
VPP Supply Volt
to VSS

MM2716M 16,384-Bit (2048 x 8) UV Erasable PROM READ OP


Military Temperature Range DC Opera
TA = -55° C to
General Description Features
The MM2716M is a high speed 16k UV erasable and « -55°C to -f125°C
electrically reprogrammable EPROM ¡deally suíted for • 2048 x 8 organization ILI
applications where fast turn-around and pattern ex- • 632 mW max active power, 150 mW max standby ILO
perimentation are important requirements. power
• Low power during programming
The MM2716M ¡s packaged in a 24-pin dual-in-line
package with transparent lid. The transparent lid allows » Access time — 450 ns
the user to expose the chip to ultraviolet light to erase • Single 5V ±10% power supply ICC2
the bit pattern. A new pattern can then be written into • Static—no docks required
the device by following the programming procedure. • Inputs and outputs TTL compatible during both
VIH
read and program modes
Thls EPHOM ¡s fabricated with the relíable, high volume, VOH
"• TRI-STATE® output
time proven, N-channe! silicon gate technology.
VOL

Block and Connection Diagrams- AC Chara


DuaI-|n-L¡ne Package
TA = -55° C to
VPP-5V
VCC-SV
SYMBOL
VSS G\ ALTÉRNATE!ST
DATA QUTPUTS IPRQGHaM INPUTSI
-07 (QO-Q7)
'CE
tOE

ÜAIO IDF
— Cf/PGMif/P]
tOH

IOD

0 6 |QG]
Capacrtan
O j (Olí — 05 (051
T A =2S°C, f =
QZ (Q2|-^ — 0 4 |<M)
SYMBOL
— 0 3 (Q31
Cl

CO

Order Number MM2716QM


Pin Connection During Read or Program See NS Package J24CQ
Pin Narnes
PIN NAME/NUMBER Note 1: "Absolu
AO-A10 Address Inputs Temcerature Han
CÉ/PGM OE provides condítio
MODE VPP VCC OUTPUTS Ofj-Q7 (QO-Q7) Data Outputs
(E/P) (Gí Note 2: Typical
18 20 21 24 9-11.13-17 CE/PGM (E/P) Chip Enable/Program Note 3: VPP ma
OE (G) OutpuT Enable ano tne program
Read VIL VIL 5 5 OOUT
VPP Read 5V, Program 25V Note AI Output l
Program Pulsed VIL VIH 25 5 DIN VCC Power (5V) Nota 5: Capacita
to VIH VSS Ground
'Svmbols m parentheses ara procosed ¡ndustrv standard
a-24
VPP Supply Vohagewitfi Résped Power Oissipat on 1.5W
to VSS 2 6 , 5 V t o — 0.3V Lead Temperature (Soldering, 10 seconds) 300°C

)M READ OPERATION (Note 2)


DC Operating Characteristics
TA = -55 0 Cto+125 0 C,VCC = 5V±lO%, VPP = VCC ±0.6V (Note 3), VSS = OV, uniess otherwise noted.

SYMBOL PARAMETER CONDITIONS MIN TYP MAX UNITS

ILl Input Current VIN = 5.5Vor VIN = VIL 10 pA

150 míV max siandby I LO Output Leakage Current VOUT= 5.5V, CE/PGM = 5V 10 pA

1PP1 VPP Suoply Current VPP = 6.1V 5 mA


ng
ICC1 VCC Supply Current (Standby) CE/PGM = VIH, oe = VIL 10 30 mA

ICC2 VCC Supply Current (Active) CE/PGM = OÉ = VIL 57 115 mA

VIL Input Low Voltage -0.! 0.8 V


ímpatitte duríng both 2.0
VIH Input High Voltage Vcc + 1 V

VOH Output High Voltage 1OH = -400.LiA 2.4 V

» : VOL Output Low Voltage IOL=2.1 mA 0.45 V

AC Characteristics (Note 4)
Líne Paekage
TA = -55° C to +125°C, VCC = 5V ±10%, VPP = VCC ¿0.6V (Note 3|, VSS = OV, unless otnerwise noted.

J SYMBOL
23
PARAMETER CONDITIONS MIN MAX UNITS
ALTÉRNATE STANDARD

r ACC
TAVQV Address to Output Deiay CE/PGM = OE » VI L 450 ns

ICE TELQV E to Output Delay OE = VIL 450 ns

10 E TGLQV Output Enable to Output Oelay CE/PGM = VIL 150 ns

IDF TGHQ2 Output Enable High to Outpu: H¡-Z CE/PGM = VIL 0 130 ns

— CE/PCM I&PÍ ton TAXQX Address to Output Hold CE/PGM = OE = VIL 0 ns

IOD TEHOZ E to Output HÍ-Z OE = VIL 0 130 ns

— Q5IQ6I
Capacrtance (Notes)
TA = 25°C, f = l MHz

SYMBOL PARAMETER CONDITIONS TYP MAX UNITS


13
— OjIEUI
CI Input Capacítance VIN = OV 4 o PF

PVJEW CO Output Caoacitance VOUT = OV 8 12

>erMM2716ÜM
lckage,J24CQ

Note 1: "Absolute Máximum Ratlngs" are thase valúes beyond which the safety of the device cannot be guaranteed. Except for "Operating
Temperature Range" they are not meant to imply that the devices should be operated ai these limits. The table of "Electrical Characteristics"
Address Inpuis
provides conditions for actual device operation.
Data Oiíiputs
Note 2: Typical conditions are for operation at: TA = 25° C, VCC = 5V, VPP = VCC, and VSS = OV.
Chip &ab le; Program Note 3: VPP may be connected to VCC except dunng program, The :0.6V tolerance allows a circuít to switcn VPP between the read voltage
Dutput Enable ana ttie orogram voltage.
Read 5V, Program 25V Note 4; Output load: 1 TTL gate and CL = 100 pF. Input rise and fall times < 20 ns.
3ower (5V ) Note 5: Capacltance is guaranteed by periodíc testing.
¿round

5-25
•t
•i
DC Elé
(TA = 25°
Read Cyc e (CE/PGM = VIL)

SYMBOL

ADDRESSES ^^/^%%^\° X VAÜ ° 1LI


VIL / /
U- 'OH _^_, VIL
1 1TAXQX) |
VIH
VIH V T
aUTPUTENABLE \ ICC
VIL \
1PP1

_^ 'ACC ¡TGHQZ) IPP2


, „ ""* (TAVQV) *~L .
Hi'Z / u i rm l\¿
VOL \

Read Cycle (OE = VILJ


AC Ch

S
ADORESSES Í^^^^^X VALID JA VALID

ALTÉRNA
1 , 'OH .!
1 (TAXQX) |
tAS
VIH • • V . 3-
CH1P.ENABLE \ / íOS
VIL • -\
tos
1—. «J 'CE IQD
(TELQV) (TEHQZ) —*"* """ *AH
VDH rtr-T -Jf \7 «OH
vni. • -\ ÍDH

* AOORESSES
VIH

VIL
VALID
Standby Power Down Mode (OE - V| L)

V-f
)d
/-V
VALID
tCE

ÍPW

IPR

tpp

Note 1:
tne devic
VIH yf V ULLUM . No e 2:
CHIP ENABLE / STANDBY \ ACTIVE / STANDBY No e 3:
VIL j \ No e 4:
i EQQ 'ACC No a 5:
No e 6:

OUTPUT ' V A L I D FDH l\'"¿ Á VALID FOR \"¿


CUHñEíJT AOORESS I/ \T ADORESS /

*Syinbols in poreniheses are proposed índusiry standard

5-26
DC Eléctrica! Characteristics and Operating Conditions (Notes 1 and 2)
HA = 25°C =5°C) (VCC = 5V ±5%, VPP = 25V ±1 V)

SYMBOL PARAMETER MIN ! TYP MAX UN1T


VALID
ILI Input Leakage Current [Noie 3) 10 M

. VIL Input Low Leve] -0.1 | 0.8 V


"(TAtQXl"
VIH Input High Leve! 2.0 VCC * 1 V

ICC VCC Power Supply Current 100 mA

IPPl VPP Supply Current (Note 4) 5 mA

IPP2 VPP Supply Current During 30 mA


Hi-Z Programming Pulse (Note 5)

AC Characteristics and Operating Conditions (Notes i, 2, ande)


(TA = 25=C ±5°C] (VCC = 5V ¿5%, VPP = 25V ±1V}

VALIÓ SYMBOL
PARAMETER MIN TYP MAX UNI
ALTÉRNATE STANDARD

IAS TAVPH Address Setup Time 2 ^s

OE Setup Time 2
tos TGHPH Us

[ OD
ÍDS TDVPH Data Setup Time 2 íis

*AH TPLAX Address Hold Time 2 Ms

OEHoldTime 2 ns
ton TPLGX

tQH TPLDX Data Hold Time 2 ÍJS

tDF TGHQZ Chíp Disable to Output rloat 0 130 ns


Delay (Note 4|

'CE TGLQV Chíp Enable to Output Delay (Note 4) 150 ns

tPW TPHPL Program Pulse Width | 45 50 55 ms

tpR TPH1PH2 Program Pulse Ríse Time 5 ns


VALID
tpF TPL2PL1 Prograrn Pulse Fall Time 5
I •»
Note 1: VCC must be apoüed at the same time or before VPP and removed after or ai the same time as VPP. To orevent damage
trie device it musí not be ¡nserted imo a board wíih power aoplied.
Note 2: Care musí be laken to prevent owershoot of the VPP supply when switching to -25V.
STAWOSY
Noie 3: 0.45V< VIN < 5.25V.
Note &: CE/PGM = VIL, VPP = VCC -r 0.6V.
Note 5: VPP = 26V.
Note 6; Transii on times < 20 ns unless noted otherwise.
.ID FOR
ÍT ADDEESS

5-27
L- 'AS ^__j \ IAH . -J
^ITAVPH ~ (IPLAXJ VALID ADDRESSX t
VIH - DATAIN STABL'E \Z _/ S Tu / D A T A IN STABLE o
GATA
HZM
VIL -
CUHRENTADOHESSX
i
/~
-f trF
ÍJ
\V
V \l A
[
IIGHQZI ~—j *—""~ ~| 1— ¡TGHQZÍ p
VJH- j l
G ITPIDX)""" L~~ \
VIL; / 'GS . T
(TDVPH1 'PW
_ 'OS IIPHPLJ
*~

r
ITGHP

&P
VIL- / 1 1 -t

'PR <PF
ITPHIPHZ]"""1 ^ "~^ ^* (TPUPL1)
Functionai Descrip Note: VPP = 25V
DEVICE OPERATION

The MM2716M has 3 modes c f operation in the normal Standby Mode (Power Down)
system environment. These are shown in Table .
The MM2716M may be powered down to the standby
Read Mode mode by making CE/PGM = VIH. This is independen! of
OE and automatrcally puts the outputs in their Hi-Z
The MM2716M read operatio i requires that OE = VIL, state. The power is reduced to 25% (150 mW max)
CE/PGM = VIL and that add resses AO— A10 have been of the normal operating power. VCC and VPP must
stabilized. Valid data will ap pear on the output pins be maintained at 5V. Access time at power up remaíns
after tACC» 'OE/ tQE times ( see Switching Time Wave- either t^QQ or t^g (see Switching Time Waveforms).
forms) depending on whích ¡s limiting.

Deselect Mode
PROGRAMMING
The MM2716M is deselected t y making OE = VIH. This
mode ¡s ¡ndependent of CE/f GM and the condition of The MM2716M ¡s shipped from National completely
the addresses. The outputs a re Hi-Z when OE = VIH. erased. AII bits will be at a "1" leve! (output high]
This allows OR-tying 2 or m are MM2716M's for mem- in this initial state and aíter any full erasure. Table II
ory expansión. shows the 3 programming modes,

TABLE I. OPERATING MODES (VCC = VPP = SV)


PIN NAME/NUMBER

MODE CE/PGM OE OUTPUTS


(E/P) (G) .
18 20 9-11,13-17
Read VIL VIL DOUT
Deselect Don'tCare VIH Hi-Z
Standby VIH Don't Care HÍ-Z

TABLE II. PROGRAMMING MODES (VCC = 5V)


PIN NAME/NUMBE R

MODE CE/PGM OE VPP OUTPUTS Q


(E/P) (G)
18 20 21 3-11, 13-17
P rogrsm PulsedVIL VIH 25 DIN
to VIH
Program Verify VIL VIL 25{5) DOUT
P rogram Inhibit VIL VIH 25 Hi-Z

*Symbals In parentheses are progosed industry standard

5-28
CMOS Static RAM IDT6116SA
16K(2Kx8-Bit) IDT6116LA

Features Description
* High-speed access and chip select times The IDT6116SA/LA is a 16,384-bit high-speed static RAM
- Military: 20/25/35/45/55/70/90/120/150ns(max.) organized as 2K x 8. It is fabricated usíng IDTs high-performance,
- Industrial: 20/25/35/45ns(max.) high-reüability CMOS technology.
- Commercial: 15/20/25/35/45ns(max.) Access times as íast as 15ns are avaiiable. The circuit also offers a
* Low-power consumption reduced power síandby mode. When CS goes HIGH, the circuit wil[
* Battery backup operation automatically go to, and remain in, a standby power mode, as long
- 2Vdata relention voltage (LA versión only) as CS remains HIGH. This capabiiity provides sígnificantsysíem levei
* Produced with advanced CMOS high-performance power and cooling savíngs. The low-power (LA) versión aiso offers a
technology battery backup data retention capabiiity where the circuit typícally
* CMOS process virtually eliminates alpha partióle soft-error consumes oníy 1 uWto4uW operating offa 2V battery.
rates AllinputsandoutputsofíhelDT6116SA/l_AareTTL-compatible.Fuily
* Input and output directly TTL-compatible static asynchronous circuitry is used, requiring no clocks or refreshing
* Static operation: no clocks or refresh required for operation.
* AvaÜable in ceramic and plástic 24-pin DIP, 24-pin Thin Dip, ThelDT6116SA/LAispackagedin 24-pin 600and300 mil plasticor
24-pin SOIC and 24-pin SOJ ceramicDIP, 24-1 eadgull-wing SOIC, and24-leadJ-bendSOJproviding
"* Militan/ product compliant to MIL-STD-833, Class B high board-levei packing densiíies,
Military grade producí is manufactured in compliance to the latest
versión oí MIL-STD-883, Ciass B, making itideally suited to miütary
temperatureapplications demandingthe híghestleve! of performance and
reliability.

Functional Block Diagram

Vcc
128X123
ADDRESS MEMORY
DECODER GND
ARRAY

A 10


i/00 •
• I/O CONTROL
INPUT
DATA * ••
CIRCUIT
I/O 7
Yi\L

CIRCUIT

FEBRUARY 2001

©2QOO|nteg ratea QeviceTecíinoiogy. Inc. 050-3089/03


IDT6116SA/LA
CMOS StaticRAM 2K (16K x 8-Bit) Military, Commcrcíal, and Industrial Temperature Rangos

Recommended Operating Recommended DC


TemperatureandSupply Voltage Operating Conditions
Ambient Symboi Parameter Min. Typ. Max Unít
Grade Tempera ture GND Vcc
Vcc Supply Voltage 4.5 5.0 5.5?» V
Military -55°C to +125°C OV 5.0V ± 10%
GND Ground 0 0 0 V
Industrial -45°C to -i-850C OV 5.0V± 10%
VH InputHigh Voltage 2.2 3.5 Vcc f 0.5 V
Commercial 0°C to +70°C OV 5.0V ± 10%
VIL Input Low Vottage -0.50 — 0.8 V

NOTES:
1. VIL (mtn.) = -3.0V for pulse wídth less than 20ns. once per cycle.
2. VIH must not exceed Vcc -t-O.SV.

DC Electrical Characteristics
(Vcc = 5.0V ± 10%)
IDT611BSA IDT6116LA

Symbol Parametef Test Conditions Min. Max Min. Max Unit

|IU[ Input Leakage Current Vcc = Max., MIL 10 5 pA


VIN = GND to Vcc COM'L — 5 — 2

]ILO¡ Output Leakage Current Vcc = Max., CS = VH, MIL 10 5 UA


Vour= GND to Vcc COM'L — 5 — 2

VOL Outpul Low Voltage !OL= 8mA, Vcc= Mía — 0.4 — 0.4 V

VOH Output High Voltage IOH = -4mA, Vcc = Mia 2.4 — 2.4 — V
3089 luí 07

DC Electrical Characteristics(1)
(Vcc = 5.0V ± 10%, Vuc = 0.2V, VHC = Vcc - 0.2V)
6116SA20 6116SA25 6116SA35
6116SA15 6TI61A2Q 6116LA25 6T16LA35

Com'l Comí Com'l Com'l.


SymboJ Parameter Power Only &lnd Mil &lnd Mil &Ind. Mil Unit
Icci Ooerating Power Supply Current SA 105 105 130 80 90 80 90 mA
CS < VIL Outouís Open
Vcc= Max., f . O LA 95 95 120 75 85 75 85

!CC2 Dvnamic Operating Current SA 150 130 150 120 135 100 115 mA
CS < VIL Outputs Open
Vcc = Max., f=fMAX a LA 140 120 140 no 125 95 105
ISB Standby Power Supply Current SA 40 40 50 40 45 25 35 mA
QTL Level)
CS> VIH, OutpuE Ofjen
Vcc = Max., f = ÍMAX'4 LA 35 35 45 35 40 25 30

ISB1 Full Standby Pov^er Supply Current SA 2 2 10 2 10 2 10 mA


[CMOS Level)
CS > VHC, Vcc = Max.,
VIN < VLC or Vw > VHC, f = 0 LA 0.1 0.1 0.9 0.1 0.9 0.1 0.9

3089 luí 08
NOTES:
1. All valúes are máximum guaranteed valúes.
2. ÍMAX = 1/tnc, oníy address inputs are cyding at ÍMAX. f = O means address inputs are noi changing.
IDT6116SA/LA
CMOS Static RAM 2K Í16K x 8-Bit) Mintarv. Commcrcial. and Industrial Temperatura Rangas

Pin Configurations Capacitance (TA= -t-2S0c, f = 1.0 MHZ)


SyniboJ Parameterí1' Conditions M ax Unit
A7 LZ LZ! Vcc
Input Capacitance VN = OV 3 pF
A6 LZ 2 23 Z3 As ^
A5 LZ 3 P24-2 ^ P A9 evo [/O Capacitance VOUT= OV i pF
A r £--*£- r..
i—
4 P24-1 anua
A3 LZ 5 D24-2 20
Z! OE NOTE:
A2 LZ 6 Zl AlO T- This parameter is determined by device characterization, but is not production
D24-1 ^^
A1 LZ 7 SO24-2 18 Zl CS *ested-
AO LZ 8 SO24-4 17 Z! I/07
i/oo tzj g 16 Z) I/O 6
1/01 q 10 15 Z3 I/OS
I/O 2 LZ 11 14 b I/04
GND LZ 12 13
=" I/03 Ab solute Máximum Ratinasí1)
3089drv/02
Symboí Raü'ng Comí. Mil. Unit
DIP/SOIC/SOJ VTERM21 Terminal Voltage -0.5 lo +7.0 -0.5 lo +7.0 V
wííh Respect
Top View to GND

TA Qperatmg 0 to +70 -55 to +125 3C


Temperatura
Pin Description
TBUS Tempera ture -55 to +125 -65 to +135 ac
Mame Description UnderBias

Ao - Aio Address Inputs TSTG Slorage Temperatura -55 to +125 -65 to +150 ac

l/Oo - I/O? Data InpuVOutput PT Power Dissipation 1.0 1.0 w


CS Chip Select loUT DC Output Current 50 50 mA

WÉ Write Enable NOTES:


1. Stresses greater than those Usted under ABSOLUTE MÁXIMUM RATINGS
OE Output Enable
may cause permanent damage to the device. This is a stress rating oniy and
Vcc Power functíonal operatíon of the device at these or any other conditions above those
indicated ín the operational sections of íhis specification is not impiied, Exposure
GND Ground to absolule máximum ratíng conditions for extended periods may affecí
relíability.
2. VTERM must not exceed Vcc +0.5V.

TruthTableí 1 )
Mocte CS OE WE L/0

Standby H X X High-Z

Read L L H DATAoui

Read L H H High-Z

WriE L X L DATAN

NOTE:
1. H = Vm, L = VIL.X = Oont Care.
O Semiconductor ,Digi

O
3
v— MICRÓ-DAC:™ - " ...
JZ
•*-* DAC1000 through DAC10Q8 10-Bit,>P Compatible, te
n^perature(
O
o Double-Buffered D to A Converters
o
O General Descripííon Features
The DAClOOOíhrough DAC1008 are adVanced CMOS/ • Uses easy to adjusí END POINTspecs, |
Q SÍ-Cr 10-, 9- and 8-bií accurate multíplyíng DACs ' STRAIGHTUNEFIT
C
whlch'are designad to interface directly wüh the
• Low powerconsumptlon •• : - : '' para
8080, 8048, 8085, Z-80 and other popular micro-
processors. These DACs áppear as a memory fú.
Direcí interface to all popular microprO'ces
locaíion or an I/O port to the fjp and no.' ¡nterfacing 1 *" ^
[ogic is needed. • iritegrated íhín film on CMOS structure ^ ? rity Error

These devices, combined with an external amplifler • Double-buffered, slngie-buffered or flow^thróí


digital data ¡nputs. ÜlrriGOl', 10
and voltage refprence, can be usad1 as standard D/A 5ÍC1002,10
converters; and they are very attractive for • Loads two 8-b¡t bytes or a single 10-bít
multíplyíng applications (such as digiially controlled
galn blocks) since thelr Ilneariiy error Is essentially • Logic inputs whlch meet T2L voltage-levefs ojnotonicity
(1.4Vlogic threshold). • n¿nOOO 10
Independant of the voltage reference. They become
equally attractlve in audlo • slgnal 'processing nAClOOl! 1
• Works wiíh ±10V reference — full 4-quadra^ OACl002.1
equipment as audio. gain.. controls or .. as- multlplication. "'" '-•-- 'R
programmable.atíenuators which marry hlgh quality 5iin Error
audlo signal processing to.dlgitally based systems • Operates STAND ALONE (without pp) If desíre
under mlcroprocessor control. • '.-- • Available in 0.3'-standard 20-pin and 0.6*.; Siin Error Te
AII of these DACs are double buffered. They can load package.
all 10 bits or two 8-bit bytes and the data format can • ftwer Supply
be either right justified or left justlfled. The analog
sectlon of .these DACs is essentlally the,same as íhat
of-trie. DAC1020. .. . . • Merance Inp
Kéy Specifications . flofH-2R lad
Accuticy
Pirt t ... Ibltí] !. Pin D«erioilon • OutputCurrentSettlingTime .Output Feed
OAC1DOO 10
Has all -
OAC1DQ1 9 . ioqlc '
• Resoiution ¡.
. 2* lealures
DAC1DOJ a • Lineariíy ' _ : ' ' ' lO(9,and8lj|Sj
•DAC1003 10
For iiqfil. (guaranteed over tempífo
•DAC10CM | 9 ' K -. lusllll^d *.. '• ^HWtj
•OAG1005 . a> • Oata,
• Gain'Tempco . -0.0003% of Fs/ar|
OAC1003 . w-
' For lefl-
DAC1007 : 9- 20' ¡Uíltfiea • ,Lpw Power Dissipation
oala
DACIOOfl ia (¡ncíuding ladder)
•Avaitaole on speclat o • Single Power Supply Bctlectr

Typical Application

n CONTROL
C5^

WH

Bíl» 1/Bvn ?
x^a
Supply Cur
^ytput Lea

' 1 II I Inp
PJJW Sta
_ i St
fclnput Cu

8-92.
' Digital Input-- _---.-- V c c toGND --'- '—'-- _(part numb'ér's with '.'LCD".suífix) .
^aíV REF lnput V¿ . " ' • ' • ' } ±25V /:- .. YC • _ , . .r-55°C to'+125*C
¡Range ' '" -—65'Cto +150"C ., . . f
". ..! (parí numbers with "LD" suffix)
:.T-..., .. .... •••• 0 g C t ó ' 7 0 ° C
^ e DÍ5SÍpatIonatT A ='25°C(Note3}. • . 875rrvW """ ' "J;
i (part number with LCN suífix)
í Applied tol OUTr or , . - ;'! ''" RanaeofV ' ' ' 5Vto'l6V D C
. \ -100mVtoV cc .. ñangeofy c c
•"•'"
K^peraturetsoldaring.lOseconds) ' 300 'C _' Voltage at Any Digital Inpuí

Vcc:= +l5VDClVREF=10.000VocandTA = 25'CunlessotherwIsestated'

Parameter Condltions MIn Typ Max Units


10 bits
Error v. -. . END POINT ÁDJUST ONLY (Note 5).
"¿AC1000, 1003 and.-1006 • i T MI N<T A <T MAX (Note.7) • . 0.05 % of FSR:
OAC1001, 1004 and'1007 -10V< V REF < +10V (Note 6) 0.1 % of FSR i
PAC1002, 1005 and 1008. -(Fordefinitíon of- FSR see. 0.2 . % of FSR .
: . fl Note8.) :, , ,. - -.,, ,- ..'.,
' uofiotonicity
pAClOOO,'1003'and 1006. . Bit
DAC1001, 1004 and 1007 - 9 , Bit .„..
- OAC1002, 1005 andjOOS ."BU ,;.3
.°¿o of FS'"1]
Using internal RFB resistor
ain Error Tempco • ,o¡ OT-S' -T M iN<T A <T M A x(Note7)- ; ^0.0003 .,!
s .. • Usíng Interna! RFB resistor
: power Supply Reje'ctíon . ( Dgtal ;^'.'0.003,.._ '% FSR/V.U
'vcc = 14Vto 16V
i Reíerence Input Reslstance 10 '15 20
flof R-2R ladder) ..
i,0utput Feedthrough Error . VñEF = 20VP,p, 100kHz, all digital
¡nputs low
D Package 130 mVP
N Package 90

^Electrical Characteristics v cc = ti5vDC,"vREF=io".ooovDC and TM,N <JA< TMAX (Note r¡


-.; uniess otherwise stated . - .4 .<~

Parametar Condltlons Min Typ Max Units

¡Jpply Current Drain (lcc) " 0.5 2.0 mA DC


, Leakage Currení at IQUTI 200 nA
2

Sfiftal Inputs
ftow Síate Threshoid 0.8 VDC
H'gh State Thresnoid 2.0 VDG
ilnput Curren: Digital Inputs < 0.8V -40 -150
Digital Inputs > 2.0V • 1.0 100

8-93
lour-j.Settling time ts V,L = OV V ] H =5V ' ;..; 500
^m
.Write and.XFER Pulse Wldth tw V]L = OV V|H = 5V _ '•;•••'_ :"'- _ 150 30 '.*'' 'm\
"Data Setup Time '' ' tos VlL = OV .V IH =5V ^ ' ." 0.
- Data. Hold Time 90
Control Setup Time tes VIL = OV V IH =5V 'o '
Control Hold Time tCH V|L = OV V |H =5V 10 0

Outpuí Capacitance
COUTi
All data inpuís high .250
"i"" 60- :
COUT-| " " _ • All data ¡nputs low - - - 60 --
250
™il
Notel: "Absolute Máximum Ratlngs" are those valúes beyond which the safety of trie devlce cannot be guTrí
speclflcations are not meant to imply that the devices shouid be operated at these absolute máximum limlts,.
Note 2: All'voltages are measured with respect to GND, unless otherwíse-speclfled.. '•" ' ' XXif;
Note 3: Thls 875 mW specíficatlon applles for all packages. The low Inírinsic power dissipatlon of thís parí (and the'fác
way to signiflcantly modify the power dissípatlon) removes concern for heat sinkíng and máximum Juncíion temperafúfc
TA = +125'C. • . . .
Note 4: For current switchíng applications, botn IOUTI and Ioui2 must go to ground or the "Virtual ,Ground"-o"(
ampllfier. For every milllvolt offset voltage on IQUTI or '01/12- °-°1°''0 Unearity error wíll be Introduced. . ". '' ' '"'•
Note 5: Thls guáranteos that after performing a zero and a full scafe ad[ustment (see Application Hínts), the ploís pf.'a..
analog voltage.outputs wíll each be wlthin 0.05% (Vi LSBJof a straight line which passes through the endpoints (zeró'knB'j
thís output voltage data plot. No adjustment Iteratlons are needed by the usar tosearch for the Best Straíght Une flt toread
reduces ad|ustment costs as compared with Best Stralght Une specífled DA.Cs.
Note 6: Tested at VREF= *10VDC and V REF = *1 VDC with the offset voltage of the externa! op amp nulled.
Note 7: TM[N = —iÓ'C and TMAX = 85*C for "LCD" sufflx parts. TM|N"= -55'C and- TMA¿=+125"C for part^-VItl
desígnatlon. Ty|^ = 0°C and TMAX= + ''O°C' 'or LCN sufflx designatJon. .•',.••••..--- %.
Nole 8: The unlt "FSR" 'stands for "full scale range." "Unearity Error" and "Power Supply Rejection" specs are based
elimínate dependence on a particular VñEp valué and to Indícate the true performance of the part. • ' —~ 'í1,1

n¿rand Connec

Switching Waveforms

CS, Byis 1/Byta 2

-j IOS j-— *] 'OH [»—


OATABITS VJH 50S _

[QUT1- I

8-94
Semiconductor
LF198/LF298/LF398, LF198A/LF398A
Monolithic Sámple and Hold Circuits
The ratio of output voltage swin r
'9 m the sample mode expressed General Description Features
The LF198/LF298/LF39S are monolithic sample and • Operates from ±5V to ±18V supplies
circuits whích utílíze BI-FET technology to obtain • Less than 10^is acquisition time .:
lg Time: The time requ¡red fOr th ultra-high de accuracy whh fast acquisition of sígnal and
droop rate. Operatíng. as a uníty gain follower, de « TTL, PMOS, CMOS compatible logic Ínput
thjn.1 mV Of final valué after the
ga¡n accuracy-is 0.002% typical and acquisition time is « 0.5_mV. typical hold step at Cn = O.OlfiF
as low as 6/JS to 0.01,%.. A bipolar input stage is used ta
. • Low input offset
he voltage step.atthe output of thÍ achieve' low offset voltage and" wíde bandwidth, Input
n switching frorn sample offset adjust is accomplished w¡th a single pin and does • 0.002% gain accuracy
*eady (de, analog ¡nput v noE degrade ínput offset drift. The wide bandwidth «• Low output noise Ín hold mode
allows the LF198 to be included inside the feedback
• Input characteristics do not change during hold mode
loop °í 1 MHz op amps without having stability
problems, Input impedance oí 10^íi allows high » High supply rejectíon ratio in sample orhold
soufce impedances to be used without degrading • Wide bandwidth
accuracy.

p-channel junctíon FET's are combined with bipolar Logic inputs on the LF198 are fully dífferential with
low input current, allowíng dírect connectíon to TTL,
devices in the output amplifier to give droop rates as
PMOS, and CMOS. Dífferential thresh'old is 1.4V. The
[ow as 5 mV/mín with a 1íxF hold capacitor. The JFET's
LF198 will operaie from ±5V to ±18V supplies. It is
have much lower-noise than MOS devices used in pre-
avaílable in an 8-lead TO-5 package.
vious designs and do not exhibit high temperature
instabilities. The overall desígn guarantees no feed-
through from input ío output ín the hold mode aven An "A" versión ís available wíth tightened eléctrica!
for Ínput signáis equal to the sUpply voltages. specifícations.

Functional Diagram

Typical Applications
Acqubrtíon Tima
plcal Connactíon

HQLDCAfACITQRbF)

7-1
_J Power Diíiipation (Package Limítatíon) (Note l) 500 mW Input Voltagé - ' - • ' . • ''Eüuai*tc

$
co
Operaling Ambient Temperatura Range
LF198/LF198A -55"C to+125 8 C.
, Logic To Logic Refarenca Oífferentíal Voltaga , (
¡Note 2) . . ' \. 7, „ •
OutpuiShort Circuit Duratíon .
. -ft ;¡-¡
LF298 -25°C.to'-f85!C,
Hold Capacitor Short Circuit Duratton ' v g e - (Note 61
LF398/LF398A
Storage Temperatura Ran>
0°C to'-*70"C
Lead Temperature (Solderíng, 10 secondi) r^^
rreni. (Note 6)

EJecírical Characteristics

PAR AM ÉTER
Attenuatíon Ratio
Input Offset Voltage, {Note 6) Tj * 25°C
Ful[ Temperature ñange
tnput Blas Current, (Note 6) Tj - 25°C
u|| Temperature Ranga
Input Impedance
Tj-25 a C
Garn Error
Tj-25°C. ogic Reference Input
Ful|.Temperature Range
ugfi Attenuation Ratio Tj-25°C,
Current into Hold
KlNowñ) ,.-•
T¡-25 C,"HOLD"mode ,3*1 Time íoQ.1%
Full Temoerature Range '
"HOLD" Step, (Note 4)
25°C, Cn-0.01yF, ^ CJPKÍtof Charging Current
Supply Current, (Note 6) Tj>25°C Voltage flejection Raiio
Logic and Logic Reference Input T|-25°C ftntiat Logic Ttiretnold
Current

oe Current into Hold T¡-25°C, (Note 5) 1: The máximum ¡unctio


ítor{Note6í Hold Mod« tinq at elevated ambient te
Acquiíitioo Time to 0.1%
voltaoes wilhoui .causlng
itive suppiy. and 3V abov
Hold CaoicliorCharging Current : Unless otherwíse spec
n d RL ** 10 kíí- L
Suoply Voltage Refectlon natío
Ion 4; Hold neo ¡s sensitive
Dlffercntial Logic Threshold l'Otia! 0,5 mV step wítri a
wvilue, '- .
tou 5: Leákage curreni ís ma
ambient can be calcula
¿jial'range. •' ^
feu 6¡ T.hese parameters guara

yypical Performan
Apertura Tima*

-so -zs a 25 5a ;s

JUNCTIQN TEMPEñAT
See Definition of T
o ^ogic Reference Drfferantfel Vohage' ^ . . LF198A LF398A,
.'
SJ-oct Círaj t Duratíon .
. '; ;V';S
. ' * • ü
m^t**"*™ CONDIT1ONS ' ; " "'
MIN ' TYP MAX MIN .TYP MAX '
v UNITS

MH^'^v^tage, (Note 6) .-•Tl-25'C 1 1 . 2 2 '<• ' • mV


•o^itor Shon Circuit Duration '' ' ^JÍI
«xnraiura <Sold«r¡ng, 10 wconds 3 1SOP Full Temperatura Rarige 2 • 3'- mV

" ' '""*! «| ..Curtent. (Note 6)

" - $if&
•• ÍllMIÍ
' ffl»
« '
T¡-25°C
Full Temperature ñange

.T¡"250C
;.
5

lo"
25
75
'10

ioio
25-
•' 50 -
nA
nA

SI

[ ffil , pr Tj-25°C, R L » IPk ' ;*•__ • 0.002 0.005 • 0.004' 0.005 : %


:•OSfl
r -i— :'^H
• »St W Full Temperature ñange ,'. 0.01 0.01 . %
. LpM!_i"gr
S: JSB X
T¡»25°C, Cr, • O.ÜIfiF 36 .96 86 90 . ''da
1—;
MAX
>" 1 Tvp^nu^r-
T
Tv!^

U.'
«a^.
,'Ía /'l|ÍI
««íi AUenuation Ratio

?
n^MT^l ,!«.«""« - . T¡-25°C, "HOLD" mode 0.5 1 0.5 1 n
3
' .'o-^m^l^ Full Temperature Rartge i 6 £1
1 2S 10 '«*: f-"«
75
. T¡ = 25°C, C n -0.01yF.V O U T -0 0.5 1 i.o • •' 1- ' '• mV
^«í'f4i^D-S'-P.INo»41
"?U¿ í 'J ^renUNotee, Tj>25°C . . . .. 4.5 5.5 4.5 .6.5 mA
icio - " -
>-.CTD' Í-W1*"
0.005
0.02
0,004
'
oni^;-3^^Lo9icRefefencelnpüt
lAa^tn* ' "
Tj-25°C -• ._.J-, "

. ,
2 10

/*
2 10 . t .
.
M

0,02 **
80 90
-l ^ Céntimo Hold . T¡ - 25°G, (Note 5) . . 30 - • . . 100 30 ioo PA
" i-W _;rf ^arlHoBS) .,- . . Hold Mode .. " ' .

28
j
0.5 "3"
.. jt • •-Va
"'•*!
aoJitwn Time to 0.1% AVOUT* 1DV. ch " 1000 pF
Cr, • O.Ol^F '
T
20
4 6
25
4
20
"".- 6'
25 '
MS
(U
_ '6 C,-1,' ~
1 «í
VIN-VOUT-ZV ^ ./.
2.0

5.5
1.0 ts--*; .¡ «J

-IjÉ
^¡Qpícitor Charglng Current

loiiyVoitage Re¡ect¡oii Ratio . V OUT-O


- '-. .
.,'. .. . .;*.?tf.-..
5

- n,°- 90'
5

110
. .... .
• mA

dB
.eH
• "• ,^j¿ yvwiiil Logic Thresfiold T¡-25°C •'. 0.8 1.4 2.4 0.8 1.4 2.4 . ' V
10
10 -J1'.

' ICO 30
" • T1
-200'?. J "S
'3 «o 1: The máximum juncríon temperatura of the LF198/LF198A Is l50*C,forthe LF298, 1 15*C, and for the LF398/LF398A, 100'C.Whe
i»fi!¡í>9 at elevated ambient temperatura, the powar dissipation must be derated based on a thermal resistance Oj/aJ of 150*CAV.
. ( 5 • n, 2; Although the differential voltage may not exceed the llrnin gíven, the common-rrtode voltage on the logic pins may be equal to the
:.. j- H • «riV voltages vjithout .causing damage to the circuit, For procer logic operalion, hovyewer, Qne of the logic pins must always be at least 2V below
4 S • sipoiitive supply a n d 3 V above t h e negativesupply. ..... . . _ , . . - _ . -
20 • i1
ir » to"3: Unless Qtherwise ipecified, the following conditlons apply. Unit ¡s In."san)Ple" mode, Vg » =1SV, Ti " 25° C, — 11.5V < V|N;< 4-1 1.5V
-It
'• t:Nj^Bf,'0.01^F, and RL " 10 kn. Logic reference voltage » OV and logic voltage - 2.5V.
5
."[í'íaHB M!1i: ^°'d !Iep ' s sens'I've io straY capacitive couplíng between Ínpui_logic_iignals and the hold capacitor. 1 pF, for Instance, will créate an
110 • í tX'^SI cStfonal 0.5 mV step wilh a 5V [og¡c iwing and a O.GlyF hold capacitor. Magniíude of the hold step Is ínversely proporcional' to hold capaci*
2A o.a 1.4 2.4 •- ?Sa *'alue- •• - :•:,• •' .-- "~ .
too 5: Leakage current is measured at a junciíon lemperature oí 25°C, The effects of ¡unction temperature rise due to power disslpatíon o
«nied ainbient can be calculated by doubljng the 25° C valué for'each 11a C mcrease in chip'iemperature. Leakage Is guaranteed'over full input
¿jnaí/ange.- " " . " . ' .. ..
*"6¡ Tfiese parameters goaranteed over a supply voltagarange of;5 to s18V. -- . .•'• . - -

(Typical Performance Characteristics •


Apertura Tima* Capacitor Hyrterftais Dynamic SampUng Error

SflMPLE TIME [nwl INPUT SLEW BATE (

7-3
Typical Performance Characteristics . Application Hints
,,d capacitor
Output Droop Rata .. Hold.Step "H oíd"-Sattiing.Tima •
,-.-10* id step, acquisítion time, and droop rate
V« V--15VÍ] v*-V-.I5V ' íT .
T¡ • 25-C :0r trade-offs in the selecrion of a hold c

-Tj-lS'C . Síze and cost may also become impor
¡ .^r valúes. Use of the curves íncluded with
t should be helpful in selecting a reasonab
, C3pacitance. Keep in mind that for fast re
Ies or trackíng fast signáis, the capacitor drive
3y cause a.sígnificant temperature rise in the

i significan* soúrce of error in an accurate s


i j iiUH_i_i_!jii|j_~rj'ÍJ¡ÍJ!"'¡TlJSt] I I
ucircuít is dieiectric absorption Ín the hold c
1M of 1000 pf 0.01uF O.luF 100 pF 1000 pF O.D1UF 0,1 u F IwF -so -u o 15 so- • , my[ar cap, for instance, may "sag back" up
HOLG CAPACITOR HQLD CAPACITOR . JUNCTION THMPE jfief a qu'c'c change in voltage. A long "soak
*Sae deflnltlon (¡oiiired before the circuit can be put back
nold mode with this type of capacitor. Dielec
Lsíkaga Currem ínto Ha Id Phaia and Gain (Inputto Output, Y£iy l°w hysteresis are polystyrene, polyofopy
Capacitor Small Signal)
Teílon. Other types such as mica and polyc
EVs-ilSV í jre not nearly as good. Coramic is unusable w
. T¡ ' 25'c '
F V OUT'° 7""";" 'ñL'"* hysteresis,, The advantage of polypropylene o
fKOLOMODEl p " SAMPLE MODE" ¡tyrene is thatitextends the máximum ambíen
te from 85DC to 10Q°C, "NPO" or "COG" c
3(e now available for 125°C operatíon and also
dielectric absorption. For more exact data
curve labeled dielectric absorption error vs sa
The hysteresis numbers on the curve are fin
taken after full relaxation. The hysteresis-er
significantly reduced if the output of the
-so -is i a M 75 100 m isa digitiied quíckly after the hold mode Is init
JUNCTION TEMPERATUflE |*CJ FREOUENCY (Hil
hysteresis relaxation time constant Ín poly
for instance, is 10—50 ms. If A-to-D convers
made within 1 ms, hysteresis error will be re
factor of ten.
PowarSupply Rejectíon • Output Short Circuit Currant Output Nolw 'rn
DCand AG Zeroing
n • zs'c
\r-v--isv
\ l l l l l l DC zeroing is accomplíshed by connectíng
VOUT-OV
i X í l l i l 3d¡ust pin to the wíper of a 1 kH potentíom
J-HOLO"
"j"* j NsssoiJRCl.Ne j \MOOE
has one end tíed to V"1" and the other end tie
I I 'VI I I resistor to ground. The resistor should be
." gíve=0.6 mA through the 1k p ote n ti orne te r
-I S1NKINC
:;AC zeroing (hold step zeroing) can be o
^adding an inverter with the adjustment po
rto output. A 10 pF capacitor from the w
¿hold capacitor will gíve ±4 mV hold step
u mii 1001 IM -50 -Z5 3 Z5 M 7S 100 US ISO 10 IDO U lo* . . . ,
;With a O.QlíiF hold capacitor and 5V lo
FREüUENCYlHi] JUNCT10N TEMPERATURE fCl ' . . FHEQUENCT IH
¡For larger logic swíngs, a smaller capacitor
í'may be used.
• • nwa "
Input B¡ai Currsnt
Feedthrough Rafectíon Ratio
(Hold Modal
-ínsM
Hold Stop w [nput.Volt»g« ¡r t Logic RheTime
for proper operation, logic-sígnals Ínto the
^have a minimum dV/dt of 1,0 V/Ms. Slowe
V7.8-0 |,cause excessive hold step; If a R/C netwo
Sfront of the logic input for signal delay,
j-j!ope of the waveform at the threshold po
ttít ¡s aileast 1.0 V/us.

rnpling Dynamic Signáis


• I • T¡--SS-C
w. Sample error due to moving inpui sig
PÍ;'causes more confusión among sample-a
-M -!5 J ;5 !0 75 100 115 ISO ! 10 100 IV lOk lOQk ¡M -15 '-10 -5- O S- • l ;.than any other parameter. The primary r
& JUNCTIONTEWfERATUflECC) FHEmJENCYIHi] INPUTVQLTACElV] Sí'Sjí <X1S that many users make the assumption th
•:.:>£•• £.and hold amplifier ís truly locked on to th
in the sample mode. In actuality, t

7-4
Semiconductor
LF155/LF156/LF157 Series Mondithic BUFET Technology
JFET Input Operational Amplifiers
LF155, LF155A, LF255, LF355, LF355A, LF355B low 'supply current
LF156, LF156A, LF256; LF356, LF356A,. LF356B wíde band
LF157, LF157A, LF257, LF357, LF357A, LF357B wíde band decompensated - 5}

General Description
These are the fírst monolithic JFET input operatíonal » Photocell amplifiers
amplifiers to incorpórate well matched, hígh voltage H
« Sample and Hold circuits
JFETs on the same chíp wíth standard bipolar transistors
(BI-FETTechnology), These amplifiers feature low ¡nput
bías and offset currents, low offset voltage and offset Common Features
voltage drift, coupled wíth offset adjust which does not (LF155A, LF156A,
degrade dríft or common-mode rejection. The devíces
are also designed for.high slew rate.'wíde-bandwidth, Low input bias current • - • 30 pA
extrerñely 'fasr settlíng time, low'voltage and current Low Input Offset Current • 3 pA
noise and a low 1/f noise córner, "" : " ~ ' High Tnput impedance
Low input offset voltage 1 mV
Advantages ! ¡ Low input offset voftage temperature 3pV/°C
• Replace expensíve hybrid and module FET op amps drift
• Rugged JFETs allow blow-out free handling compared Low input noise current 0.01 pAA/Hz
with MOSFET ínput devices ' High common-mode rejection ratio 100 dB
• Excellent for low^noíse applications using either high Large de voltage gain 106 dB
or low source impedance—very low 1/f córner •
« Offset adjust does not degrade dríft or common-mode Uncommon Features
rejection as in most monoüthic amplifiers
• New output stage allows use of large capacitive loads LF155A LF156A LF157A UN.TS
(10,000 pF) wíthout stability problems
• Internal compensation and large differentíal 'input Extremely 4 1.5 1.5
voltage capability fast settling
time to
Applications : 0.01%
Fast slew
• Precisión high speed integrators rate ' 5 12 50 V/iis
• Fast D/A and A/D converters Wíde gain 2.5 5 20 MHz
• High impedance buffers bandwídth
« Wídeband, low noise, low drift amplifiers Low input 20 12 12 nV/VPT
• Logarithmic amplifiers noise voltage

Simplified Schematic

* C - 2 p r o n LF157

3-1
(t * LF155/LF156/LF157 Serie
ai TJ (n V»
3 Q C J>
. , a 5 a C.
O 3" "• ,JT Cl tn H _i n "0 U
Z = 1 g =" < > 2? m a V t- < ' 2 3 ^ <• W
J? 2 j ") H - < O
{ £ o o tn
10 3) r- [> "5.
t ¡IMu 1
5" 2 ni < m tn TJ (^ w O ' H S- í' .2" S. S m"
g D O O t ' S o 0 1 ™ tn
c 5' 5. „ £ d o, p" S í
0 0 §. ' S Í . I n S 1 ^
1 i
5 ¡-3° ' =5
" ,! '
31 tn n) n < 5* 0 0 r- 5- í í 5- Í í. n o >. 3-
Í Í S Í 2 _ í ' * 3 — f E ' o>
S 5 S 2 ~ o- S -• Ü c ' • c "E 1 3- " :? ™ " "i l a, • a ^
tu ¡^
n 3 — — 3 í
3 " n o •" 2:
1~*i 1o ¡t 1n 1 ;r' *£ i 5.
3 C C O P" < j? ? í p ' § ! ° -• < * ' °
~ ü. 5' n, £j > > £ n 2 ; ' ' *. o° : 3
1 sí¡
?; o "
"8 9. S " 3 . 5 S£ 3 ~ 2.
f" '3

3 S •
~
g o o o " ' K "¡fíl
o o o — ^É ' í1 í? ! ¡ i
i < < O < < H ,M ,H jH J í ''33 33 • O 2)
;í" 5"a¡ !-! ••tni/). cot/i t-.L"L"-11i^Ti tn tn .. < ín
' Ul <
íJ HH- U». -í^r:" ^» • ÍIA »:.'JA
io»_^M Hy
*
tn ui- H tn
•!•• :-t ' *• tn
< < 1§ ? 0" 1 P! '0 -n°
1 » 31 3 io H X 2" ^ 2 •s' : ¡'i1
r- r- s r > 2 §
u 2 -I . - 5- •
•z. *• ™ En
i^ o M tn w -*1
í n
n —
CJ . t-j' O 'O M U í* IO " Ul •H
rb - •i o b m ^ in . - • , . t s
ii u H í * ' 2
t — — fO Ul t 1
Ul Ul -J ; a 10 tn a J • t 2
S r-
•n
X

' _i '' J. í ü 11 "íí) —"Í '-(J1"' •' (J ' O "' U -*


¡ g g Ñ jn M u CONDITIONS g .0^ ,'o'j -. ¿
PARAMETER • ¡rf- _ SYMBOL
LF157A/357A | LF1S6A/356A S LF1S5A/355A
PARAMETER 1 . O
coNomor.
n
__rfr*v.. ~. •z.
| • '
AC Electrical Characteristics T-">A = 25°c, v°s = =isv i •
-w oa — tj • • -- t.-.'1-^ t , í w ui —• —• 1 uitoro
1 !• l u i o O o f j-
o o *° *" ín ín ' *° X
5 ; ! ! - 1 ^

2 It s H II- • * , 2
CD f» _* í -**^ IO Ut r f
X ui ui -• ; o M tn a' • i • • 2
1 .í - r~

< tn o
s
2

u o o
0 o
-* -*
M "*
-*
üi
^ffi
P °
H
N *?&?!' íiMMHlSi^;
-o i*
' ' ' t ' Itn'ui--— ( . . ui fo N>
1 • [ ° °t . . ' « X
2
X
t fü t t C
^ ^ B ± y t í o O c i O Q8O

"S ^ 5- 3- a a. | 3" =T s u" 3 -a • 3 -i "i 3 3 o o 5- < < n g ng 03


C
? 2; <1 <1 i K ^ < z
•'' • "l --••-, '..^-s •-•._V;;.(*'^'r '••;-;'-->* i- £\~i~&'?
w _ O 1 1 \
' J? .-1 f 3" - ^ •*• - « • - ' " ; o . . ..-. rs « <
c ** s o \ $ f . « °; ^ -
C i .£ ° 5 S * § s
<\ \"| \
r '• r ; í í>
rn(D ' o í ED • § S Q
[ £ § q tp 1t o
tn m
a. i S & 33 co a. n < r1 O Cir-j- 5- a " í n
— : O
°c S-• g£. « gS. S
a. sS. s.
3 9í n. a> c o o o £ o > • 5- ^
o 2 a. S a. f S « a
n • S •§ D
c * - « " < - ¿ 2 s 5 -T n
-i _ a> W 3) ro • 0 ¿- * ^
M •< ÍY¡ *~ "~* -§5. s S S 5- |*. g £ S
t |i ! í i " í &- 1 ? ¡ ' -í -H í? >
3 ** ^ -ni! 2-
O " s^5 o iS n 2 > > E
3 C C o 3- 3- 1 í §o
1 ? ¡ § p t 1 » S < 1
0) s §85 S" 5- S. ín
o "° - - TYP ^!. S. o -o S 3) . Q)
3 CONDITIONS f PARAMETER'. • ^ SYMBOL
LF355B/68/7B
±22V ' LF2S5/6/7
LF1S5/6/7 LF355/6/7
;yM8OL PARAMETER • CONDITIONS LF3S5B/6B/7B UNITS
MIN ..TYP-- MAX MIN ,'TYP,5 MAX MIN TYP MAX

OS Input Offset Voltage R S - 5QÍ1 T A -25°C 3Í3¿r,: 5 - 73^ 5 3 C 10 mV


.-i
V. 115°C 0 ver Tempera tu re ."^."— ' ñ •7 6.5 13 mV

--., - ." -\'


• lOO'C VOS/AT Average TC of Input RS = son v,5 ,;-~í 5 t pV/"C
5:
570 mW Offset Voltage -í
'¿••'j V>S'
150°C/W
TC/AVoS Change in Average TC ñS = SOií, (Note 4) ,•9:5 *:os.-- OS yV/^C
570 rnW .
with VQS Ad¡ust - " -
•"--'' «,"" - per mV
"1400C/W
Input Offset Current T -25"C {Notes 3, 5) ^-.3,, -'' . 20 í;-3 "V 20 3 50 PA
500 mW )S
"n^T^ic -"« 20 /- ::-^: 1- 2 nA
' 155"C/W
' . itOV Inout Blas Current Tj - 25° C, {Notes 3, 51 ;T30 *'. 100 '^¡: 100 30 200 PA

=20 V TJ<THIGH -*r¿*?• 50 • ;-.':-'->• 5 8 nA

Continuóos ti Input Resístance Tj - 25° C ;5o 2 £ío£ J°1


2 n
-65"C toT-1SO° LargeSignal Voltage VS = ±15\A-25 C 50 200 50 •'.200' 25 200 V/mV
VOL
300° C Ga!n V 0 -±10V, ñL = 2k- ! -' ''• ¿
Over Temperature 25 "'• * 25 -,,'.'.T 15 V/mV

| UF355A/6A/7A 0 Outout Voltage Swíng Vs = ±J5\S-±15\, RL-


•; 10 ±12 ±13 ±12 ±13 / ±12 ±13' V

1AX ^MIN | TYP MAX


UNITS í /,ñL-2k ±10
"*"12- - 10 ±10
*42--\1 V

" Input Common-Mode +15. _í-1S.).- v


2 5 1. 2 mV < CM Vs = ±15V ±11 ^n ±10
2.5 2.3 mV í"1 Voltage Range "í^ ,', r12-.--. -12 V

5 5" MRR Common-Mode Rejec- 35 V'*ÍO 85 rJipO":1 BO ""ico da


;S "^É [Ion fiado •••'..'r" i-.V^Í ?~ct.
5RR Supply Voltage Re¡ec- {Note 6) 85 "100- 85 •'100 80 100 dB
,.?íf: per mV .¿* Ratio -'~.r •.'•; - .'--•:'""":: i^
: ' „"-' •
10 '•"3 " : -- 10 ' ~PA .f
10 . r ; „,. . 1 nA .';'
50 ^3*0 . ' ' .50 'BA "3.-
25 '"* 5 nA -.,
C Eiectrical Characteristics TA = 25°c, v s *±isv
,-;:1012- n a-
50 -200,,- V/mV ^
LF155 A/155,
LF 15 6 A/ 156, LF157A/157
'. " iíP L.F255, LF.J55 UF356A/356 LF357 A/357
25 V/mV ^ ARAMETER LF256/35B8 UF257/357B UNITS
LF355A/355B
=12 r-13 ?:* - -. ' V ,ÍV - TYP MAX TYP MAX TYP MAX TYP MAX TYP MAX TYP MAX
±10 r12.... v '?;•' pply Current 2 4 2 4 5 7 5 10 5 7 5 10 mA
^15,j.' v ;;•.
f -J2 '' v :'-'"-
35 100, dB -;-;:
V- 1
• -^
35 100
. Z Eiectrical Characteristics TA = 25°c, vs = ±isv

LF155/255/ UF156/256, LF1 57/257, LF157/257/


5A/356A LF157A/357A MBOL PARAMETER CONDITIONS 355/355B LF356B 356/356B LF357B 357/357 B UNITS
UNITS; TYP MIN ~ -TYF MIN TYP
PYP | MAX MIN TYP MAX
12 ' SR Slew Rate LF155/6: A v - 1. -5 > •» 7.5 ~ V/us
12 ^
LF157:Av-5 ' , . 30 50^. ^ V/ps
JO 50 WÍ-.
GBW. Gain Sandwldtri ^25 . \/ \ - 20 "" MHü
1.5- 15 20 MHV w
Product
V

1,5, 1.5 ts Sett ngTime toO.01% (Note 7] 4 ' 15 '1^. V

-J^- en EQU valen! Input Noise RS=- ioon " »* - "


Voltage f = 100 Hz 25 „ 15 .15 nV/vHz

2'..
15
12

0.01
:^--' Equivalen! Inout
f-lOOOHz
f- 100 Hi ,
.20

001
12.

0.01
' U
0.01-
nV/v/Hz

pA/víT?
'n
1,01 : . Current Noíse f- 1000 Hz "' 0.01 0.01 0.01 pA/vHz
0.01 ÍWBJ
S; ^ 3-
pf»)
ClN ' nput Caoacltance '3 3.'
~
3. pr

3.3
ambient temperature. TA. The máximum available power dissipation ai any temperature is ?¿ • (T¡MAX ~ "OO/OjA or tne
ever i s less. • _ . . • - . . , . -
Note 2: Unless otherwise specified the absoluie máximum negativa input voltage is equal to trie negative power supply voltage.
Nota 3: Unless otherwise stated, these test condítíons apply: • • . . _ . , . . . . .
LFl 55 A/6 A/7 A
: LF255/6/7 LF355A/6A/7A LF355B/6B/7B LF355/6"
LF1 55/6/7
Supply Voltage, Vg M5V< V S <±20V = 15V< V S <=13V s15V< V S =2QV
TA -55°C<TA<-f12S°C • -25°C<TA<+85°C 0°C<T A <-í-70 0 C o-V<Tve
THIGH +125"C -¡•85o C -r703C.

and VQS, Ig and Igs are measured at VCM = O,


Note d; The Temperature Coefflciant of the adjusted input offset voltage changes only a small amount 10.5yV/°C typically) for
adfustment from its original unadjusted valué. Common-mode rejectian and ooen loop voltage gain are also unaffecied by offset
Note 5: The input bias currents are junction Jeakage currents which approximately double for every 1QSC increase in the junction temperan^ •»
_5 -IO -IS
Due to limíted production test time, tne input bias currents measured-are correlated to junction temperature. In normal ooeration the \unol
lemperature rises above the ambient temperature as a result af interna! power dissipation, Pd_ T; » TA + Q¡A Pd where 6;^ is the ther,. ; «EGATIVESUPPLY VOtTS
resistancB from ¡unction to ambient. Use af a heat sink is recommended if inptit bias current Ís to be kept to a mínimum. 'T*-
Note 6: Supply Voltage Re|ection is measured for both supply magnitudes increasing or decreaslng simultaneously, in accordance w¡th comí,
praciice. " .'.y
Note 7: Settllng time Ís deflned here, for a unity gain ¡nverter connection using 2 kíí resistors for the LF155/6. It Ís the time reauired for the
valtage {the voltage at the inverting input pin on the amplifrer) to settle to withln 0.01% of its final valué from the time a 10V step input ¡i
Typical AC Perfo
to the ¡nverter. For the LF157, A\ - —5, the feedback resistor from output to ¡nput is 2 kíí and the ouiput step Ís 10V (See Settling TImeTÍ
Circuit, page 3-9). . .

Typical DC Periormance Characteristics


Curves are for LF155, LF156 and LF157 unless othenvise specified.
Input Bias Curran! Input Blas Current
I oot

-Sí -35 S li ií 35 US -55 -IS S ÍS « IS ]«


CASETEMPEfiATUHE fC| CASÉ TEMfERATUflE ('C|

Voltage Swlng Supply Current

|
t-
r c --src
!
\' lo ]i la T C -¡rc
^^
L——^1>- IZS'C

~m 5 ID li
Lf 155

ID 1
SUPPLYVQLTAGElíV] SUm.YVOL7¿>GE[;V1

Negativa Currant Límit Positivo Current Llmít

Vj-sISV

invrK !'1!5'C

O 5 10 15 10 15 JO 15 3 5 10 15 JO 15 30 B 10
OUTPUT SIN* CURRENT ImAl OUTPirfSOUHCECURnCNT(mA)

3-4
¡cal DC Performance Characteristics .(continuad)'
iemp«n>tures and ís dictated by T¡MAX, fli TYP
1 pd " (TjMAX - TA]/0¡A or tne 25° C Pd
e Common-Mode Innut
ID ine negative power suppiy'voltage. ''^Sfflffi^l Limit Open Loop Voltage Gain Output VoltagaSwIng • "

Vj-slSV
TA-75-C
Í/7A

±iav
r70°C
LF355B/6B/7B

=15V< V S ±20V
°°C<T A <-}-70''C
LF355
1
+70° C. i-7.000 .£

I smallamouru [O.S^V/°C typlcallyj fpr ea


-
tltage ga.n are also unaffecied by offset adf
r every 10JC increase in the junctlon temper
ction temperature. In normal operation the ^ .5 -10 -ÍS -20 10 15

'• Pd-TÍ ' TA - 0,A Pd where 9tA ¡s the th NEGATIVESUPPLY VOLTS (V| SUPPLYVOLTAGE(:V)
u « to be kept to a mínimum. -"T-
creasing límultaneously, in accordance wíth c¿

forthe tF 155/6. li It the time required forthe
i final vaíue from the time a 10V step input ¡j a Typical AC Performance Characteristics
U and me outpui step Ís 10V (See Settllng Tim
Normalizad Slaw-Rate

Positiva Common-Mode lnput¿


Voltage Límlt
e .. LF155 Larga Sígnal Pulsa Raspón
.. '•' A»/ -+1 ' -
ll •
Opan Loop Frequency , .'>
nverter Sattling Tima InvenarSettlíng Tima . Responso • flg j

LF155/LF156/LF157
Output Impeí anee
10
- LF1S5 T^N
-TA • 25°c - 1 \ / / V s - t l sv
\c\. \ —
Vt--1SV '
1
,7^
V s -il5V
lOmV/ | / 1 mV s TA '*s° C 3 30
1 J 1
^^


T ! T
3 E 1 1 <
o
[E I '
• S
" 1° Xv\' '£2
„ || |
TÍFT"
D.V-'
\ Njvt/T | '
z
s
0

1JL • «

i-
B

10 mV s t
rt
LF157,Av
-i
~~$ . =3
5

i irijS \H\ -.
II : " ^S^

S: -s ni \ 1 1 HH
"Sil tsn
o

-ID
ID mV\\ mV

trrtr- 1
l\D 1111
S
°
ID
0,1 0
-ID 1
.
!
1
1 ! ! •—^-J
**•
l
-73¿"z¿--!¿- S
..b^-ui ¡H
0 0.5 UJ 5 'n 10 100 11 IDt 1001 IM 1DM
^•1 n i°k IDOf
SETTUNGTtMEM
•t?-. E

l
SETTUHG TIME (jal FREQUEHCYIHiI
FRÉQ UEN

Bode Plot Bodd Plot ' • Boda Plot


Qetailed S ^h
ID
[ 1 :—r-sjjj ||
•: " n^^F
LF157
- LF1SB 100 30
S -• -LF155 T
\ ir |f^ 1 VS-:I5V

^j
J.. . V s -tlSV. -H^SLPHASE 75' 25
0
1 -> Q 50 2 20 r?XI 1 1
-5

H1 L a S « ^^j 1
m 5
1 Sí
JÍ! i^1 ¡ li
|| TN
ii >J\-i
a z II
1
"°!|
flK~^~""*.;!
l

^\ \ 1
"
Í
*
°
15
20
a
i fA N\
-f^F
-20
, r-fnr-
l If ii
i N\ ' "':ii
| — 15 — r~
-f~jí>L
-25
T ^ -^ -í
-30

-35. T ! ITIIII ' NJ I -125 ¡í


-r un ¡ |Y
1 1 ) 1 • ' ilílll
T- -w,.l
"-"-•I
^ 1
10 loa i .'• 10- '- IDO i jo. 100 ;••*•'•
' FREQUENCY (MHi) . __' . FfiEQUENCYJMHi ' " FHEQUENCY [MHí| '•' ' ': 1

C;ommon-Moda Rejectlan Powar Supply Rsjection -¿¿T- E


Fíatío Powar Suppfy Rejectlon Ratio Ratio ~~*,' -.-E
•i- '". I
oa—•—irZ"
i •S izo —--J. 1 r ft -z5°c i;r:E
a
VS-
^r-k LF155
o
COMMQM MODE HEJECIIUN 8AT

— 5 JO P 100
\'rí- CE «C L X J N, POSITIVE SUPPLY-

V 5.-J
a:
- POSITIVE \ I X LF1SÍ/7 1
i » g1 ia \ i•
S

\V X XI -i £.-«
LF S
*\V - ^Y l\ l\
.
S

F1S7
^ « NEG; TIVE 1 M 1 157^X1—^4
•i^B
S •

\ JDO t
NN c 21
56 J-l:-''§
X X l \X X
o.

i | XX
*'.
^v 1 . 1 I IX
a

10 JM U IM IDOk-lM 1DM I°- * 100 IV 10* lOCk IM ' IM U 1K lOOk IM DM ' "«

FHEQUENCY (Hi) ' . - FHEO.UENCY |Hi - FREQUENCY (Hi) i -=:'J


/; - *C " 2

¡C -'
squív»lent Input Noíw
Undiítortad Output Voltage Swíoq . Equivalen! nput No sa Voltsqe Voltage (Expanded Sea e ¿Connection
avj.í]SV. T^-2TC

z
24 1 MI
lll—ÍT\|T Vs " rf í I í,
__...

l 1 1 Ti
i i I
1
i VS • =15V
3. ~
5
Ü
3
20 -

16
-j-f1|íf^==;
i miii\1*1»"!
TÍ-Í TÍ-
rí |
ff
I 1W
la 30 i
1
! --• 1
HI i |
h\ 1
1!
1 !¡¡
¡llilil
i 'H!1
¡í
il
M 1
0

S
>
H
j ?'"! j1 p- •
1 - UF1B5AH
-:,1.F]55H
Order N
LF15
LF1S6
? IZ -
íl =
i ni1
J MI
in <
LF255H LF256
MimrX i ¡ SJIiV LF1S7 (I lili Kl\LF155r Í Í Í Íl Í LF355AH LF35
£ 1 -
MIIIH M 1 l .MU j.,.(]i 1 ' 1 1 =1
\5 |
.;,LF355H LF3S6
miiil \liii\tlVy.7T íl ^ « Lr'mT^111! ' 7li¡n" ^ :
o itiitn i \n\\\\ l u II z "'n
i |1 l\
l> ' S^¡
'i'1' ir-' 1
,; Sea NS Pack
1 1 lililí 1 1 i"Xjii X >vl! S] ¿ !0 i . ¡ittisi-rní 1 LF156/7
l lililí l ifiini 1 Mil í 5 . II llllt i lili 1 t tiltil 1 HI ¡II < 1
int jook IM OM 2 !a 10a ]k Ok S 10 IV 100» JK S7
FHEQUEfíCYíHi] FREQUENCY (Hi " FREQUENCY IHit ' ffi ''.-
—-ra •*»-•—
3-6
LF155/LF156/LF157 Series

Boda PJot

— '— — 7- ~V
r~ •37
~ .*- /
— a TÍ /
/
s- I- /
-> i" X c /
T 7~
21 o
¿T* k?:T >s
// / f/ s E;
/
7 1 - - PE 7 -/ > -.- '
ce L/
/ fc
/a 3
>. y/ \,
a \~. >
-T a /
3 // / P
í 2 .1í¿
I j'&ZtJ"-
Semiconductor
-n
ro
LF111/LF211/LF311 Voltage Comparators
i: ThC'iirierval between the General Descriptípn
functioio and the'tlme-when the Further, the LF111 can be used in place of the LM111 co
The UF111, LF211 and LF311 are FET input voltage
c threstnld voltage. The input step elíminatíng errors due to input currents. See the "appli-
cornparators that viroially elimínate input current errors.
>r frorn some initial, saturated' } catión hínts" of the LM311 for applícation help.
pesigned to opérate over a 5.0V to ±15V range the
input ¡«el just barely in excess [_F111 can be used in the most crítical applications.
ing the output from saturatíon -t
voítage, Thís excess is referred to The extremely low input currents of the LFIll. allows Advantages
the use of a simple comparator ¡n applications usually • Blminates input current errors
requlring input current buffering. Leakage testing, long « Interchangeable with LM111
tage: ~I3re low-output voltage level• "• n'rne delay circuits, charge measurements, and high
equaf tn-or greater than a specified v'aíií • No need for input current buffering
;ource impedance voltage comparisons are easily done.

! The.ctrrent out of the strobe termíHil


! zero fcgic level. •% •;' Connecíion Diagram*
"Matal Can Package
t Lewfc The de output voltage, m í .
lut ccfcjCtlons, wíth the voltage on $¿^
I equaf to or less than the speci


oltagc: The maxírnum voltage on either"
requlríd to forcé the output to the
¡tate ínoapendent of the Input voltage,
Order Number LF111H, LF211H
Voltage: The mínimum voltage on me ^ - .. orLF3HH
that wíll guarantee that it does.rot Sae NS Package H08C
.e operatibn of the comparator. '

Tíme: 'ine time required for the outpuílS


logic tñwshold voltage after the strobe;^ Schematic Diagram and Auxiliar/ Circuits
en drr^ea from zero to the one logic-y

-IS^
The current required from the posmve.;
íly to opérate the comparator with no'*
e powywill vary with input voltage, but;*™*.-
maxírr|m fOr the entire range of input^ Offsat Balancing
•a. 9
i .«5
"he ratrá of the change ¡n outout volíags ^
n votage between the input termináis_»«

Strobing

Increaiinq Input
Staq« Currant*

5-1
LF311 n
Toral Supply Voltage (Vg^)
36 V '"' " 36V
Output ío Negative Supply Voltage (V7lJ)
50V 40V
Ground to Negative Supply Voltage (V 1 A )
30V 30V Voltag
Differentíal Input Voltage • ; .
. ±30V V • '-±30V
Input Voltage (Note 1} Curren
±15V ±15V
Power Dissipatíon (Note 2}
500 mW 500:mW
Output Short Circuit DuratEon ' •
lOseconds-- lOseconds
Operating Temperatura Range • •
LF111 • • • ' " •
-55°Cío+125°C
LF21.1
-25°Cto-f85°C
LF311
Storage Temperature Range 0°C to -f70QC
-65°C to-H50°C -65° C to-H50°C
Lead Temperature {Soldering, lOseconds)
.300°C .' 300°C " Leakage Cu

i Offset Voltag

t Offset Curre
Electrical Characteristics (LFI 11/0=211") (Note 3)

PARAMETER fcpjt Voltage Rang


CONDITIONS MIN TYP MAX
Input Offset Voltage (Note 4} TA = 25°C, R s
0.7 4.0 uration Voltage
Input Offset Current (Note 4|
TA =25°C, V CM = Q (Mote gj
5.0 25
Input Bías Current
TA o 25°C, VCM = O (Note 6)
20 50
Voltage Gain
TA =25°C
40 200
Response Time (Note 5)
TA = 25°C
200 ¡ T[1ÍJ ratin9 a
Saturatíon Voltage »Mual la the negativ
VIN < ~5.0 mV, |OUT = 50 mA, TA = 25°C
0.75 1.5 Moa 2: The máximu
Strobe On Current - wriwratures, devíces
TA = 25° C
3.0 ,' Bca«,
Output Leakage Current
VIN > 5.0 mV, V OUT = 35V, TA = 25°C Ñau 3: These soaci
, 0.2 10 ril ttmperature soecif
Input Offset Voltage (Note 4)
I' emrent specifícations
6.0'
Input Offset Current (Note 4) '_ Mot* i: The offset v
V S -=±]5V, V C M = 0 (Note 6) : U mA load. Thus, t
3.0
Input Bias Current '• »toi» 5: Th« resoonse
V S = ± 1 5 V , V C M = 0 (Note 6)
7.0 ;. Noli 6: For Inout vo
Input Voltage Range 7.: Oo.not'shor
13.5 13.0 "
Saturatíon Voltage
V+>4.5V, V ~ = 0
0.4
VIN <-6.0mV, lSi
Output Leakage Current
VIN > 5.0 mV, VOUT = 35V
0.5 Typical App
Positiva Supply Current
TA=25°C ..
6.0
Negative Supply Current
TA.=.25°C
5.0

Note 1: Thís rating aoplíes for =1SV supplies. The positíve inout voltage lirnlt ís 3QV above the negativo supply. The negative ínput voltag»!»
Is equal to the negative suoaly voltage or 3QV below the positíve supoly, whícnever is less, ' ' _ . tí
Nota 2: The máximum ¡unctlon temoerature of the LF111 Ís +1503C, the LF211 15 -f HO°Cand the LF311 Is-,-tS5°C. For operatingat fl(
temperatures, devicas in the TO-5package rnust be derated based on a thermal resistance af -H5G°C/W, junctton to amblent, or-^'*50C/W, ¡u^., «
tocase. . t/'ía
Nota 3: Thflse sDecIfícatrons apply for V$ » =15V, and the Ground Din at ground, and —55°C < TA < -rl25°C for the [_r1 lí.unlen °t'jín^-|
staied. With the LF211, however, all temperatura soflclfícatlons are llmlted to -25°C < TA < +35*0 and for the LF311 0 S C < TA ^^7i
offset voltaga, offset current and biaj current soecificatíons aoply forany supply voltaga from a single 5.0V sunply uo to =15V su opiles, ...^
Nota 4; The offset voltages and offset currents gíven are the máximum valúes reauíred to drive [he outout vvithtn a volt of •íítner suoply f1^'
1.0 mA load, Thus, [hese parameters define an error band and take into account the worst case e/fecis of voltage gafn and input imoeflance. ¿^i
Nota 5: The resoonse time soecified (jee defínitions) ís for a 100 mV Inout iteo with 5.0 mV overdríve.
Note 6: For mput voltages greater than 1SV afaowe the negative suonlv :ne bias and offset currents will increase—jee tyotcal oerformance c
Note 7: Do not snort tha stroba pin to ground; it shpuld b« current dríven at 3 ío 5 mA. ''
N TYP
CONDITIONS
36V
.2.0 10 ' . mV
40V T A = 25°C, R s < 5 0 k
oltase (Note 4) •
30V -.,- 5.0 75 . --•pÁ
. ' ±30V f Qffset Current (Note 4)__ T A = 2 5 ° C , V c M «.O (Note 6]
'25 150 pA
±15V TA=25DC,VCM=OÍNo:e6)
s Current '
500:mW 200.. V/mV
fóseconds TA=25QC -. .
I . 200 ns
^e Time (Note 5)
0.75 1.5 V .
^.¡cn Voltage. . . V!
3.0 mA
^On Current ^
' 0.2 10 nA
VIN > 10 mV, V OUT = 35V, T A = 25 D C
..Leakage Current
^tp" 15 mV
R s < 50k
[Offset Voltage (Note 4}
'1.0 » ;
nA
[Offset Current (Note'4} V s =±15V, VCM = 0 (Note 6)
3.0 nA
V s =±15V, V CM = 0 (Note 6),.....
s Current
'-i-14 .- v
' -13.5 V
MIN TYP MAX

n Voltage V + >4.5V, V ~ ^ 0
. 0.23 0.4 - • • ' v
V,N <-U).mV, IS1N¿ <8.0mA
T 7.5 ' mA
5.1-
TA-25°C - . .
4.1 5.0- mA
Tfl=25°C
.Sígailvc ""rr-i •
40
to» t¡ Tíiís rating applíes for ±15V supplles. The positive input voltee limít Is 30V above the negative supply. The negative input voitage limít
i iqual to the negative iupply voltage or 30V belovv the positive supply, whichever is less.
NettZ: Thfi máximum ¡unction temperature of the LF111 !s -fl50°C, ihe LF211 is -1-110"C and the LF311 Íi-t-85aC. For op«rating at elevated
1.5 pipera tu res, devices in the TO-5 package must b« derated based on a thermal raiistance of -í-1500C/W,iunctÍon to amblen!, or +45° CAV, ¡unction

locase. -
Hati 3: These soecifications-apply far Vg = ±15V and -55aC < T A .< -t-125"C for the LF111, unless otherwíse stated. Wíth the LF21Í,.íiovv«ver,
(iittmp«rBture5O«cificationsarelímitedíD-2S'iC < T A <-t-85 J C and ¡of the LF311 0°C < TA <-!-70JC. The offset Voltage,_off«t current and bias
a«ent soecifícatlons apply for any supply voltage from a síngie 5.0 mV supply up to 115V supolíes.
Ñau ^: The offset voltages and offset currents gíven are the máximum valúes reciuired to drive the output within a «olí of ehher suaply wiln a
]J}mA load, Thus, these parameters define an error band and take intP account the worst case effects of voltage gain and inout impedance.
)igti 5: The response time specifieíj (see definitions) is ¡or a 100 mV input «ep with 5.0 mV overdrive. _ '
jioli 6: For ínout voltagesi greater tnan 1SV above the negative suppiy the bias and offset currents will increase—see tvpical performance curves.
.)¡óti 7.: Qa.nat'sncirt the sirobe pin to ground; it should be current driven at 3 to 5 mA. •
-13.5

Apical Applications

V-"J=1
! "sasnve supply. The negative ¡nout voltagífta

KMM LF311 is.-Í-8S0C. For operatingata"


'-•"•V.junction ro ambient, or -f45*C/W, ¡í.

i ~A < -H25 a Cíorthe LF11Í, unless oth»


!="-and for tile LF311 0°C < TA <^7tfC
'1-55.0V suoply up toi15V suoplles, ¡.,.
'.ié oiitout within a volt of erther suc-oly v
r •TTL w OIL I>"«1 «I t"«.
icnof voltage gain and input ¡moedance,
¡riw*. ; '.

ntsWI ¡ncrease-see typical performance o


Cryit«l OseilUtor
Runnitrq Multivibr»tor

5-3
,'."íi ' vi Common Moda viTamperature - •
Transfer Functloi
IOJMM- • 40,000

~ l.Q 1,0 12 16 20 24 . I -55 -35 -15 5.0 2S 15 65 IS 105 1Z5


IfiPUT CQMMON MDOE VOLTAGE [V| TEMPEHATUBErCI

Response Tima for Varíouj Responso Time for Various


Input Overdríves Input Overdríves

0,4 QJ& 0.1

Rasponi« T¡m« for VarioUi Rwponsa Tima for Varioui


Input Overdriwes > ' " Input Ovwdrlves

l.t 3.0 tJ) 1.0 Í.D 1.0 Í.O

Output Límitínq Characterirtíci Suppfy Current

?OSITIVESL)PfLY-
OUTPUT 10 W

"PQSITIVEAMQT
NEGAIIVESUfftY-
,3UTPUTHICHJ

5.0 10 15 10 2S

OUTrUT VOLTACE (V) SUPfUT VOLTACE ¡VI

5-4
Semiconductor
LH0070 Series Precisión. BCD Buffered Reference
LH0071 Series Precisión Binary Buffered Reference
General Description " : ' ' . ' ,.. '"""... •"'"•'
The LH0070 and LH0071 are precisión, three terminal, making them ideal cholees as reference voltages in
voltage references consisting of a temperatura compen- precisión D to A and A ta D systems.
„ t n 03
sated zener diode dríven by a current regulator and a
¿ í t¿- r^- r^.
i buffer amplifíer. The devíces próvida an accurate refer-
ence triar ís virtually Independent of ínput voltage, load
i Features
íi S
current, temperature and time. The LHOQ70 has a
1Q.OOOV nominal,putput to pf,ovide_equal.step_sizes ¡n Accurate output voltage -
BCD applications. The LH007T has a 10.240V nominal
3 -- OJ
LH0070 '" ' ' ••• : 10V±0.01%
LM199A

CT)
N output to provide equal step sizes in binary applications.
i LH0071 10.24V±Q.01%
111 _I
!ll| The output voltage ís established by trimming ultra- Single supply operation 12.5V to 40V
stable, low Temperature drift, thín film resistors under Low output impedance . ,._.. O.1.Q.
o|
11
actual operating círcuitconditions.The devices are short- Excellent line regulation 0.1 mV/V
circuit proof in both the 'current sourcing1 and sinking Low zener noíse
directions. : ' •.
3-lead TO-5 {pin compatible wíth the LM109]
¿5§
— w
S The LH0070 and LH0071 seríes combine excellent Short circuit proof i ' • '•••"
:^ long term srabílity, ease of applicatíon, and low cost. Low standby current 3 mA
^ i a u.
- ¿ iA ¿
1
o
Equivalen! Schematic Connection .Diagram
I .i
ií^SÍ
^
c oo o
1 - •?' 3 C) O
TO-39 Metal Can Package
- -1 C>J OJ (*4

':s¿ o o es -S- 2
a s.
1 .r C '
1 a
:f 3 II U
ra
33

|3
•= ° ii la
"a
'•^
l'l
2>
lg
a o
J3 ca
= 0

SJ
OrdarNumber LH0070-1H, LHOQ71-1H,
.LH0070-2H or LH0071-2H . •
r. 5 ¥ Oi 75 SM NS Packaga H03A
— 3 c E c =
;- íí =™ o
—i
z

*
•o
l; Typicaí Applications -OV OUT

5
S ra
S a 55
£ [—VW 5
•VA •••TIL
VA—4~o»l s
"' o 3 lot.nrr
¿ ^" 2 u
u c
OJ
"* "5 a u £• '- Note. The outout of the LH0070 and LH0071

J:
£ c
,- * may be adjusted to a precise voltage by using
>s >—
ce the above circuít since the supply ctirrent of
1 r-j'S ^
-•; -
0 £T
S^ CT the desees ¡s relatively small and constant
1 2 18 (O
w¡th temperature and input voltage. For ihe
circuit ihowrj, supoly sansitivittes are degraded
slíghtly to 0.01%/V-change -in VOuT fof
cnanges ¡n V¡pj and V-~,

An additlonal temperature drift of Q.0001%/


°C is added aue to the varíation of suoply
current wíth temnerawre of the LHOO70 and
LH0071. Sensitivity to the valué of H1, R2
and R3 ís les* than O.OO1S/S.

StaTÍstical Voltage Standard *Output Voltage Fine Adjustment


LH0070 Series, LH0071.
Q O
m
O
O
«-*•
•^
o'
a « 5L
n ° <
^- 3_
O
11 ir
al 3 .

CD
s 8 °- 3.
S £ 3


ro _ —

'A 1A
« 3
Ul
ui
- -t
CJ o o
< C
-i H -
0 M0
° 0 °°"V3-
o o n>

3 u'
<T 3
£• 0.1

Ü. «
i'%
¿ o
. 2. o
S 5*

lh 1f
p p
ÍO U)
Máximum Power Dissipation vs Temperature

--,
TYP MAX UNITS
7~'
• 10.000 ; v.- Output Short Circuit
10.240 - ' y- 1 Cha ráete rístics

' ±0.03 ±0.1 ' • %:-


±0.02 ±0.05 . . . . %-:
9 ' ±0.3 . *.'
±0.2 ..
/"-'" %
- -- '± 0.2' • %-
±0.02 ± 0.1 X;
=0.01 ±0.04 • *';

' ' % '


0.02 .0.1
'6.01 0.03 : %":•

• ' 40 • v;i
0.01 0.03 • %:;í
3 5
mA^
0.7S 1.5 mA'

20 9, 'MVp. P :;

0.01 %/Vp.p"

0.2' 1 f¡ :"

Applications {Continued)
±0.2 %/yr.'-:
„ =0,05 %/yr.

ir tíie tEfnoeraiUfe range of —55° C < TA -

TA =• 25° C and TA * -25° C whh readlngí


meter.

Expanded Scale AC Voltmeter


ANALOG Monolithic Thermocouple Amplifier
DEVICES with Cold Junction Compensati
AD594/AD595
FEATURES FUNCTIONAL BLOCK DIAGRAM
Pretrimmed for Type J (AD594) or
Type K (AD595) Thermocouples -1N -ALM -i-ALM Vt COMP VO F=B
Can Be Used with Type T Thermocouple Inputs rüi nn nn rm r^i m m
Low Impedance Voltage Output: 10 mV/°C
Built-ln Ice Point Compensation
Wide Power Supply Range: +5 V to ±15 V
Low Power: <1 mW typical
Thermocouple Failure Alarm
Láser Wafer Trimmed to 1°C Calibration Accuracy
Setpoint Mode Operation
Self-Contained Celsíus Thermometer Operation
High Impedance Differentíal Input
Síde-Brazed DIP or Low Cost Cerdip TU LÜLlJ LU I_U LLJ LLJ
•HN -rC tT COM -T -C V-

PRODUCT DESCRIPTION are availabíe ac che package pins so chac che circule can be
The AD594/AD595 is a complete inscrumentadon amplífler and recalíbraced for che chermocouple types by che addidon of cwo
chermocouple cold junction compensacor on a monolíchic chip. or three resiscors, These termináis aiso allow more precise cal
ín combines an ice poinc reference wich a p recaí ib raced amplifier bratíon for boch thermocouple and thermomecer applícacions
to produce a high level (10 mV/°C) outpur. direcdy fcom a ther- The AD594/AD595 is available in CAVO performance grades. T
mocouple signal. Pin-strapping opcions allow it to be used as a C and che A versíons have calibración accuracíes of ± 1°C and
linear ampüfíer-compensator or as a switched oucpuc secpoinc ±3°C, respecdveiy. Bodi are designed co be used from 0°C co
concroüer using eícher fixed or remoce secpoinc concrol. Ic can -f-50°C3 and are available in 14-pin, hermedcally sealed., stde-
be used co amplify Íes compensadon volcage direccly, chereby brazed ceramic DIPs as well as low cose cerdíp packages.
convercíng íc co a stand-alone Celsius cransducer wich a low
irnpedance voltage outpuc. PRODUCT HIGHLIGHTS
The AD594/AD595 includes a diermocouple faílure alarm chac 1. The AD594/AD595 provides cold juncdon compensauon,
indícaces íf one or boch chermocouple leads become open. "Hie amplificación, and an oucpuc buffer Ín a single IC package.
alarm oucpuc has a flexible formac whích includes TTL drive 2. Compensacionj zero, and scale faccor are all precalibraced
capabilicy. láser wafer crimming (LWT) of each JC chip.
The AD594/AD595 can be powered from a single ended supply 3. Flexible pinouc provides for operación as a secpoinc contro
(including +5 V) and by íncluding a negadve suppiy, tempera- ler or a scand-aione cemperacure cransducer calibrated in
cures below 0°C can be measured, To mínimize se!f-heacingj an degrees Celsius.
unloaded AD594/AD595 will cypically operace wích a cocal sup-
piy currenc 160 UA, buc is also capable of delivering in excess of 4. Operación ac remoce applícacíon sites is facilicaced by low
±5 mA co a load. quiescenc currenc and a wíde supply volcage range +5 V to
dual supplies spanning 30 V.
The AD594 ís precalibraced by láser wafer crimming co macch
che characceriscic of cypej (iron-constancan) cherraocoupies and 5. Differencial ínpuc rejects common-mode noíse volcage on c
che AD595 is láser trimmed for wpe K (chromel-alumel) Enpucs. chermocouple leads.
The cemperacure cransducer volcages and gain concrol resiscors

REV. C
Information furnished by Analog Devices is believed to be accurate and
relíable. However, no responsibility is assumed by Analog Devices for íts
use, ñor for any infringements of patents or other rights of third parties One Technology Way, P.O. Box 9106, Norwood, MA 02062-9106, U.S
whicn may result from its use. No license is granted by ímplícation or Teí: 781/329-1700 World Wide Web Site: http://wviAW.anaIog.c
otherwíse under any patent or patent rights of Analog Devices. Fax: 781/326-3703 ¡D A n a l o g Devices, Inc., 13
= 5V I TypeJ{AD594},TypeK{AD595)Thef7nocauple (

Mude! ADS94A AD594C AD595A AD595C


Min Typ Max Alín Typ Max Mín Typ ( Max Min Typ iSIax Uoits
ABSOLUTE MÁXIMUM RATING
+V S to -Vs 36 36 36 36 Volts
Common-Modc Inpur Voltage -Vs-0.15 +VS -Vs-0.13 ^Vs -V.j-0.I5 +VS "V S -O.I5 'Vs Volts
Díffcrential Input Voltage -VS -fVs -Vs +V, -V5 +V S -Vs +V S Volts
Alarm Valtages
+AU1 -Vs -Vs + 36 -Vs -Vs + 38 -Vs -Vs * 36 -Vs -Vi + 36 Volts
-ALM -Vs +V5 -Vs -Vs -Vs +V S -Vs +V S Volts
Opera ring Tempera ture Rouge -55 +125 -55 -125 -55 +125 -55 +125 ;C
OUIDUI Shan Circuit to Common Indefinite Indefimte Indefinite Indeñnite
TEMPERATURE MEASUREMENT
(Specified Temperatura Range
O a C t o *50°C)
Calibration Error at •*-25°C1 =3 s! =3 =1 9C
Stabüity vs. Temperarure 2 =0,05 =0,025 =0.05 = 0.025 »a°c
Gain Error = 1.5 =0.75 = 1.5 = 0.75 '.'<!

Nominal Transfer Functíon 10 10 10 10 mV/°C


AMPL1FIER CHARA CTER1STICS
Closed Loop Gain 1 193. -1 I93.J 247.3 247.3
Input Offset Voltage (Temperarure in °C) X (Temperarure b BC) X (Tempera ture in DC) X (Ttfmpcrature in °C) x
51.70uV/°C 51.70 uV/°C 40.44 HV/°C 40.44 uV/°C dV
Inout Bias Current 0.1 0.1 0.1 0.1 ¡LA
Differential Input Range -10 +50 -10 +50 -10 +50 mV
Cumraon-Mode Range -V s -0.]5 -Vs-J -Vs-0.15 -Y s -4 ••Vs-0.15 -V s -4 -Vs-0.15 -Vs-l Volts
Coroman-Mode Sensitiviry - RTO 10 10 10 1U mV/V
Power Supply Sensitivity - RTO 10 10 11) 11) tnVAí
Output Valtage Range
Dua[ Supply ~Vs + 2.5 -fYs-2 -Vs + 2.5 +V s -2 -Vs + 2.5 -V S -2 -Vs-2.5 -!-V s -2 Volts
Single Supply 0 +V s -2 0 -V s -2 0 +VS + 2 0 +V s -2 Volts
Usable Outpur Current ±5 -5 -5 =5 mA
3 dB Bandwidth 15 15 15 15 kHz
ALARM CHARACTERISTiCS
VCEISATJ at - mA 0.3 03 0,3 0.3 Volts
Lea ka ye Cunen! =1 =! =1 =1 uA max
Operarbg Valtageat -ALM +v s -j +Vs-4 ^V S -J -Vs-4 Volts
Short Circuit Current 20 20 20 20 mA
POWER REQUIREMENTS
SpeciRed Performance +V:[ = 5,-V;S = 0 +Vss5,-Vs=0 +VS = 5, -Vs = 0 -^Vs = 5. -Vs = 0 Volts
Operating1 +V.¡to-Vi.<30 . ^V s to-V s í30 4-Vs to -Vs < 30 +V s io-V 5 S30 Volts
Quiescent Current (Is'o Load)
+vs IfiO 300 160 300 160 300 160 300 uA
-v« 100 100 100 100 uA
PACKAGEOPTION
TO-1 16(0-14} AD594AD AD594CD AD595AD AD595CD
C«rdip (Q-14) AD594AQ AD594CQ AD595AQ AD595CQ

'Callbratcd for minünum error at +25°C usíng a [hermocouplc sensitivity of 51.7 JlV/°C, Sínce a J type thcrmocouple d¡v¡aics from this straighl fine approxímation, the AD594 will normally
tead 3.1 mV wlien the ineasuring junction is at 0"C. The AD59Í "ill íimilarly read 2.7 mV at 0°C.
; Defiued as the slope of the une cunncctmg the AD594ÍAD59S urrors measured at 0*C aad 50"C ambient temperarure.
3 Pin ó shottcd to Pin °.
'Current Sink Capability in single supply configuraron is limitcd to current drawo to ground through a 50 tóJ resistor ai ouiput valtages below 2.5 V.
f -Vj must nut e.xceed -16.5 V.

Speciticaiiuns siinwn in holdface are tested OQ all productiaa units at una! elecirical tesi. Resuhs from diose ICÍK are usetJ to calcúlate ouigoing quality levéis. All min and max specifications
are guaranieed, ahhuugh oilly ihose shown in boldface are leítcd OQ all producríon units.
Specificatums subíeci to changc wiihuur notice.

INTERPRETING AD594/AD595 OUTPUT VOLTAGES compensated signal, the following transfer funcdons should be
To achieve a cempcracure proportíonal oucpuc of 10 mV/°C and used to decermine the actual output volcages:
accuracely compénsate for the reference ¡unctíon over the raced AD594 output = (Type J Voltagt -f 16 til/) x 193.4
operaring range of che circuir., che AD594/AD595 Is gaín crirnmed ^-0595 output - (Type K Voltaje T 11 ^V) :< 247.3 or coimciycly:
to macch the transfer characceristíc of J and IC cype chermocoupits Type J voltage = (VÍD594 oittpiítflQiA) - 16 uK
ac 25°C. For a type j oucpuc in this cemperature range the TC is
Type K voltage = (AD595 oiitput/247.3) - \ jj.1/
51.70 uy/°C, while for a cype K. it is 40.44 UV/°C. The resulung
gain for the AD594 ts 193".4 (10 mV/°C divided by 51.7 llV/°C) Table I lists the ideal AD594/AD595 output volcages as a func-
and for che AD595 is 247.3 (10 mV/°C divided by 40.44 uV/°C). cíon of Celsius cemperature for type J and K ANSÍ standard
ín addidori) an absolutc accuracv trím induces an ínpur. offsec co chermocouplesj wích the package and reference junction ac
che output amplifier characteristíc of 16 ¡iV for che AD594 and 25°C. As ís normally che case, chese outputs are sub¡ect to ca!i-
1! U.V for che AD595. Thís offset arises because the AD594/ bratíon, gain and temperacure sensicívícv errors. Output valúes
AD595 is trímmed for a 250 mV output while applying a 25°C for intermedíate temperaturas can be incerpolatedj or calcuiated
chermocouple input. usíng the ourpuc equations and ANSÍ chermocouple voitage
Because a thermocoupie ourpuc volcage is nonlinear with respect cables referred co zero degrees Celsius. Due to a siíght variation
to temperature, and the AD594/AD595 lineariy amplífies the in alloy contenc between AHSí type J and DíN FE-CUN[

-2- REV. C
AD594/AD595
Table I, Output Voltage vs. Thermocouple Temperacure (Ambient +25°C, Vs = -5 V, +15 Y)

Thermocouple TypeJ AD594 TypcK AD595 Thermocouple TypeJ AD594 Type K AD595
Temperature Voltaje Output Volta ge Outpuc Temperature Yoltage Outpur Volta ge Outpuc
°C mV mV mV mV =C mV mV mV mV
-200 -7.390 -1523 -5.891 -1454 500 27.338 5300 20.640 5107
-ISO -7.402 -1423 -5.550 -1370 520 23.51! 5517 21.493 531S
-160 -6.321 -1316 -5.141 -1269 5-10 29.642 5736 22.346 5529
-140 -6.159 -1188 -4.669 -1152 560 30.732 5956 23.198 5740
-120 -5.426 -1046 -4.138 -1021 530 31.933 6179 24.050 5950
-100 -4.632 -893 -3.553 -876 600 33.096 6404 24.902 6161
-so -3.735 -729 -2.920 -719 620 34.273 6632 25.751 6371
-60 -2.392 -556 -2.243 -552 640 35.464 6362 26.599 658!
-40 -1.960 -376 -1.527 -375 660 36.67 J 7095 27.445 6790
-20 -.995 -189 -.777 -189 680 37.393 7332 23.238 6998
-10 -.501 -94 -.392 -94 700 39.130 757! 29.123 720 fi
0 0 3.1 0 2.7 720 40.382 7S13 29.965 7413
10 .507 101 .397 10! 740 41.647 3053 30.799 7619
20 1.019 200 .798 200 750 42.233 sis: 31.214 7722
25 1.277 250 1.000 250 760 - - 31.629 7825
30 1.536 300 1.203 300 780 - - 32.455 3029
40 2.053 401 1.611 401 SOO - 33,277 3232
-
50 2.535 503 2.022 503 320 - - 34.095 8434
60 3.115 606 2.436 605 340 - 34.909 8636
-
SO 4.136 813 3.266 810 S60 - - 35.713 3836
100 5.268 1022 4.095 1015 sao - - 36.524 9035
120 6.359 1233 4.919 1219 900 - 37.325 9233
-
140 7.457 1445 5.733 1420 920 - 38.122 9430
-
160 8.560 1659 6.539 1620 940 - - 33.915 9626
tso 9.667 1373 7.338 1317 960 - - 39.703 9821
200 10.777 2087 3.137 2015 9SO - 40.438 10015
-
220 11.387 2302 3.938 2213 1000 - - 41.269 10209
240 12.998 2517 9.745 2413 1020 - 42,045 10400
-
260 14.108 2732 10.560 2614 1040 - - 42.317 10591
230 15.217 2946 11.381 2317 1060 - - 43.535 10781
300 16.325 3160 32.207 3022 ¡OSO - 44.439 10970
-
320 17.432 3374 13.039 3227 1100 - . 45.108 11158
340 13.537 3533 13.374 3434 1120 - 45.863 11345
-
360 19.640 3301 14.712 3641 !140 - 46.612 11530
-
330 20.743 4015 15.552 3349 1160 - - 47.356 11714
400 21.346 4228 16.395 4057 1130 - - 48.095 11897
420 22.949 4441 17.241 4266 . 1200 - 48.S2S 12078
-
440 24.054 4655 13.083 4476 1220 49.555 12253
- -
460 25.161 4369 13.933 4686 1240 - - 50.276 12436
430 26.272 5034 19.733 4896 125Ü - - 50.633 12524

chermocouples Table I should noc be used in conjunccíon wích SINGLE AND DUAL SUPPLY CONNECTIONS
European scandard chermocouples. Instead che cransfer funccion The AD594/AD595 Ís a complecely self-concaíned chermocouple
gíven previously and a DIN chermocoupie cable should be used. condícioner. Using a single +5 V supply che íncerconnecdons
ANSÍ cype K and DIN NlCR-Ní thermocouples are composed shown in Figure 1 will provide a dírecc oucpuc from a cype J
chermocoupie (AD594) or cype K chermocouple (AD595) me
CONSTANTAN suring from O a C co +300°C.
* V; (ALUMEL)
Any convenienc supply volcage from +5 V co +30 V may be

A used3 wich seüf-heacing errors being minimized ac lower supply


levéis. In che single suppiy configuración che +5 V supply con-

;'¿
neccs to Pin 11 wírh che V- conneccion ac Pin 7 scrapped to
power and signa! common ac Pin 4. The chermocoupie wíre in
•6*¿ pucs connecc co Pins 1 and 14 eicher díreccly from che measuri
I IRON
poínc or chrough incervening connecáons of similar chermo-
jJCHROMEL) couple wíre rype. \Vhen che alarm oucpuc ac Pin 13 Ís not used
should be connected co common or -V. The precalibraced fee
back nccwork ac Pin S is ded co che oucpuc ac Pin 9 co provide
Figure 7. Basic Connection, Single Supply Operatíon 10 mV/°C nominal cemperacure cransfer characcerisuc.
of tdenúcal alloys and cxhibic similar behavior. The upper cem- By using a wider ranging dual supply., as shown in Figure 23 ch
peracure limics in Table I are chose recommended for cype J and AD594/AD595 can be incerfaced co chcrmocoupies mcasuring
cype K. chermocouples by che majoricy of vendors. boch negative and excended posícive cemperacures.

REV. C —3—
DEVICES 4/8 Channel Analog Multiplexer
AD7501/AD7502/AD7503
FEATURES FUNCTIONAL ELOCK DIAGRAAIS
DTL/TTL/CMOS Direct Interface
Power Dissípation: 30p-W AD7501/AD7503
RON: 170Í1 EN A2 Al AO

Standard 16-Pin DIPs and 20-Terminal Surface J ? í J


^_1 | j. ^n
Mount Packages
VDD o—! | TTL/DTL TO CMOS UVEL THAJJSIATOR | I

OUT SI SS

AD7S02
EN Al AO

GENERAL DESCRIPTION VDO o—) j OTUTTL 70 CMOS LEVEl TRAMSLATOR ] I


The AD7501 and AD7503 are monolithic CMOS, 8-channe!
analog multiplexers which swítches one of 8 inputs to a GNDtJ | OecOOERfPRWEH j |

common output dependíng on che state of three binary ad-


dress Unes and an "enable" input. The AD7503 Is ídendcal
O
to the AD7501 except its "enable" logic is inverted. All
digital inputs are TTL/DTL and GMOS íogic compatible.
The AD7502 is a monolithic CMOS dual 4-channe! analog
OUT SI Sí
•H~
SS S3 OUT

multiplexer. Depending on the statc of 2 binary address in-


puts and 'an "enable", it switches two output buses to two
of 8 inouts.

TRUTH TABLES

AD7501 AD7503
A; AI A0 EN "ON" A2 A! AO EN "ON"
0 0 0 1 1. - 0 0 0 0 1
0 0 1 1 ' 2 0 0 1 0 2
0 1 0 1 3 . "0 1 0 0 3
0 1 1 1 4 0 1 1 0 4
1 0 0 1 S- ' ' 1.. 0 0 0 5
1 0 1 1 • 6 1 0 1 0 6
1 ! 0 1 7 1 1 0 0 7
1 I 1 1 3 1 1 1 0 8
X X X 0 None X X X 1 Nonc

REV. A CMOS SWITCHES Se MULTIPLEXERS 5


, ' j „ OVER SPEQFIED - • - -• --^
TEMP. RANGE
PAHAAIETEK VERSIÓN 1 SWITCH AD7501, • -- .
CONDIT1ON AD7301, AD7J03 AD7502 AD7S03 AD7J02 TEST CONDITIONS i
ANALOG SWITCH •
R ON . • All ON 17Qfl typ, 300Í1 max -10V < Vs <»10V . .,J
M
«ON «• VS All .ON 20% typ • Ig - UOmA AD
All ON O.J%/"C typ Vs - OV, Ij - i.OmA '' " AD
ÚR OfJ Bctwecn Switchei All ' ON 4% typ •
«ON V!' Temperaturc Bctwccn AD
All ON AD
's K OFF 0.2nA iyp( 2nA max " SOnA max Vs - -10V, VQUT - i-!OV and AD
_ S OFF 0.5 nA max JOnA max • V s -*10V.V o u r »-10V
AD
W K OFF !nA typ, 10nA mix O.ónA cyp, inA max 250nA max 125nA max Vs --lOV.VoUT-^lOVand
AD
S OFF JnA max 3nA max 2SOnA mix 125nA max AD7J01/02) Eniblc LOW AD
AD7503! EnablcHIGH
K ON 12nA max 7nA max 300nA max 175nA mix vs.o AD
1"OUT - 'Si
S ON J.JnA max 3.5nA max 300nA mix 175nA mix AD
DIGITAL CONTROL AD
V1NL
All O.BV mix * AD
VNH All 2.4V min •
NO
IINL or 'INH All 10nA typ •
'To
CIN All JpF typ ' See
DYNAMIC CHARACTERIST1CS JE

[ ON
All O.Bus typ VN • 0 [D +5.0V Cc
[ OFF
All O.SUi typ • (See Test Circuit 2)
Alt ' OFF JpF typ
COUT All OFF 30pF typ UpF typ
CSOUT All OFF Q.SpF typ
Cjs Betwcen Any TWQ Swjichc ¡ All OFF O.JpF cyp
POWER SUPPLY
'DD All 500uA max SOOfiA max All Digital inpim Low
All 500|íA max • JOOuA mix

'DD All SOOfíA max ' 800UA mix


^
All Digital Inpuu High Ty
"ss All 300uA max 300iiA rnix

l. R
ipeci/ieniom u AD7J01 ujd AD7J03.
tnion tptdfied for O lo -70"C. KQ venían for -IS C lo-8! CiindSQ.SEv iionifor-iS Cío-I» C.

ABSOLUTE MÁXIMUM RATINGS*


[TA = -rZS'Cunlessotherwisenoied)

VDD to GND . . . . . ' . . . . + 17V Operating Temperamre


Vss to GND . . . . . . . . . . . . . . . . . . . . . . . . - 17V Coramcrcial (KN Versión) O to ~70°C
V Between Any Switch Termináis (see Note 1) . . . . . . 25V Industrial (KQ Versión) . . . . . . . . . -25°C to -f85°C
Digital Input Vokage Range . . . . . . . . . . VDD to GND Extended (SQ, SE Versíons) . . . . . . . -55°C to -f 125°C
Overvohage at VOur (Vs) Vss, VDD Storage Temperature —65"C to -i-150°C
Switch Current (1$, Concinuous One Channei) . . . . . 35mA Lead Teraperanire (Soldering, lOsec) -í-3QQ0C
Switch Current (Is) Surge One Channei) CAUTTON
1. Do no[ applyvoltages hlgfaerthau V DD and Vss to anyothcrterminal,
Ims Duración, 10% Ducy Cycle . 50mA especiaily when Vss " VDD = °V ill otber pins should be ac OV.
Power Dissipanon (Any Package) 2. Thc digital control inputs are díodc proccctcd; howcvcr, pcnnanenc damage
Up to -í-750C 450mW may occur on unconnected uniís uuder high energy clcctrostatic fieids. Kcep
Derates above +75°C by 6mW/°C unused units in canduciivcfDam ai all times.

CAUTION:
ESD (electrostatic discharge) sensitive device. The dígita! control inputs are diode proteaed;
howeverj permanent damage may occur on unconnected devices subjecr EO high cnergy electro-
static fídds. Unused devices must be stored ¡n conductive foam or shunts. The protective foam
should be discharged to the destination socket before devices are insened.

5-70 CMOS SWITCHES & MULTIPLEXEHS REV. A RE


ORDERING CUIDE PIN CONFIGURAHONS
JT CONDITIONS Tempera ture Package DEP
Model1 Range Optíon" —
OV < V¡ < Al [T TTJ AO A, (T
^^
- l.OmA AD7501KH 0°Cto-¡-70 0 C N-16 GtJO fT ÍEK CMO fT

AD7501KQ -25°Cto-í-S5°C Q-16 . EN fT ÍU v00 EN fT

AD7501SQ
AD7501SE
-55 D Cto+125°C
-55°Cto-M25°C
Q-16
E-20A
«n
r—-
AD75Q1,AD7503
IOPVIEW
»]•«
TT-] ^_
OUT ry
íí f~i"
AD750Z
TOP VIEW
ifJo< to St.l.l |Nol ID Sc.1.1
AD7502KN 0°Cto+70°C N-16 S7 [T 7T]. 7; [T
v s - -r-juv, V O U T --IU
AD7502KQ -25°Cto-f85°C Q-16 «E Tñ] sa
»E
AD7502SQ -55 D Cto-M25°C Q-16 ssfT T]« «ti
Vs --10V, VouT"" 10
D750IWÍI Enable LOW AD7502SE ~55°Cto + 125nC E-20A
D7503i Eiubk HIGH LCCC
AD7503KN 0°Cto +70°C N-16
5 .0
AD7503KQ -25°Cto-i-85 D C Q-16
AD7503SQ ~55°Cto-M25°C Q-16
AD7503SE -55°Cto-f 125°C E-20A

NOTES ' . •• •
'To ordcr MIL-STD-883, Class B processed parts, add/883B tó pan nurober.
Sec thc AaaJog Devices' 1990 Milítary Databook for military data sfaect.
2 E = Leadless Ceramic Chíp Carríer; N = Narrow Plástic DIP; Q =
Cerdip, For outlíne Information see Package Information scctioar
(Scr'iS Círcuít 2)

fIC- NOCONMECT

,11 Dtgiul Inputs Low

,[[ Dígitil InputJ Hígh


Typical Performance Characteristics
1. RON Versus Vs. : -." 2. Digital Threshold Voltage

... O 10 -H70°C

-25°C £0 -f85°C At Dtfferent Poner Supplies At Differem Temperaturas vs. j°ower Supply
-55°C to - 125°C
-65°C to -i50°C
300°C 4. Power Dissipatíon
3. toN) k)KF

i my otfcer terminal,
auldbc^OV.
3owe»er, pcrmanen! damage : II
rjy dtcrostadc fields, Keep

. Temperatura vs. Digital Input Voftage vs. Logíc Frequency (50% Dury Cyc/e

REV. A REV. A CMOS SWITCHES & MULTIPLEXERS 5


AD7501/AD7502/AD7503
TYPICAL SWITCHING CHARACTERISTICS

TEST CIRCUIT 1 TEST CIRCUIT 2

ADT501 _J T __j T_ _^_ _

I I I I
AD75Q1 1 I_ J. _1 VDD o ! I TTUDTL.TO-CMOS LEVEL TRANSLATOR I
r —i- —i—-r-H-~ '*15V1 ] I I I I I t FEATU
VOD n I TTL/OTL-TO-CMOS LEVEL TflANSLATOR I
GNOO-j I OECODER/DRIVEfl ^ ^ ]
Msvj°n ' 1 1 r-h 1 i r1 RON:
I I ' —1 ' I I 1 1 I 1 ! I !.
GNDO—I OECODEHÍDfllVER t Powe
I H 1 1 1 ¡ 1 1 T-1 |
TTL/D
_|_ j -
im111 t Break
Stand
Su r

1/is/DIV l^s/DIV 1/Is/DIV IjJs/DIV

BBBBB9DBBB GENERA
15V/DIV) BHflBBflBB The AD7
BBBBBBBÜ packaged
It switche
the state
•m^BMii^H^HnMjMQffi ^n^nn IBBsffl^HPJÍD
idéntica!
BBBBBBBB two of 16
Vj - -IDV.Vj -+10V V, -+1QV, V2 - -10V Vs • -10V an "enabl

ABSOLU
(TA = + 2
•BflBBBflB
Vss - GN
V Betwe
Digital In
Overvolta
Switch C
Switch C
Ims D
Power Di
Up to
Derate
Operaung
Comm
Industr
Extend
Storage T
Lead Tem
CAUTION
'Do not app
when V5S =
JThc dígita
occur on u
uniís tn co
*Strcsses a
cause pcr
functional
thosc ind
implicd.
periods m
may be app

5-12 CMOS SWiTCHES & MULTIPLEXERS REV.A REV.A


Jítno {he worst ¿LA Semiconductor Drivers/Receivers
y '2 mA in the
ni n a required
t-3 «3Ch OUtpUt.
DS1489/DS1489A Quad Line Receiver
General Description Features
The DS1489/DS1489A are quad une receivers • Four totally sepárate receivers per package
designed TO ¡merface data termina equipment
with data Communications equipment. They are • Programmable threshold
consiructed on a single monolíthic süicon chip.
These devices satisfy the .specifications of EIA _ n ., - . , , . ,.
liílOf j .j M
standard No. DC-WI,-
RS232C, TU
The nf.í^on/r>f,
DS1489/DS1489A>mn A BuilMn input thresho d hysteresis
.
meet and exceed the specifications of MC1489/
MC1489A and are pin-for-pin replacements. The " "Paü safe" operating mode
DSH89/DS1489A are available in 14-|ead cera-
mic dual-ín-line package. • Inputs vviihstand ±30V
~3"-u'/fn mv

Schemaíic and Conneciion Diagrams Dual-ln-Une Package

X
caiinot " Y'

1— J-')0~~l i— J'*0"!
U'í \^í

• i i < i t i

\" 1 C>D ' »"1«SI ' 1 {0.1-01 1

B1HI1- *, •!(•
Order É"Jumber DS1489J, 'DS14.89AJ,
DST489N or DS1489AN
J!V
Sea NS Package J14A or N14A

AC Test Circuit and Voltage Waveform:


.QK.1 OUIPUI vtc
0 0 O

/• i,, , , y, i ,
/*- 1
H^ ,
1
j
• •
«M».toH
L-
^S~ 1^
^ K-Cluone
«r ^. \'ff
'-—' ' -— ! «-

Typical Applications
nwii tiiuiui anuí' utraii

í
1

^r.íM;:^,,,
HUDII

"•( 1 „ °O

X
MiJit»

- 1r .
" -^ -«K'— i ^
"

^.
~

x f 1 ^
nunti

_i—

5 [-H¿l§
" .*"*.

RS232C Data Transmission MOS 10 TTL/DTL Translaior

1-9
The following apply for T A = 25°C unless otherwise specified. " .

DS1489/DS
• <r
Power Supply Vóltage ' 10V • '.*--•,
Input Voltage Range Í30V
Output Load Current 20 mA
Power Díssipation (Note 2) 1W • • •
Operating Temperature Range 'Q°C 10 + 75°C
Storage Temperature Range 65''C to +150JC

Electrícal Characíeristics (Notes 2, 3 and 4} '- -


DS1489/DS1489A:The following apply forV c c = 5.0V ±1%, 0°C <T A <+75°C uniess otherwise specified.

PARAMETER CONDITIONS MIN TYP MAX UNITS i


VTH Input High Threshold Voltage TA = 25°C, VOUT < 0.45V, DS1489 1.0 1.5 V
IOUT = 10 mA DS1489A 1.75 2.25 V

VTL Input Low Threshold Voltage TA = 25°C, VOUT >2.5V,I OUT =-0.5 mA 0.75 1.25 V

|,N Input Current V1N = +25V •K3.6 +5.6 +8.3 mA


VIN = -25V -3.6 -5.6 -8.3 mA
V1N = +3V +0.43 +0.53 mA
V 1 N =-3V -0.43 -0.53 mA
.:;

VOH . Output High Voltage- V [N = 0.75V 2.6 3.8 5.0 V


ír

Input = Open 2.6 3.8 5.0 V

V OL Output Low Voltage V,N =3.0V, IOUT * 10 mA .. ... . . 0.33 0.45 V

lsc Output Short Circuit Current V,N = 0.75V 3.0 mA


•'

Ice Supply Current V,N =5.0V 14 26 mA

Pd Power Díssipation V 1 N =5.0V • 70 130 mW '

- •' -

Switching Characteristics (vcc = 5v,TA = 25° C)

PARAMETER t.- CONDITIONS, • . ' - -MIN TYP MAX UNITS

tpdl Input to Output "High" R L = 3.9k, (Figure 1} (ac Test Circuit) 23 85 ns


Propagation Delay

IOOQ Input to Output "Low" R L = 390Ü, (Figure )) (ac Test Circuit) 20 50 ns


Propagation Delay

tr Output Rise Time R L = 3.9k, (Figure 1} (ac Test Circuit) no 175 ns

t, Output Fall Time R L = 390H, (Figure 1) (ac Test Circuit) D 20 ns

Note 1: "Absolute Máximum Ratings" are Ihose valúes beyond VJhich ihe safety of the device cannot be guaranteed. Except for "Operating
Temperature Range" ihey are not meant to imply tnat the devjces should be ooeraied at these irniís. The ¡able of "Electrical Characierisucs"
provides conditions for actual device operation.
Note 2. Unless otherwise specified min/max limits apply across the 0°C lo -f-75°C temperatura range for ihe DS1-389 and DS1489A.
Note 3: All currents into device pins shown as positive, out oí device pins as negativo, all voltages referenceü to cround unless otherwise noled. All
valúes shown as max or min on absolute valué basis.
Note d; These specifrcations aoply for response control pin = open.
V><

1-10
Ige and case temperatura at 10 mV/ *
'e range at a specified operating cúVr
Semiconductor
ar adjusted to zero.
LM555/LM555C Timer o
e
General Description e
The LM555 is a highly stable device for generating • Adjustable duty cycle O
accurate time delays or oscillation. Additíonal termináis » Output can source or sink 200 mA
are províded for triggering or resetting if desi/ed. In the • Output and supply TTL compatible
time delay mode of operation, the time is precisely con- • Temperature stability bener than 0.005% per °C
TO-46 trolledby one external resistor and capacitor. For astable' • Normally on and normally off output
íletal Can Package* operation as an oscülator, the free running frequency and
duty cycle are accurately controlled with two external
resístors and one capacitor. The circuit rnay be tríggered Applications
and reset on- falling waveforms, and the output circuit • Precisión timing
can source or sink up to 200 mA or drive TTL círcuíts.
• Pulse generatíon
• Sequentíat tíming
Features • Time delay generation
» Pulse width modulatíon
• Direct replacement for SE5S5/NE555
i connecied to negativa pin • Pulse position modulation
» Timing from microseconds through hours
• Operates ín both astable and monostable modes • Linear ramp generator
imber^.M135H, LM235H,
H, LIM5AH, LM235AH
or fR)335AH Schematic Diagram
e NS Package H03H

1
f '1

Connection Diagrams

TOP VIEW

Ordor Numlwr LM555CN


S*« NS Pt«:k»9fl N08B
Oder Number LM555J or LM555CJ
Ordor Numb«r U1555H, LM5SSCH SM NS Pnckag» J08A
5e« NS Pnckaga H08C
LO Absolute Máximum Ratings
LO
LO Supply Voltage . _ . • • " . . ; ' • " +18V
Power Dfssipatíon {Note 1) 600 mW
Operating Temperature Ranges

LO LM555C
0°Cto+7G G C
LO LM555 -55°C to-H25°C
LO Storage Temperature Range
; s« í -65°C to+150°C
.;# i Lead Temperature (Soldering, 10seconds) 300° C

Eléctrica! (TA =25°C, V cc o + S V t o + I S V , unless otherwise specified)

SuoDlV Voltage

Suoply Cutrent
5
VCC-15V.RL.« 12
(Low State). (Note 2)
Timing Error, Monostable
Initial Accuracy
0.5 1
Drift wrth Temoerature R A . H S =• He to look, 30 50
C«0.1fJF, (Note 3)
Accuracy o«er Temperatura 1.5 3.0 1.5
Drift with Supply
0.05 0.2 0.1
Timing Error, Aitable
Initral Accuracy 1.5 2.25
Drift witíi Ternwrature 90 150
Accuracy overTemperaiure 2.5 3.0
Drift wiinSupoly 0.15 0.30
Threjnold Voltage
0.667 0.667
Trigger Voltage • 15V 4.8 • 5 5.2
• 5V 1.45 1.67 ' 1.9 1.67
Trígg«r Current 0.01 0.5 0.5 Output Propa
Reiet Voltage - ' Voltaoe Lavel
0.5 1 0.5
fleset Current 0.1 0.4 0.1
Threihold Current INote 4) 0,1 0.25 (U
Control Voltage Level • 15V 9.6 10 10.4 9 10
•5V. . 2.9 3.33 3.8 2.6 3.33
Pin 7 Leakage Outpot Higrí

ñn 7 Sai (Noie 5)
Outout Low :- 1SV.1, - 1 5 m A 150
•r-.¿ Ouioui LDW V cc -4.5V,I 7 ..4.5mA 70

-?,l Output Voliaoa Orco (Low) V^ - 15V


^ ' lOmA 0.1 0.15
K > 50 mA 0.4 0.5
ls,N)t MOQmA 2 2.2
ISIN< • 200 mA 2.5
Vce • 5V
K -8mA
ISIMK - 5 mA 0.25

Output Vottage Orop (Higrí) , RCe - 2 D O m A , V c c - 1 5 V 12.5 12.5


Isounce • 100mA.V cc - 15V 13.3 12.75 13.3
Vcc - 5V 3.3 2.75. 3.3
R¡M Tíme of OJCDOI 100 100

Fall Time of Outout 100 100

Noto 1: For operating at clevaied lemperatures the device musí be derated basad on a +150°C máximum ¡unction temperatura and a
resistance of •M5JC/W ¡unctíon to case forTO-Sand -f]50 a C/W ¡unction lo ambient for both packages. 1
Note 2; Suooly current when output hígh typícally 1 mA less at VQQ - 5V. • ;
Not«3: Tesred at V c c - S V a n d V c c -15V. j
Note A: Thls wíll determine the máximum valué of R^ + Hg for 15V operation. The máximum total !RA + RB' ' s 2 0 Mfl. j
Note 5: No orotection agaínst excessive pin 7 currenr ís necessary providíng the package diisípatlon ratíng wíll not be exceeded.

' 9^30
12

,,£ST VOLTAGE LEVEL OFTñlGGER PULSE (X V SUPfLY VOLTAGE IV)

Low Output Voltaje vs '•'" Low Output Voltage vs -•' Low OutDUt Voltage vs
Output Sínk Current Output Sink Current _OutputSínk Current

Output Propagatíon Detay vi Díscharge Transistor (Pin 71


Voltage Level of Trigger Pulse Voltage vs Sínk Current

O.i aj. Q.3 -• •- 0.01 0.1 1.0 ID 101

OLTAGE LEVEL OF TfllGGEH PULSE (X -- LOWESTVQLTAGE LEVEL QFTHIGGEH PULSE IX ^

Discharge Transistor (Pin 7)


Voltage vs Sínk Current

nwraum junction temoefature and

9-31

También podría gustarte