duda programacion en puerto paralelo C

#1
Hola, tengo la siguiente duda estoy pensando en hacer un proyecto con el puerto paralelo en turbo C entonces me gustaria realizar con el registro de datos las operaciones de leer y escribir, se que este registro es bidireccional pero mi duda es la siguiente:
¿en el msmo registro puedo leer y escribir datos al MISMO TIEMPO?
por ejemplo tener 4 bits designados a escritura
y 4 bits designados a lectura ¿es esto posible en el mismo registro de datos?

pongo por ejemplo el siguiente programa:

#include <stdio.h>
#include <dos.h>

#define LPT_BASE 0x378 /* dirección base del puerto paralelo */
#define DATOS LPT_BASE /* dirección de E/S del reg. de datos */
#define CONTROL LPT_BASE+2 /* dirección de E/S del reg. de control */

#define C5_ON 0x20 /* bit 5 de CONTROL a 1 */
#define C5_OFF 0x00 /* bit 5 de CONTROL a 0 */

main ()
{
unsigned char byte; /* byte para operaciones de E/S */

clrscr();

printf ("Introduce el byte que se enviará al puerto: ");
scanf("%u", &byte); getchar();

outportb (CONTROL, C5_OFF ); /* pone el puerto en modo salida */

outportb (DATOS, byte); /* envía un byte */

printf ("Polariza las líneas del puerto y pulsa una tecla\n"); getchar();

outportb (CONTROL, C5_ON ); /* pone el puerto en modo entrada */

byte = inportb (DATOS); /* lee un byte */

printf ("El valor leído es %i", byte);
getch();
return 0;
}


en el programa anterior se lee y se escribe un byte poniendo el modo entrada y salida pero no al mismo tiempo, pero lo que yo deseo es escribir 4 bits y leer 4 bits al mismo tiempo ¿es posible?
 
Última edición:
#4
Hola:

¿Te vale controlar el puerto paralelo con Visual Studio .net?

Ver manual.
http://electronica-pic.blogspot.com/2010/07/interfaz-puerto-paralelo-lpt.html

Saludo.
no, me exigen que sea en Turbo C (lo se, obsoleto)

Poder podes, en realidad es linea a linea secuencial, entonces no es al mismo tiempo

el problema especificamente esta asi:

suponiendo que voya usar los 4 bits menos significativos para leer
y los 4 mas significativos para enviar

entonces en teoria tengo del 0 al 16 para enviar datos
y del 17 al 255 para recibir
el problema es que cuando lea un 125 quiero que de la instruccion 12, pero si hago esto,
el 125 ya no seria 125 por que modifique los bits menos significativos, entonces no se si habra un codigo que me limite el rango de lectura y escritura para dichos bits.
 
Arriba