Un puerto paralelo es una interfaz entre un computador y un periférico, cuya principal característica es que los bits de datos viajan juntos, enviando un paquete de byte a la vez. Es decir, se implementa un cable o una vía física para cada bit de datos formando un bus. Mediante el puerto paralelo podemos controlar también periféricos como focos, motores entre otros dispositivos.
El cable paralelo es el conector físico entre el puerto paralelo y el dispositivo periférico. En un puerto paralelo habrá una serie de bits de control en vías aparte que irán en ambos sentidos por caminos distintos.
El puerto paralelo de las computadoras, de acuerdo a la norma Centronics, está compuesto por un bus de comunicación bidireccional de 8 bits de datos, además de un conjunto de líneas de protocolo. Las líneas de comunicación cuentan con un retenedor que mantiene el último valor que les fue escrito hasta que se escribe un nuevo dato, las características eléctricas son:
- Tensión de nivel alto: 3,3 o 5 V
- Tensión de nivel bajo: 0 V
- Intensidad de salida máxima: 2,6 mA
- Intensidad de entrada máxima: 24 mA
Los sistemas operativos basados en DOS y compatibles gestionan las interfaces de puerto paralelo con los nombres LPT1, LPT2 y así sucesivamente (LPT significa Line Print Terminal), mientras que los de tipo Unix los nombran como /dev/lp0, /dev/lp1, y demás. Las direcciones base de los dos primeros puertos son:
- LPT1 = 0x378
- LPT2 = 0x278
Para puertos de más de 1 han recomendado a la dirección:
La estructura consta de tres registros: de control, de estado y de datos.
- El registro de control es un bidireccional de 4 bits, con un bit de configuración que no tiene conexión al exterior, su dirección en el LPT1 es 0x37A.
- El registro de estado, se trata de un registro de entrada de información de 5 bits, su dirección en el LPT1 es 0x379.
- El registro de datos, se compone de 8 bits, es bidireccional. Su dirección en el LPT1 es 0x378.
Los pines del puerto paralelo con conector DB25 son:
Las líneas invertidas toman valor verdadero cuando el nivel lógico es bajo. Si no están invertidas, entonces el nivel lógico alto es el valor verdadero.
El pin 25 en el conector DB25 podría no estar conectado a la tierra en computadoras modernas.
El pin 25 en el conector DB25 podría no estar conectado a la tierra en computadoras modernas.
Equipo # 2 - Programación del puerto USB
Puerto USB
Un puerto es una localización en la computadora en donde conectamos los periféricos. Estos pueden enviar información a la computadora, recibir información de la misma o hacer ambas cosas. La primer versión del puerto USB apareció en el año de 1997, junto con el lanzamiento del microprocesador Intel Pentium II.
La palabra USB viene de la frase en Ingles “Universal Serial Bus” que se utiliza para describir un tipo de puerto de PC en donde se conectan distintos periféricos tales como impresoras, cámaras fotográficas, teclados de computadoras e infinidad de productos de uso generalizado.
El puerto USB cuenta con la tecnología "Plug&Play" la cual permite conectar, desconectar y reconocer dispositivos sin necesidad de reiniciar o apagar la computadora, a diferencia de sus antecesores. En él se definen los conectores y los cables, una topología especial tipo estrella para conectar hasta 127 dispositivos y protocolos que permiten la detección y configuración automática de los dispositivos conectados
Antes de la creación del puerto USB los periféricos se conectaban mapeados directamente en direcciones de entrada y salida, a cada uno se le asignaba una dirección específica y en algunos casos un canal de acceso directo a memoria. Esto causaba que existiera conflicto en la asignación de los recursos. Además de que cada dispositivo tenía su propio puerto de conexión y utilizaba sus cables específicos, lo que daba lugar a un incremento en los costos. Todo esto en conjunto motivaron a la creación del puerto USB.
Programación del puerto USB
En lenguaje ensamblador, se puede acudir a la interrupción 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 interrupción, y se seleccionan a través del registro AH. Para configurar o inicializar el puerto serie, bastará con utilizar el servicio 00 de la interrupción, colocando en el registro AL los valores equivalentes a los parámetros.
Configurar el puerto serial para 1200 baudios, sin bit de paridad, sin bit de parada y 8 bits
mov ah,0 ;servicio 00 de INT 14h: inicializar puerto
mov a1,83 ;configuración: 1200 baudios, no paridad
;un bit de parada, 8 bits de datos
mov dx,00 ;Seleccionar puerto COM1
int 14 ;interrupción del BIOS
mov ah,4c ;servicio 4ch de INT 21h: terminar
int 21 ;interrupción servicio del DOS
Buffer de vídeo en modo texto
Una controladora de vídeo con modo de texto suele usar dos zonas de memoria distintas:
- Memoria de caracteres: conteniendo la estructura de píxeles de cada carácter de la fuentes en uso.
- Matriz de pantalla o Buffer de pantalla: conteniendo la matriz de los caracteres mostrados en la pantalla, almacenados como índices a la memoria de caracteres.
La memoria de caracteres suele residir en ROM por defecto. Sin embargo, muchos sistemas también permiten el uso de RAM para este propósito, haciendo posible redefinir el juego de caracteres para fines específicos de cada aplicación. El uso de caracteres residentes en RAM también facilitan algunas técnicas especiales, como la implementación de un buffer de vídeo para gráficos pixelados.
Acceso a discos en lenguaje ensamblador
A continuación algunos servicios de la INT 13h
LEER ESTADO DEL DISCO
AH = 01h (servicio o número de función)
DL = No. de unidad (80h-FFh para discos duros, 128-255 decimal; 0-7Fh para u. de floppy).
LEER SECTOR(ES)
AH = 02h (servicio o número de función)
AL = número de sectores a leer (Base 1: 1..255)
CH = bits 0-7, No. de cilindro o pista (LSB del No. de cilindro, 10-bits, 0-1023)
CL = bits 6-7, No. de cilindro o pista.
CL = bits 0-5, No. de sector inicial (Base 1: 1-63)
DH = No. de cabezal o lado (Base 0: 0-15, con traducción puede ser 0-255)
DL = No. de unidad (80h-FFh para discos duros, 128-255 decimal; 0-7Fh para u. de floppy)
ES:BX = dirección del buffer E/S.
· ESCRIBIR SECTOR(ES)
AH = 03h (número de la función de escritura)
· OBTENER LOS PARÁMETROS DEL DISCO AH = 08h (número de la función para obener los parámetros de la unidad).
DL = número de unidad (igual que para leer/esribir sectores)
· LECTURA EXTENDIDA DE SECTOR(ES)
AH = 42h
DL = número de unidad (igual que para leer/esribir sectores)
DS:SI = puntero a la estructura del paquete pedido al disco
Vídeo:
No hay comentarios.:
Publicar un comentario