Investigacion Unidad 4 Ferman

19
DOCENTE ANGEL ARTURO FERMAN MARTINEZ TRABAJO TRABAJO DE INVESTIGACION UNIDAD 4 ESTUDIANTE JESUS VIDAL RODRIGUEZ CARRERA INGENIERÍA EN SISTEMAS COMPUTACIONALES MATERIA LENGUAJE DE INTERFAZ INSTITUTO TECNOLÓGICO SUPERIOR DE TIERRA BLANCA

description

Unidad 4 Lenguajes de interfaz

Transcript of Investigacion Unidad 4 Ferman

INSTITUTO TECNOLGICO SUPERIOR DE TIERRA BLANCA

DOCENTEANGEL ARTURO FERMAN MARTINEZ

TRABAJOTRABAJO DE INVESTIGACION UNIDAD 4

ESTUDIANTEJESUS VIDAL RODRIGUEZ

CARRERAINGENIERA EN SISTEMAS COMPUTACIONALES

MATERIALENGUAJE DE INTERFAZ

UNIDAD 4TIERRA BLANCA, VER. 4 DE JUNIO DE 2015

4.3 PROGRAMACIN DEL PUERTO SERIAL Comunicacin serial en lenguaje ensamblador. En lenguaje ensamblador, se puede acudir a la interrupcin 14H de la ROMBIOS para configurar, leer, escribir o simplemente para conocer el estado del puerto; cada una de estas cuatro opciones es un servicio de la interrupcin, y se seleccionan a travs del registro AH. La figura 1 muestra los valores que debe contener el registro AH para invocar cada uno de los servicios. En todos los casos, el registro DX debe contener el nmero del puerto serie; el primero de ellos, COM1 se especifica como 00h. Servicio Descripcin 00 Inicializar puerto serie 01 Enviar un dato 02 Recibir un dato 03 Obtener el estado del puerto figura 1.Servicios para el puerto serial disponibles a travs de la interrupcin 14H Para configurar o inicializar el puerto serie, bastar con utilizar el servicio 00 de la interrupcin, colocando en el registro AL los valores equivalentes a los parmetros, como se puede observar en la figura 2. Con ste mtodo es posible obtener frecuencias de transmisin que van desde los 110 hasta los 9600 baudios.

Comunicacin serial en lenguaje ensamblador.En lenguaje ensamblador, se puede acudir a la interrupcin 14H de la ROM-BIOS para configurar, leer, escribir o simplemente para conocer el estado del puerto; cada una de estas cuatro opciones es un servicio de la interrupcin, y se seleccionan a travs del registro AH. La figura 1 muestra los valores que debe contener el registro AH para invocar cada uno de los servicios. En todos los casos, el registro DX debe contener el nmero del puerto serie; el primero de ellos, COM1 especifica como 00h.

ServicioDescripcin

00Inicializar puerto serie

01Enviar un dato

02Recibir un dato

03Obtener el estado del puerto

figura 1.Servicios para el puerto serial disponibles a travs de la interrupcin 14HPara configurar o inicializar el puerto serie, bastar con utilizar el servicio 00 de la interrupcin, colocando en el registro AL los valores equivalentes a los parmetros, como se puede observar en la figura 2. Con ste mtodo es posible obtener frecuencias de transmisin que van desde los 110 hasta los 9600 baudios.

figura 2Para enviar un dato por el puerto serial, bastar con colocar en el registro AH el valor 01 correspondiente a este servicio y en el registro AL el dato a ser enviado, invocando de nuevo la interrupcin 14H. La lectura de un dato que ha llegado al puerto se logra con el servicio 02, el cual devuelve en el registro AL el dato. La lectura del estado del puerto se consigue a travs del servicio 03 de esta misma interrupcin, y retorna en el registro AX el estado del puerto, el cual contendr los bits.

Figura 3

Por ejemplo, podemos utilizar el lenguaje ensamblador para configurar el puerto serial para 1200 baudios, sin bit de paridad, sin bit de parada y 8 bits, realizando el siguiente programa:

mov ah,0 ;servicio 00 de INT 14h: inicializar puertomov a1,83 ;configuracin: 1200 baudios, no paridad, ;un bit de parada, 8 bits de datosmov dx,00 ;Seleccionar puerto COM1int 14 ;interrupcin del BIOSmov ah,4c ;servicio 4ch de INT 21h: terminarint 21 ;interrupcin servicio del DOS

Este programa (en donde todas las cantidades estn expresadas en hexadecimal) se puede tornar ejecutable utilizando algunos de los ensambladores para PC, o utilizando el comando DEBUG del DOS.Otra forma de seleccionar los parmetros de la comunicacin y lograr sta, es mediante la modificacin y consulta de los registros correspondientes al circuito integrado que maneja la comunicacin serial: el UART 8250 o similar. Como se sabe, este circuito integrado puede ser manejado como un puerto, en el cual es posible la escritura o lectura de sus estados.

Comunicacin con el puerto paralelo en lenguaje ensamblador.En lenguaje ensamblador, se puede leer un dato del puerto mediante la instruccin IN escribir un dato en el puerto con la instruccin OUT, en ambos casos el registro AL debe participar activamente en la instruccin, bien sea como fuente (en operaciones de escritura) o destino (en operaciones de lectura) del dato, como en los siguientes casos:outDX, AL;lleva al puerto DX el contenido del registro ALin AL,DX ;lleva al registro AL, el contenido del puerto DX

Otra, exigencia, es que el nmero del puerto sobre el que se va a realizar la transferencia de datos debe estar sealado por el registro DX, a excepcin de los casos en los cuales el nmero del puerto es inferior a 255 (FFh), en cuyo caso la instruccin que lee o escribe puede sealar directamente el puerto.Como vern la utilizacin del puerto paralelo en lenguaje ensamblador es muy sencilla.

4.4 PROGRAMACIN DEL PUERTO PARALELO En lenguaje ensamblador, se puede leer un dato del puerto mediante la instruccin IN escribir un dato en el puerto con la instruccin OUT, en ambos casos el registro AL debe participar activamente en la instruccin, bien sea como fuente (en operaciones de escritura) o destino (en operaciones de lectura) del dato, como en los siguientes casos: out DX, AL ;lleva al puerto DX el contenido del registro AL in AL,DX ;lleva al registro AL, el contenido del puerto DX Otra, exigencia, es que el nmero del puerto sobre el que se va a realizar la transferencia de datos debe estar sealado por le registro DX, a excepcin de los casos en los cuales el nmero del puerto es inferior a 255 (FFh), en cuyo caso la instruccin que lee o escribe puede sealar directamente el puerto.Como vern la utilizacin del puerto paralelo en lenguaje ensamblador es muy sencilla.

Los ordenadores PC han estandarizado un tipo de interfaz para la comunicacin con la impresora, conocida normalmente como CENTRONICS. Esta interfaz es capaz de enviar caracteres a la impresora de forma paralelo. Cada carcter est codificado en un byte, del cul cada bit se transmite por un terminal diferente. Existen otros terminales que conectan ordenador e impresora, que sirven para intercambiar informacin de control y de estado, a fin de implementar un sencillo protocolo.Para realizar esta interfaz, los PCs disponen de unos elementos hardware especficos, denominados puertos de impresora o tambin puertos paralelo.En un PC pueden instalarse varios de estos puertos que se distinguen entre s con los nombres LPT1, LPT2 y LPT3 (en algunos casos tambin LPT4). Todos ellos son idnticos, salvo que tienen asignadas diferentes direcciones en el mapa de entrada/salida.Cada uno de estos puertos ocupa tres direcciones del mapa de E/S: Puerto deDatos: De 8 bits, es donde la CPU escribe los datos que se envan a la impresora (caracteres). Puerto deEstado: Registro de 8 bits de donde la CPU puede conocer diversos aspectos del estado de la impresora (apagada, sin papel, etc). Se usan slo 5 de los 8 bits. Puerto deControl: Registro de 8 bits donde la CPU puede escribir diversas seales que reconoce la impresora (validacin de datos, inicializacin, etc). Se usan 4 bits.Estos tres registros ocupan posiciones consecutivas, por lo que basta con especificar la primera de ellas. El puerto de datos ser el puerto base.La ROM-BIOS de los PCs contiene programas elementales para el manejo de estos puertos. En primer lugar, durante el proceso de arranque del ordenador, se detecta su presencia y se almacenan sus direcciones base en una zona de variables situada en el segmento 0040H (zona de variables del BIOS). En esta zona se pueden encontrar los siguientes datos: Printer_Base: En losoffsets0008H, 000AH, 000CH y 000EH, con 2 bytes cada uno de ellos, estn las direcciones de E/S en las que se encuentran los puertos base de LPT1, LPT2, LPT3 y LPT4 respectivamente. Lista de equipamiento: En eloffset0010H se encuentra una palabra que muestra de forma rudimentaria los dispositivos que se han encontrado en el arranque. Los bits 15 y 14 indican el nmero de puertos de impresora instalados. Print_Tim_Out: En losoffsets0078H, 0079H, 007AH y 007BH se encuentran los valores de TIME_OUT asociados a cada puerto. Se trata de valores que se van a utilizar para establecer cunto tiempo se va a esperar para determinar que la impresora no est disponible (est apagada, no tiene papel, etc).Las direcciones del mapa de memoria de E/S en las que sesuelencolocar los puertos de impresora son:

ImpresoraPuerto de DatosPuerto de EstadoPuerto de Control

LPT103BCh03BDh03BEh

LPT20378h0379h037Ah

LPT30278h0279h027Ah

Tabla 1

Seales de la interfaz CentronicsEl puerto paralelo, utilizado en general para el control de la impresin, maneja las seales que se muestran en la tabla siguiente. De todas ellas, las que normalmente intervienen en el protocolo de comunicacin entre el PC y la impresora son BUSY y STROBE#. Algunas impresoras pueden no utilizar alguna de las seales descritas en la tabla.

PUERTONOMBREDirPin DB25DESCRIPCIN

DATOSD0..D7S2-98 terminales de datos. Desde D0 a D7.

ESTADOBUSYE11Un nivel alto indica que la impresora est ocupada y no puede recibir datos nuevos. Tambin se pone a 1 en situaciones de error.

ACK#E10Un nivel bajo indica que la impresora ha recibido un dato y est disponible para recibir uno nuevo.

PEE12Un nivel alto indica que la impresora no tiene papel.

SLCT INE13Un nivel alto indica que la impresora eston-line.

ERROR#E15Un nivel bajo indica que se ha producido un error en la impresora. No hay papel, mal funcionamiento, etc.

CONTROLIRQEN---Flagque habilita o inhibe la generacin de la interrupcin IRQ7 cuando se activa la seal ACK#.

SELECT#S17Activa a nivel bajo. Indica a la impresora que se ha seleccionado la impresora.

INIT#S16A nivel bajo, enva un RESET a la impresora.

AUTOFD#S14A nivel bajo, la impresora se encarga de hacer un salto de lnea al recibir el carcter "retorno de carro".

STROBE#S1Validacin de datos. Cuando la impresora detecta un nivel bajo, acepta el dato.

El carcter # indica que la seal es activa a nivel bajoTabla 2El puerto de DatosGeneralmente es slo de salida, pues se dise para enviar caracteres a la impresora. Actualmente este puerto es bidireccional. La correspondencia entre los bits del registro de datos y las seales presentes en el conector DB25 del exterior es:BIT76543210

FUNCIND7D6D5D4D3D2D1D0

Tabla 3El puerto de EstadoEs un puerto de entrada. Est destinado a la lectura del estado de las lneas de interfaz con la impresora. La seal BUSY es invertida antes de llegar al registro. La correspondencia entre los bits del registro de estado y las seales presentes en el conector DB25 del exterior es:

