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?
¿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: