Borland Builder C++
jueves, 2 de mayo de 2013
Uso Del Puerto Paralelo
Uso de Puertos en Borland Builder C++
Control de IOPort
El uso los puertos en Borland Builder puede afectarse de manera sencilla en la instalación de un componente llamado IOPort. Dicho componente se puede adquirir o descargar en su versión gratuita, la cual solo permite las funciones básicas para los puertos Serie y Paralelo.
Una vez instalado el componente, el control aparecerá en la barra de herramientas, en la pestaña de SYSTEM, y se agrega en la Forma como cualquier otro control, por lo que agregarse a los controles que sean necesarios (según la cantidad de puertos a utilizar).
Suponiendo q se desea utilizar el puerto paralelo en escritura. Este puerto generalmente esta e la dirección hexadecimal física 0378, y como la opción de escritura esta definida en la dirección BASE + 0, entonces el programador puede escribir el siguiente código:
IOPort1 -> Port[0x378] = 0;
En este caso, se envía un cero en binario atreves de los bits de salida del puerto.
Para el caso de lectura de datos, la dirección a utilizar es la BASE + 1, por lo que el programador podría poner por ejemplo introducir el siguiente código para leer los bits de entrada y almacenarlos en una variable entera var:
Var = IOPort1 -> Port[ox379];
En el caso del puerto paralelo, es importante protegerlo de cualquier corto circuito que pudiese producirse en el circuito externo. Para resolver lo anterior, existen diversas configuraciones. Una de estas soluciones consiste en el uso del circuito integrado 74LS244. La siguiente figura muestra las conexiones de este integrado con 8 LED’s para conocer el estado de los bits de salida:
Ejemplo.
//-------------------------------------------------------------------------------------------------------------------------------
Void__fastcall TForm1::Button1Click(TObject*Sender)
{
Close();
}
//-------------------------------------------------------------------------------------------------------------------------------
Void__fastcall TForm2::Button1Click(TObject*Sender)
{
Static int i=0;
If(i==0)
{
Timer1->Enabled=true;
Timer1->Interval=2000;
i = 1;
}
Else
{
Timer1->Enabled=false;
i = 0;
}
}
//------------------------------------------------------------------------------------------------------------------------------
Void__fastcall TForm1::Timer1Timer(TObject*Sender)
{
//0x0378 Puerto Paralelo
static i = 0;
char cadena[40];
IOPort1->Port[0x0873] = i;
sprintf(cadena,”salida = %d”,i);
Label1->Caption = cadena;
i++;
if( i == 16 )
{
i = 0;
}
}
//------------------------------------------------------------------------------------------------------------------------------
Suscribirse a:
Entradas (Atom)