Interfaces y Periféricos, Guía 2 1 Facultad: Ingeniería Escuela: Electrónica Asignatura: Interfaces y Periféricos Tema: Manejo del Puerto Paralelo Contenidos • Manejo del Puerto Paralelo Estándar con Visual Basic Objetivos Específicos 1. Poder configurar el puerto paralelo para escribir y leer datos. 2. Transferir datos por medio del puerto paralelo utilizando Visual Basic. Material y Equipo No Cantidad 1 1 2 3 4 5 6 7 8 9 1 1 1 1 8 8 1 4 Descripción Computadora con sistema operativo Windows 98 o XP con el programa Visual Basic 6.0 Cable para puerto paralelo Fuente de +5 voltios Par de puntas para la fuente de alimentación Breadboard Resistencias limitadoras Leds IC74244 Resistencias de 4.7 KΩ Introduccion Teorica La computadora se encuentra interconectada con dispositivos externos a través de ciertos circuitos llamados puertos, los cuales permiten que la computadora tenga una ventana al exterior. La arquitectura del procesador 8086 determina una cantidad de hasta 65,536 puertos, sin embargo solo se usan 1024. En 1981, la IBM (International Business Machines) introdujo la Computadora Personal (PC). El puerto paralelo (Standart Parallel Port SPP) estaba incluido en el primer PC y se agregó a éste como una alternativa al bajo rendimiento del puerto serial, para utilizarlo como 2 Interfaces y Periféricos, Guía 2 controlador de las impresoras de matriz de punto de alto desempeño. Este puerto tenía la capacidad de transmitir 8 bits de datos a la vez (del PC a la impresora), mientras que el puerto serial lo hacía de uno en uno. En el momento que el puerto paralelo fue presentado, las impresoras de punto fueron el principal dispositivo externo que se conecto a éste. Al hacerse extensamente utilizado, el puerto paralelo llegó a ser la respuesta para conectar dispositivos más rápidos. Después de este inicio, tres grandes grupos de problemas aparecieron a los desarrolladores y usuarios de este puerto: Primero, aunque éste había aumentado su velocidad considerablemente, no había cambio en la arquitectura o desempeño. La máxima velocidad de transferencia alcanzable estaba por los 150 kbyte /seg. y era extremadamente dependiente del software. Segundo, no había un estándar para la interfaz eléctrica. Esto causaba muchos problemas cuando se quería garantizar la operación en múltiples plataformas. Por último, la forma de diseño que le dieron, limitaba la distancia de los cables externos hasta un máximo de 1,8 metros. En 1991 hubo una reunión de fabricantes de modo que se pudiera desarrollar un nuevo estándar para el control inteligente de impresoras a través de una red. Estos fabricantes, donde estaban incluidos Lexmark, IBM, Texas Instruments y otros, formaron la Network Printing Alliance (NPA), como una respuesta a estas necesidades. Desde la introducción del PC al mercado, el puerto paralelo ha sufrido varias modificaciones para hacerlo más veloz. Ya que el puerto original era unidireccional, se creó el puerto bidireccional. El puerto bidireccional fue introducido con el PS/2 compatible. Este permite una comunicación de 8 bits en ambas direcciones. Algo interesante de notar es que el puerto original tenía la posibilidad de ser bidireccional realizando una conexión entre dos pines de un componente electrónico que venía incluido en éste. (Dicho de otro modo, el puerto original es bidireccional en diseño básico, pero no en el diseño operacional). Finalmente se han creado el Enhanced Parallel Port (EPP) y el Extended Capability Port (ECP). Estos dos últimos son al puerto estándar como el Pentium al 286, además de ser bidireccionales. Inicialmente el puerto paralelo se utilizó para la comunicación con impresoras. Actualmente se utiliza también para manejar otros periféricos como CD ROM, cintas de copia de respaldo, discos duros, tarjetas de red, protectores de copia, scanners, etc. En la actualidad se conoce cuatro tipos de puerto paralelo: 1. 2. 3. 4. Puerto paralelo estándar (Standart Parallel Port SPP) Puerto Paralelo PS/2 (bidireccional) Enhanced Parallel Port (EPP) Extended Capability Port (ECP) En la siguiente tabla se muestra información sintetizada de cada uno de estos tipos de puertos: Interfaces y Periféricos, Guía 2 SPP PS/2 EPP ECP Fecha de Introducción 1981 1987 1994 1994 Fabricante IBM IBM Intel, Xircom y Hewlett Zenith Data Packard y Systems Microsoft Bidireccional No Si Si Si DMA No No No Si Velocidad 150 Kbyte/seg. 150 Kbytes/seg. 2 Mbytes/seg. 2 Mbytes/seg. 3 El puerto paralelo está formado por 17 líneas de señales y 8 líneas de tierra. Las líneas de señales están formadas por tres grupos: 4 Líneas de control 5 Líneas de estado 8 Líneas de datos En el diseño original las líneas de control son usadas para la interfaz, control e intercambio de mensajes desde el PC a la impresora. Las líneas de estado son usadas para intercambio de mensajes, indicadores de estado desde la impresora al PC (falta papel, impresora ocupada, error en la impresora). Las líneas de datos suministran los datos de impresión del PC hacia la impresora y solamente en esa dirección. Las nuevas implementaciones del puerto permiten una comunicación bidireccional mediante estas líneas. Los registros del puerto paralelo Cada registro del puerto paralelo es accesado mediante una dirección. El puerto paralelo tiene tres registros: 1. Registro de datos (8 pines de salida para los bits de datos (D0 – D7 Direcciones: 378h)) 2. Registro de estado (5 pines de entrada (uno invertido) para acceder al estado del puerto.(S3 – S7 Direcciones-:379h)) 3. Registro de control (4 pines de salida (tres invertidos) para acceder al control del puerto. (C0 – C3 Direcciones:37Ah)) Los 8 pines que restan son de tierra. 4 Interfaces y Periféricos, Guía 2 Figura 1.Conector DB-25 Hembra. Procedimiento Debido a que Visual Basic no maneja direcciones de entrada y salida o puertos por defecto, es necesario la instalación de archivos especiales para que esto pueda lograrse, los archivos son: • Archivo inpout32.dll que es el que se encarga de comunicar al sistema con el microprocesador. • Un módulo de Visual Basic inpout32.bas que permite la utilización del archivo DLL NOTA: Estos archivos serán proporcionados por su docente de laboratorio. Agregue el módulo utilizando el menú de Proyecto y luego agregar módulo. 1. Cuando se tenga el módulo agregado hacer doble clic sobre este y aparecerá el código, el cual se tendrá que modificar poniendo en la Declaración pública de la función Inp la ruta donde se copió el archivo DLL mencionado, las líneas a modificar son las siguientes. o Public Declare Function Inp Lib " C:\inpout32 \inpout32.dll " _ o Public Declare Sub Out Lib " C:\inpout32 \inpout32.dll " _ 2. Al haber realizado este proceso ya se puede utilizar las instrucciones definidas en el módulo (“out dirección, dato”, “variable=inp(dirección)”). Las direcciones para acceder al puerto paralelo son la H378 (bits de salida) y la &H379 (bits de entrada), por lo que para mandar un dato al puerto paralelo se debe colocar la siguiente instrucción Out &H378, dato, donde dato debe ser máximo de 8 bits (0 a 255 en decimal; 00 a FF en hexadecimal). Para leer un dato del puerto: variable = inp(&H379) Interfaces y Periféricos, Guía 2 3. • • • Cree un programa en Visual Basic con las siguientes características: El programa debe permitir leer datos de 4 bits. El programa deberá escribir datos de 8 bits desde una caja de texto. El programa deberá tener una opción en la que se pueda generar una secuencia de datos pre-programados*. Para ello realice la siguiente conexión con el puerto paralelo Figura 2. Diagrama de conexión del puerto paralelo. * 5 El sistema se presentara durante la práctica. 6 Interfaces y Periféricos, Guía 2 El formulario quedaría de la siguiente manera: Figura 3. Formulario para manejo de puerto paralelo. Control Nombre Caption Formulario frmInOut Cuadro de texto Text1 Botón superior izquierdo BotonSalida Escribir a puerto 378h Botón superior derecho BotonLeer Lectura de puerto 379h Botón de inicio de secuencia BotonInicSec Iniciar Secuencia Botón de fin de secuencia BotonDetSec Detener Secuencia Temporizador Timer1 El Código correspondiente es el siguiente: Option Explicit Dim n As Integer Private Sub Form_Load() Timer1.Interval = 500 Timer1.Enabled = False Text1.Text = "" n=0 End Sub Private Sub BotonSalida_Click() Out &H378, Val(Text1.Text) End Sub Private Sub BotonLeer_Click() Text1.Text = (Inp(&H379) Xor &H80) / 8 End Sub Private Sub BotonInicSec_Click() Puerto Paralelo - - Interfaces y Periféricos, Guía 2 7 Timer1.Enabled = True Out &H378, 0 End Sub Private Sub BotonDetSec_Click() Timer1.Enabled = False Out &H378, 0 n=0 End Sub Private Sub Timer1_Timer() Out &H378, 2 ^ n n=n+1 If n >= 8 Then n = 0 End Sub Análisis de Resultados 1. ¿Diría usted que las salidas de los pines del puerto paralelo mantienen el dato hasta que se escribe uno nuevo? 2. Ponga comentarios a las líneas del programa y explique en qué consiste la secuencia presentada. 3. Del programa deduzca cómo se hace para que el bit S7 que es negado se invierta 4. Si se le pidiera que modifique el programa para que la secuencia fuera descendente (del bit 7 al 0) y no ascendente (del bit 0 al 7) qué es lo que modificaría en el programa? Investigación Complementaria • • • • • Investigue sobre los puertos bidireccionales PS/2. Investigue para que sirve cada pin del puerto paralelo. Investigue todas las direcciones que pueden acceder al puerto paralelo en una PC. En qué consiste y cómo se usa el modo EPP, ECP. Cuáles son las señales que intercambian el puerto paralelo de la PC y el impresor. Bibliografía 1. INTEL Corporation. “386 SX Microprocessor: Programmers Reference Manual” Biblioteca UDB Clasificación: Libro 001.6404 I61 1989 MCGRAW HILL. NEW YORK, ESTADOS UNIDOS 1989, 1ª Edición. 2. Ramírez, José Felipe. “Aprenda Visual Basic Practicando”. Biblioteca UDB Clasificación: 005.363 R173 2001 PRENTICE HALL, México, México 2001,1ª Edición. 8 Interfaces y Periféricos, Guía 2 Hoja de cotejo: 2 Guía 2: Manejo Puerto Paralelo Alumno: Maquina No: Docente: GL: Fecha: EVALUACION % 1-4 5-7 8-10 CONOCIMIENTO 25% Conocimiento deficiente de los fundamentos teóricos Conocimiento y explicación incompleta de los fundamentos teóricos Conocimiento completo y explicación clara de los fundamentos teóricos APLICACIÓN DEL CONOCIMIENTO 70% No Terminó completamente el programa y comentó mal el código (30%) Terminó completamente el programa pero los comentarios no estaban del todo correctos Terminó completamente el programa con sus comentarios correctos No realizó el circuito correctamente (40%) ACTITUD TOTAL El circuito funcionó El circuito funcionó 2.5% Es un observador pasivo. Participa ocasionalmente o lo hace constantemente pero sin coordinarse con su compañero. Participa propositiva e integralmente en toda la práctica. 2.5% Es ordenado; pero no hace un uso adecuado de los recursos Hace un uso adecuado de los recursos, respeta las pautas de seguridad; pero es desordenado. Hace un manejo responsable y adecuado de los recursos conforme a pautas de seguridad e higiene. 100% Nota