BIT76543210

FUNCINBUSY(inv.)ACK#PESLCTINERROR#------

Tabla 4

El puerto de ControlEs un puerto de salida destinado a la escritura de comandos sobre la impresora. Las seales SLCT#, AUTOFD# y STROB# son invertidas antes de llegar a los correspondientes terminales de conector externo. El bit 4 (IRQEN) no es una seal que corresponda a alguno de los terminales de la interfaz Centronics. Se trata de unflagque habilita o prohibe la generacin de la interrupcin IRQ7 cuando se activa la seal ACK#. Las rutinas del BIOS que se ocupan de la impresora no utilizan esta interrupcin. La correspondencia entre los bits del registro de control y las seales presentes en el conector DB25 del exterior es:

BIT76543210

FUNCIN------IRQENSELECT#(inv.)INIT#AUTOFD#(inv.)STROBE#(inv.)

Tabla 5EL PUERTO DE IMPRESORA COMO CONTROL Y ADQUISICIN DE DATOSUn puerto es un mecanismo que conecta a un procesador con el mundo exterior. Por medio de un puerto, el procesador recibe una seal desde un dispositivo de entrada y enva una seal a un dispositivo de salida. Los puertos son identificados por sus direcciones en el intervalo 0000h-03FFh, lo que permite el uso de 1024 puertos en total. Las direcciones no son de memoria, estn situadas en un mapa diferente de entrada/salida.Todo lo descrito en el apartado anterior define el funcionamiento del manejo de la impresora, a travs de unos puertos. Pero estos mismos puertos se pueden ver de otra forma, sencillamente como tres puertos consecutivos de E/S un poco particulares.Para la comunicacin con los puertos se utilizan las instrucciones IN y OUT de ensamblador.IN transfiere informacin desde un puerto de entrada al registro AL si es un byte, y al AX si es una palabra. El formato es:IN reg_acum, puertoOUT transfiere informacin a un puerto de salida desde el registro AL (byte) o el AX (palabra). El formato es:OUT puerto, reg_acumSi consideramos los puertos de datos, estado y control vistos anteriormente, podemos observar alguno de ellos de la siguiente forma o manera:D7Dato 7S7Busy (inv)C7----

D6Dato 6S6ACK#C6----

D5Dato 5S5PEC5----

D4Dato 4S4SLCT INC4----

D3Dato 3S3ERROR#C3SELECT (inv)

D2Dato 2S2----C2INIT#

D1Dato 1S1----C1AUTOFD# (inv)

D0Dato 0S0----C0STROBE# (inv)

