.: Men� :.

Made in Ecuador
:: Home :.
:: Programaci�n :.
 Introducci�n
 Soluci�n de un problema
 Objetivos de la Programaci�n
 Herramientas para Programar
 Programaci�n Estructurda
 Otras T�cnicas
:: Principiante :.
 �Que es Turbo Pascal?
 Estructura de un programa
 Declaraci�n de Variables
 Definici�n de Tipos
 Operadores
 Expresiones
 Instrucciones
 Procedimientos Entrada/Salida
 Mi primer Programa
 Ejercicios Propuestos
:: Medio :.
:: Estructuras de Control :.
   :: Selecci�n :.
 If...Then...Else
 Case...of...Else
   :: Bucles :.
 While...Do
 Repeat...Until
 For...to...Do
:: Tipos Estructurados :.
 Cadenas
 Vectores
 Matrices
 Registros
 Ejercicios Propuestos
:: Avanzado :.
 Archivos
 Punteros
 Modo Grafico
 Modo Print
 Ejercicios Propuestos
:: Experto :.
 Librerias
 Compiladores
 Manejo de Puertos LPT
 Base de Datos en Codigo
 Ejercicios Propuestos
:: Varios :.
 Codigo Fuente
 Resultado Ejercicios Propuestos
 Autor Pagina Web

Enviame un e-mail



Puerto LPT

