Operaciones con números fraccionarios
Conversión binario-ASCII
Captura de teclas pulsadas
Escritura en pantalla
Manejo de interrupciones
Funcionamiento
La finalidad de la práctica es convertir la pantalla del PC en
una pantalla de visualización de un equipo de adquisición
de datos, con 4 canales. La entrada será una serie de números,
comprendidos entre el 0 y el 255 (00-FFH), que simularán ser la
salida de un conversor analógico-digital de 8 bits, que provienen
de un "driver" que, en esta primera práctica, será entregada
por el profesor. El conversor analógico/Digital convertiría
una señal analógica entre 0 voltios y +5 voltios a un valor
binario entre el 0 y el 255. El programa irá leyendo estos datos
digitales de uno en uno, según lo vaya entregando el conversor,
los convertirá al valor de tensión correspondiente y presentará
en pantalla (con dos dígitos decimales) lo siguiente:
.
|
![]() |
La periodicidad con que se leen los datos (y por tanto se refrescará
la pantalla) se controlará mediante las teclas + y - e irá
desde el mínimo posible hasta un máximo de un segundo, aproximadamente.
Este tiempo también se deberá indicar en la pantalla.
El programa comenzará la presentación al pulsar F10 y
se detendrá al pulsar F9, pudiendo volver a arrancar con F10. Finalizará
al pulsar F7.
Mediante las teclas F1 a F4 se activara/desactivará la lectura
y presentación de los canales 1 a 4 respectivamente.
Plazo de entrega : La presentación y evaluación de esta práctica será la semana del 12 de noviembre, según el grupo (ver calendario). El nombre del fichero o ficheros a entregar será de la forma parejap1.asm, por ejemplo 3a28p1.asm. Si hay más de un fichero, nombrarlo con números sucesivos y añadir un .bat que los ensamble y linke.(3a28p11.asm, 3a28p12.asm,... 3a28p1.bat)
Conversor Analógico-Digital. Dispositivo que obtiene una
representación digital de una señal analógica presente
a su entrada. Los procesos que debe llevar a cabo son los de cuantificación,
por el que la señal analógica de entrada se transforma en
un conjunto discreto de estados de salida, y codificación,
el cual asigna un conjunto de bits a cada uno de dichos estados.
Suponer que la señal de entrada a medir estuviera en el margen
de -12 a 12 v. y el conjunto de estados de salida posible es desde el 0
al 255 (8 bits). Cualquier valor de tensión se codificará
con un número entre el 0 y el FFH, para lo que se deberá
calcular a qué tensión equivale pasar de un estado al siguiente:
si el margen a medir es de 24 voltios y disponemos de 256 estados diferentes,
cada estado consecutivo representa un salto de 24/256=0,09375 voltios.
Esto limitará la precisión de la conversión, valores
muy cercanos de tensión, cuya diferencia sea menor al valor anterior,
tendrán la misma codificación.
La siguiente tabla muestra unos ejemplos de codificaciones de diferentes
valores de tensión a la entrada del conversor:
|
Codificación | Tensión entrada | Codificación |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
El programa pedido deberá hacer la conversión inversa,
dado un número codificado, obtener el valor analógico de
tensión al que corresponde. Por ejemplo, sea el estado 57H (dato
leído del fichero del disco). El valor absoluto de tensión
que representa es de 57H x 0,09375 voltios = 8,15625 voltios, respecto
del 0H, osea, respecto de -12 v. Por tanto la tensión real será
-12+8,15625 = -3,84375. Como nos piden sólo dos decimales, el dato
final a presentar será -3,84 voltios.
NOTA: en la práctica de este curso el margen de valores de tensión
a la entrada es de 0 a 5 v.
Operaciones con decimales. Se puede utilizar la técnica que se desee. Una posible solución puede ser emplear punto fijo. Tomar los datos en un tamaño de16 bits, de forma que los 8 más significativos representen la parte entera y los 8 menos significativos la parte decimal. De esta forma se pueden utilizar las operaciones aritméticas definidas en el 8086 sin mayor problema. Recordar la notación binaria para números fraccionarios.
Control de acciones periodicas. La interrupción 8 (INT
8H) del PC se activa mediante un generador de reloj interno cada 55 mseg.
La rutina de atención a la interrupción actualiza la hora
del PC y llama a la interrupción 1CH. La subrutina de atención
a esta interrupción no realiza ninguna función, ya que tan
sólo contiene una instrucción IRET.
Se puede realizar un programa que instale unos nuevos vectores a la
interrupción 1CH, de forma que apunten a una rutina de atención
cuya finalidad sea la que nos convenga. De esta forma podremos realizar
ciertas operaciones de forma periodica, sin tener que modificar ni complicar
el código del programa principal
Caracteres de gran tamaño. La idea se basa en explorar
la tabla de caracteres empleada internamente por el ordenador. Esta tabla
se encuentra en la memoria ROM, a partir de la dirección F000:FA6E.
La forma de cada carácter está descrita por 8 bytes, cada
uno de los cuales representa una fila, según se muestra a continuación:
|
............ | Representación en ROM
0011 1110 = 3EH
|