Tabla 6Es decir, disponemos de dos puertos de salida, uno de 8 bits y otro de 4 bits y un puerto de entrada de 5 bits para el propsito que nosotros decidamos, conociendo las direcciones que ocupan.Recordar el significado de las seales marcadas con "(inv)". Esto quiere decir que estn invertida por hardware. Es decir, si se ejecuta la instruccinOUT 037AH, 0FFhse estn poniendo a 1 todos los bits del registro del puerto de control, pero en el conector externo del puerto, el DB25, aparecera un 1 slo en el pin 16 (INIT#), en los pines 1, 14 y 17 aparecera un cero (STROBE#, AUTOFD# y SELECT respectivamente).La distribucin de seales en lospinesdel conector de salida del PC (hembra) se muestran a continuacin:

Figura 1. Lospinesdel 18 al 25 estn conectados a GND.Ejemplo de control de hardware externo a travs del puerto paralelo:control de encendido de diodos LED y lectura de pulsadores externos.En la siguiente figura se puede ver el montaje correspondiente a un grupo de 8 diodos LED conectados al puerto de datos, 4 al puerto de control y 5 pulsadores al puerto de estado. Las resistencias en serie con los LEDs sirven para limitar la corriente que circula por el puerto, que no debe ser elevada para no daarlo (del orden de 3-4 mA de salida y 12-15 mA de entrada). Las que estn conectadas a los pulsadores se denominan depull-upy sirven para fijar un nivel lgico en ausencia de pulsacin. Los LEDs se encendern cuando haya un cero lgico a la salida del pin correspondiente del puerto.

Figura 2Nota: el bit 7 del puerto de estado y los bits 1, 14 y 17 del de control estn invertidos. Para trabajar con ellos se recomienda el uso de la instruccin OR-Exclusiva (XOR) que, a travs de una mscara, corrija lo anterior despus de leer del puerto de estado o antes de escribir en el de control.Las instrucciones siguientes encenderan los LEDs a modo de un contador binario:mov cx,0FFh ; la cuenta se repetir 256 vecesmov ax,0FFh ; primer nmero de la cuenta. Recordar que con un 1 estn apagadosmov dx, puerto ; se supone definida puerto=03BCh, por ejemplocont: out dx, al ; saca al puerto de datos el contenido de aldec ax ; actualiza la cuentaloop cont ; se repite 256 vecesout dx,0FFh ; apaga todos los ledsManejo de la interrupcin del puerto paralelo.El bit 4 del puerto de control, segn la tabla 5, se denomina IRQEN. Este bit habilita o permite que se produzca la interrupcin asociada a la entrada ACK#. Cuando este bit est a 1 y la seal ACK# pasa del nivel lgico 1 al nivel 0 se produce una peticin de interrupcin, que es la IRQ7.En el diseo original del PC, IBM reserv 8 interrupciones hardware, comenzando por la interrupcin 08h, para expansin de interrupciones, que son comnmente conocidas como IRQ0 a IRQ7. As la IRQ0 se corresponde con la interrupcin 08h, la IRQ1 con la 09h, etc. La IRQ7 se corresponde pues con la 0Fh, estando sus vectores a partir de la direccin 0000:003Ch.Para que una peticin de una IRQ llegue a la CPU, sta debe estar permitida, no enmascarada. El puerto 021h est asociado con la mscara de interrupciones de las IRQ. Para habilitar una determinada interrupcin se deber escribir un cero en la posicin correspondiente,sin modificar el resto. As, si lo que se quiere es permitir la IRQ7 habr que poner a cero el bit ms significativo del puerto 021h, como muestra el cdigo siguiente:in al,021h ; lee la mscara de las IRQand al, 01111111b ; impone un 0 en el bit ms significativo, IRQ7. No modifica el restoout 021h, al ; escribe la mscaraCon estas operaciones quedar habilitada la IRQ7. Una vez atendida de la forma que se haya previsto, el programa debe indicar a la CPU que la interrupcin ya ha sido procesada, para ello debe escribir un 1 en el bit 5 del puerto 020h, es decir:mov al, 020h ; carga en al 0010 0000 bout 020h, al ; lo escribe en al puerto 020hFinalmente, tan slo queda por activar el bit que permite que la seal ACK# genere una peticin de IRQ7. Para ello se deber poner a 1 el bit 4 del puerto de control , sin modificar el resto. Cuando no se quiera que se produzca una IRQ7, basta con poner a cero este bit.Al finalizar el programa, no slo se deben restablecer los vectores de interrupcin modificados, sino que tambin se debe inhibir la IRQ7, dejando la mscara del puerto 021h como estaba.Un programa que utilice la interrupcin del puerto paralelo puede tener esta estructura, en lo que se refiere al manejo de dicha interrupcin:Al comienzo:modificar vectores de la interrupcin 0Fh (IRQ7)permitir la interrupcin IRQ7, poner a 0 el bit 7 del puerto 021hDurante la ejecucin, siempre que haga falta:habilitar la interrupcin en el puerto de control, bit 4repetirprocesar la interrupcinescribir 020h en el puerto 020hhasta que se deba inhibirinhibir la interrupcin, poniendo un cero en el bit 4 del puerto de controlAl terminarInhabilitar la IRQ7, poner a 1 el bit 7 del puerto 021hRecuperar los vectores de interrupcin anteriores