EL PUERTO DE IMPRESORA Los ordenadores PC han estandarizado un tipo de interfaz para la comunicaci�n con la impresora, conocida normalmente como CENTRONICS. Esta interfaz es capaz de enviar caracteres a la impresora de forma paralelo. Cada car�cter est� codificado en un byte, del cu�l cada bit se transmite por un terminal diferente Existen otros terminales que conectan ordenador e impresora, que sirven para intercambiar informaci�n de control y de estado, a fin de implementar un sencillo protocolo. Para realizar esta interfaz, los PCs disponen de unos elementos hardware espec�ficos, denominados puertos de impresora o tambi�n 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 tambi�n LPT4). Todos ellos son id�nticos, 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 de Datos: De 8 bits, es donde la CPU escribe los datos que se env�an a la impresora (caracteres). Puerto de Estado: Registro de 8 bits de donde la CPU puede conocer diversos aspectos del estado de la impresora (apagada, sin papel, etc). Se usan s�lo 5 de los 8 bits. Puerto de Control: Registro de 8 bits donde la CPU puede escribir diversas se�ales que reconoce la impresora (validaci�n de datos, inicializaci�n, 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 los offsets 0008H, 000AH, 000CH y 000EH, con 2 bytes cada uno de ellos, est�n las direcciones de E/S en las que se encuentran los puertos base de LPT1, LPT2, LPT3 y LPT4 respectivamente. Lista de equipamiento: En el offset 0010H 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 n�mero de puertos de impresora instalados. Print_Tim_Out: En los offsets 0078H, 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 cu�nto 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 se suelen colocar los puertos de impresora son: Impresora | Puerto de Datos | Puerto de Estado | Puerto de Control LPT1 03BCh 03BDh 03BEh LPT2 0378h 0379h 037Ah LPT3 0278h 0279h 027Ah Tabla 1 Se�ales de la interfaz Centronics El puerto paralelo, utilizado en general para el control de la impresi�n, maneja las se�ales que se muestran en la tabla siguiente. De todas ellas, las que normalmente intervienen en el protocolo de comunicaci�n entre el PC y la impresora son BUSY y STROBE#. Algunas impresoras pueden no utilizar alguna de las se�ales descritas en la tabla. PUERTO NOMBRE Dir Pin DB25 DESCRIPCI�N DATOS D0..D7 S 2-9 8 terminales de datos. Desde D0 a D7. ESTADO BUSY E 11 Un nivel alto indica que la impresora est� ocupada y no puede recibir datos nuevos. Tambi�n se pone a 1 en situaciones de error. ACK# E 10 Un nivel bajo indica que la impresora ha recibido un dato y est� disponible para recibir uno nuevo. PE E 12 Un nivel alto indica que la impresora no tiene papel. SLCT IN E 13 Un nivel alto indica que la impresora est� on-line. ERROR# E 15 Un nivel bajo indica que se ha producido un error en la impresora. No hay papel, mal funcionamiento, etc. Tabla 2 El puerto de Datos Generalmente es s�lo 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 se�ales presentes en el conector DB25 del exterior es: BIT 7 6 5 4 3 2 1 0 FUNCI�N D7 D6 D5 D4 D3 D2 D1 D0 Tabla 3 El puerto de Estado Es un puerto de entrada. Est� destinado a la lectura del estado de las l�neas de interfaz con la impresora. La se�al BUSY es invertida antes de llegar al registro. La correspondencia entre los bits del registro de estado y las se�ales presentes en el conector DB25 del exterior es: BIT 7 6 5 4 3 2 1 0 FUNCI�N BUSY (inv.) ACK# PE SLCT IN ERROR# -- -- -- Tabla 4 El puerto de Control Es un puerto de salida destinado a la escritura de comandos sobre la impresora. Las se�ales SLCT#, AUTOFD# y STROB# son invertidas antes de llegar a los correspondientes terminales de conector externo. El bit 4 (IRQEN) no es una se�al que corresponda a alguno de los terminales de la interfaz Centronics. Se trata de un flag que habilita o prohibe la generaci�n de la interrupci�n IRQ7 cuando se activa la se�al ACK#. Las rutinas del BIOS que se ocupan de la impresora no utilizan esta interrupci�n. La correspondencia entre los bits del registro de control y las se�ales presentes en el conector DB25 del exterior es: BIT 7 6 5 4 3 2 1 0 FUNCI�N -- -- -- IRQEN SELECT# (inv.) INIT# AUTOFD# (inv.) STROBE# (inv.) Tabla 5 EL PUERTO DE IMPRESORA COMO CONTROL Y ADQUISICI�N DE DATOS Un puerto es un mecanismo que conecta a un procesador con el mundo exterior. Por medio de un puerto, el procesador recibe una se�al desde un dispositivo de entrada y env�a una se�al 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, est�n situadas en un mapa diferente de entrada/salida. Todo lo descrito en el apartado anterior define el funcionamiento del manejo de la impresora, a trav�s 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 comunicaci�n con los puertos se utilizan las instrucciones IN y OUT de ensamblador. IN transfiere informaci�n 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, puerto OUT transfiere informaci�n a un puerto de salida desde el registro AL (byte) o el AX (palabra). El formato es: OUT puerto, reg_acum Si consideramos los puertos de datos, estado y control vistos anteriormente, los podemos ver de la siguiente manera: D7 � Dato 7 S7 � Busy (inv) C7 -- -- D6 � Dato 6 S6 � ACK# C6 -- -- D5 � Dato 5 S5 � PE C5 -- -- D4 � Dato 4 S4 � SLCT IN C4 -- -- D3 � Dato 3 S3 � ERROR# C3 � SELECT (inv) D2 � Dato 2 S2 -- -- C2 � INIT# D1 � Dato 1 S1 -- -- C1 � AUTOFD# (inv) D0 � Dato 0 S0 -- -- C0 � STROBE# (inv) Tabla 6 Es 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 prop�sito que nosotros decidamos, conociendo las direcciones que ocupan. Recordar el significado de las se�ales marcadas con "(inv)". Esto quiere decir que est�n invertida por hardware. Es decir, si se ejecuta la instrucci�n OUT 037AH, 0FFh se est�n poniendo a 1 todos los bits del registro del puerto de control, pero en el conector externo del puerto, el DB25, aparecer�a un 1 s�lo en el pin 16 (INIT#), en los pines 1, 14 y 17 aparecer�a un cero (STROBE#, AUTOFD# y SELECT respectivamente). La distribuci�n de se�ales en los pines del conector de salida del PC (hembra) se muestran a continuaci�n:

Figura 1. Los pines del 18 al 25 est�n conectados a GND. Ejemplo de control de hardware externo a trav�s 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 da�arlo (del orden de 3-4 mA de salida y 12-15 mA de entrada). Las que est�n conectadas a los pulsadores se denominan de pull-up y sirven para fijar un nivel l�gico en ausencia de pulsaci�n. Los LEDs se encendr�n cuando haya un cero l�gico a la salida del pin correspondiente del puerto.

Figura 2 Nota: el bit 7 del puerto de estado y los bits 1, 14 y 17 del de control est�n invertidos. Para trabajar con ellos se recomienda el uso de la instrucci�n OR-Exclusiva (XOR) que, a trav�s de una m�scara, corrija lo anterior despu�s de leer del puerto de estado o antes de escribir en el de control. Las instrucciones siguientes encender�an los LEDs a modo de un contador binario: mov cx,0FFh ; la cuenta se repetir� 256 veces mov ax,0FFh ; primer n�mero de la cuenta. Recordar que con un 1 est�n apagados mov dx, puerto ; se supone definida puerto=03BCh, por ejemplo cont: out dx, al ; saca al puerto de datos el contenido de al dec ax ; actualiza la cuenta loop cont ; se repite 256 veces out dx,0FFh ; apaga todos los leds Manejo de la interrupci�n del puerto paralelo. El bit 4 del puerto de control, seg�n la tabla 5, se denomina IRQEN. Este bit habilita o permite que se produzca la interrupci�n asociada a la entrada ACK#. Cuando este bit est� a 1 y la se�al ACK# pasa del nivel l�gico 1 al nivel 0 se produce una petici�n de interrupci�n, que es la IRQ7. En el dise�o original del PC, IBM reserv� 8 interrupciones hardware, comenzando por la interrupci�n 08h, para expansi�n de interrupciones, que son com�nmente conocidas como IRQ0 a IRQ7. As� la IRQ0 se corresponde con la interrupci�n 08h, la IRQ1 con la 09h, etc. La IRQ7 se corresponde pues con la 0Fh, estando sus vectores a partir de la direcci�n 0000:003Ch. Para que una petici�n de una IRQ llegue a la CPU, �sta debe estar permitida, no enmascarada. El puerto 021h est� asociado con la m�scara de interrupciones de las IRQ. Para habilitar una determinada interrupci�n se deber� escribir un cero en la posici�n correspondiente, sin modificar el resto. As�, si lo que se quiere es permitir la IRQ7 habr� que poner a cero el bit m�s significativo del puerto 021h, como muestra el c�digo siguiente: in al,021h ; lee la m�scara de las IRQ and al, 01111111b ; impone un 0 en el bit m�s significativo, IRQ7. No modifica el resto out 021h, al ; escribe la m�scara Con 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 interrupci�n 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 b out 020h, al ; lo escribe en al puerto 020h Finalmente, tan s�lo queda por activar el bit que permite que la se�al ACK# genere una petici�n 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 s�lo se deben restablecer los vectores de interrupci�n modificados, sino que tambi�n se debe inhibir la IRQ7, dejando la m�scara del puerto 021h como estaba. Un programa que utilice la interrupci�n del puerto paralelo puede tener esta estructura, en lo que se refiere al manejo de dicha interrupci�n: Al comienzo: modificar vectores de la interrupci�n 0Fh (IRQ7) permitir la interrupci�n IRQ7, poner a 0 el bit 7 del puerto 021h Durante la ejecuci�n, siempre que haga falta: habilitar la interrupci�n en el puerto de control, bit 4 repetir procesar la interrupci�n escribir 020h en el puerto 020h hasta que se deba inhibir inhibir la interrupci�n, poniendo un cero en el bit 4 del puerto de control Al terminar inhabilitar la IRQ7, poner a 1 el bit 7 del puerto 021h recuperar los vectores de interrupci�n anteriores Bibliograf�a: Los microprocesadores xx86 y la arquitectura del PC. Antonio Garc�a Guerra. Ed. Sistemas y Servicios de Comunicaci�n. Madrid 1995. Lenguaje ensamblador y programaci�n para PC IBM� y compatibles. Peter Abel. Ed. Prentice Hall Hispanoamericana, S.A..1996 The indispensable PC hardware book. Hans-Peter Messmer. Ed. Addison-Wesley. 1996 MANEJO EN PASCAL Para conocer la direcci�n de memoria de los 4 puertos Centronics, una funci�n �til es la siguiente: { Entrada: NUM = N�mero del puerto paralelo } { Salida :TRUE, cuando paralelo } { Var. globales: Port1, Port2 } { Info: Las direcciones de base de hasta 4 puertos paralelos } { se encuentran en las cuatro palabras de memoria } { comenzando en 0040:0008 } function DirPort( Numero: integer ): boolean; begin if ( Port1 0 ) then begin Port2 := Port1 + 1; GetPortAdr := TRUE; end else DirPort := FALSE; end; De esta manera leemos las 4 posiciones de base de hasta 4 puertos paralelos que se encuentran en las 4 palabras de memoria comenzando en 0040: 0008. Para entrar y sacar datos lo har�amos con una llamada a las rutinas en ensamblador comentadas anteriormente. En lenguaje C proceder�amos igualmente: reconocer�amos las direcciones de los 4 puertos paralelo y mediante las rutinas en ensamblador leer�amos o escribir�amos en los diferentes registros. char var1 = inport (unsigned int port); outport (unsigned int port, char var2); 2) Estas rutinas van a funcionar solamente si el programa corre en una sesi�n de DOS. Ocasionalmente Windows (la versi�n que sea) se porta medio ego�sta con los puertos y no deja accesarlos directamente. Si no les permite ejecutar el programa desde una ventana, van a tener que "rebootear" la m�quina en DOS. ------------------------------------------------------------------------------------- Comencemos: Este puerto se comunica con el mundo mediante una conexi�n con 25 hoyos peque�os que est� detr�s de casi todas las PC, y que se utiliza generalmente para conectar la impresora (de hecho para eso fue dise�ado originalmente [Van Gilluwe, 94] ). Este tipo de conexi�n es llamado "DB 25 hembra" Las siglas "DB" significan "Data Bus"). Los puertos paralelos han permanecido casi igual desde las primeras PC. Se han hecho algunas extensiones a su funcionamiento, pero siempre respetando la compatibilidad con los modelos anteriores. El modelo de puerto paralelo que se describe aqu� es el modelo est�ndar, de modo que su funcionamiento es v�lido para cualquier tipo de PC. Este modelo es unidireccional (significa que cada pin es de entrada o salida, pero no ambos), y puede transmitir 150 Kbytes por segundo. Esto es (repetimos) el est�ndar de puerto paralelo que se ha usado desde las XT. Actualmente ya puede alcanzarse una respetable velocidad de 2 Mega bytes por segundo, y con bidireccionabilidad en los puertos. Sin embargo, se pretende aqu� definir globalmente algo que pueda funcionar por igual en todas las PCs, y no solamente en los modelos m�s nuevos. Si se desea experimentar con estos puertos extendidos (los bidireccionales), ser� necesario investigar primero las especificaciones particulares de la m�quina. El "Enhanced Parallel Port", por ejemplo, s�lo est� presente de los modelos 386SL y 486SL en adelante. Ok, Ok, alguien preguntar�: "�pero para qu� quiero aprender a hacer robots compatibles con puertos paralelos tan anticuados y obsoletos? �y aparte en DOS! �ya no se usa!". Muchachos, tomen en cuenta que no siempre la escuela les va a poder prestar tan facilmente una Pentium III de 500 Mhz con Windows 2000 para sus primeros experimentos de rob�tica. As� que es mejor que puedan hacer que su robot funcione en cualquier m�quina. De todos modos, las instrucciones para la programaci�n de los puertos paralelos m�s avanzados pueden encontrarse en cualquier libro reciente (de 1993 en adelante) sobre arquitectura de las PC. Un libro recomendado para ello es "The Undocumented PC", de Frank van Gilluwe. La siguiente figura muestra el diagrama de un puerto paralelo est�ndar. El dibujo muestra la salida del puerto tal y como se ve al estar viendo a la computadora desde atr�s (de todos modos, los n�meros de los pines est�n grabados ah� mismo en la conexi�n. S�lo tienen que mirarla muy de cerquita). Este es el diagrama que se encontrar�a en la mayor�a de los manuales t�cnicos. Como puede verse, est� espec�ficamente dise�ado para la impresora. Las flechas que salen del puerto son los comandos que se env�an a �sta (salto de hoja, inicializaci�n, selecci�n, habilitaci�n), y tiene una entrada para cada se�al que la impresora puede mandar: error, impresora no seleccionada, impresora ocupada, sin papel, y "reconocimiento" (ACK).

 
Como se puede ver en el diagrama, el puerto est� enfocado espec�ficamente al manejo de la impresora. Esto nos da un total de doce bits de salida y cinco bits de entrada, lo cual es una desafortunada combinaci�n desde el punto de vista de la comunicaci�n paralela. Podemos mandar perfectamente un byte (8 bits) de datos al exterior, pero tenemos que recibirlo en trozos. Direccionamiento del puerto. Existe un comando para entablar comunicaci�n directa con cualquiera de los puertos de la PC (no solamente los paralelos). Este comando se llama "Port" (en lenguaje PASCAL), y para enviar datos a un puerto en particular se utiliza con el siguiente formato: Port [ Direcci�n] := Algo; Y para leer informaci�n de un puerto (y guardarla a su vez en una variable) se utiliza de la forma: Variable := Port [ Direcci�n]; "Direcci�n" es un valor tipo "word" (16 bits) que indica una posici�n de memoria en el mapa de puertos de la PC. A su vez, "Variable" es (precisamente) una variable tipo byte, y "Algo" es un valor (n�mero o variable) tipo byte. Esto significa que la direcci�n del puerto puede ser un n�mero cualquiera de 0 hasta 65535, mientras que los valores que se leen y escriben en el mismo s�lo pueden ir desde 0 hasta 255. Ahora bien, �c�mo se obtiene la direcci�n del puerto paralelo?. Pues esa direcci�n est� colocada en una de las posiciones m�s bajas de memoria: en la $0040:$0008 El signo de "$" significa que estos n�meros est�n representados en hexadecimal, y los dos puntos de enmedio representan la separaci�n de la direcci�n en "segmento" y "desplazamiento". Esto significa: desde la posici�n de memoria $40, mu�vete $8 espacios m�s. Y ah� es donde se tienen las direcciones base de todos los posibles puertos paralelos que haya. Bytes de "Data", "Status" y "Control". Debido a la poco com�n configuraci�n de bits de entrada y salida que tiene, el intercambio de informaci�n con este puerto paralelo (el est�ndar) y el mundo exterior es ligeramente complicado. Sin embargo, una vez entendidos los principios b�sicos de funcionamiento y con la l�gica de programaci�n adecuada, no debe presentar mayores problemas. Estos 12 bits de salida y 5 bits de entrada est�n agrupados en 3 bytes, conocidos ampliamente en la literatura computacional como los bytes "Data, Status y Control". Esto proviene del dise�o original del puerto que, como ya se mencion�, fue hecho pensando en la impresora solamente. El byte llamado "Data" son los 8 bits de datos de salida que mandan el caracter a la impresora. El byte de "Control" es para darle �rdenes, y est� formado por los 4 bits de salida solamente (los otro cuatro bits el byte no se utilizan). Y finalmente, el byte "Status" est� formado por 5 bits de entrada que leen la condici�n de la impresora (los otros bits tampoco se usan). Las siguientes figuras muestran c�mo est�n distribuidos estos bits en sus respectivos bytes. Cada puerto paralelo que exista en la PC estar� caracterizado por estos tres bytes, aunque (obviamente) cada uno los tendr� localizados en direcciones diferentes, seg�n el fabricante de la PC.

  
Funci�n para investigar las direcciones. Una vez revisada la teor�a b�sica de funcionamiento del puerto, podemos ya proceder a su programaci�n. Y la primera rutina a utilizar deber� ser siempre una rutina que nos d� (al inicio del programa) las direcciones de esos bytes de "Data", "Status" y "Control". A continuaci�n se muestra una funci�n (s�, en Pascal) para realizar esta operaci�n. Function Investiga_Direcciones (Puerto:Byte; Var Data, Status, Control:Word):Boolean; Begin Data := MemW [$0040:(8+2*Puerto)]; Status := Data + 1; Control := Status + 1; If (Data <> 0) Then Investiga_Direcciones:= TRUE; { S� se consiguieron los datos } Else Investiga_Direcciones:= FALSE; { No se detect� el puerto pedido } End; Como datos de entrada, esta funci�n recibe el n�mero de puerto del que se desea conocer las direcciones. NOTA: Los puertos se numeran partiendo del cero. Si yo quiero saber las direcciones del �nico puerto paralelo de una computadora, deber� llamar a la funci�n pidi�ndole los datos del puerto cero. Si se tienen dos puertos paralelos, el primero ser� el puerto cero, el segundo ser� el puerto uno, y as� sucesivamente. A los puertos paralelos generalmente se les nombra con las letras "LPT" m�s el n�mero que le corresponda: "LPT0", "LPT1", "LPT2", etc... Si no existe el n�mero de puerto pedido, la rutina regresar� un "FALSE". En caso de s� existir, regresar� un "TRUE" junto con la direcci�n de los bytes correspondientes. De ahora en adelante, cada vez que se desee leer (o escribir) a un grupo de pines particulares del puerto, se utilizar� la direcci�n del byte correspondiente, como se muestra: Port [Data] := Variable; { Manda el byte de "Data" } Variable:= Port [Status]; { Lee el byte de "Status" } Port [ Control ] := Variable; { Manda el byte de "Control" } Se debe tener cuidado con la lectura del byte de "Status". Recu�rdese que siempre se tendr� basura en los tres bits menos significativos, puesto que no se utilizan. Esto se soluciona f�cilmente mediante un filtrado l�gico inmediatamente despu�s de la lectura: haciendo un AND de la variable con el n�mero binario 11111000. Adem�s, t�mese en cuenta que los bits de ERROR y de ACK se leen INVERTIDOS. Es decir, si alg�n aparato pone 5 volts en la patita del bit de ACK del puerto paralelo, nuestra rutina leer� un cero en ese bit, y si el aparato pone esa patita a tierra (cero volts) la rutina leer� un "uno". Hardware adicional. Otro punto importante a considerar cuando se realicen proyectos electr�nicos que involucren este puerto, es el hecho de que el puerto paralelo (el est�ndar) tiene muy poca capacidad de corriente, aunque sus voltajes son perfectamente compatibles con TTL. Debido a esto, siempre es conveniente colocar un buffer a la salida del puerto para darle fuerza a la se�al. Puedes usar, por ejemplo, el circuito integrado 74244, pero cualquier otro buffer puede servir.

CopyRight© 2003/2004, Diego Castillo. Todos los Derechos Reservados
Catamayo - Loja - Ecuador | Resoluci�n Minima 800x600
Estadisticas

Hosted by www.Geocities.ws

1