Problemas puerto paralelo

Cuestiones y dudas acerca de lenguajes de programación diversos.

Moderador: Moderadores

Avatar de Usuario
Or_DIE

Problemas puerto paralelo

Mensaje por Or_DIE » Mar Mar 30, 2004 4:58 pm

Buenas, cuando intento enviar valores al puerto paralelo con funciones como _outp, outport, outportb (etc) con distintos compiladores (DevC, VisualC...) me pasa lo siguiente. Me compila el programa, sin embargo no me corre. Me da un "error de aplicación" el w2000. Estoy haciendo pruebas en modo consola. No soy, ni mucho menos un experto en C, o sea que seguro que se me escapa alguna cosa básica. Un codigo rápido de escribir y que me da problemas:

#include <conio.h>

main...

int data, puerto;
puerto=0x378h
data=12;
_outp(data,puerto);

Logicamente, he provado con todas las direcciones posibles de puertos LPT, ademas de probar _outp(puerto,data), así como otras funciones predefinadas en conio.h,
En fin, si alguien sabe alguna manera de hacer esto...

Gracias.

Avatar de Usuario
Ragde

problemas puerto paralelo

Mensaje por Ragde » Dom May 29, 2005 7:23 pm

2 Programas en turbo c

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

int main()
{
unsigned int far *puntero_a_direccion;
int i;

puntero_a_direccion=(unsigned int far *)0x00000408;

for (i=0; i<3; i++)
{
if (*puntero_a_direccion == 0)
printf("No se encontro puerto asignado a LPT%d \n", i+1);
else
printf("La direccion asignada a LPT%d es 0x%Xh\n",
i+1, *puntero_a_direccion);
puntero_a_direccion++;
}

return 0;

}





_______________________________________________________





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

int puerto(int direcc);
int seleccion;

int main()
{
unsigned int far *puntero_a_direccion;
int i, direccion[3]={0,0,0}, disponible[3]={0,0,0};

puntero_a_direccion = (unsigned int far *)0x00000408;

printf("Seleccione el puerto:\n");
/* ¿Cuantos puertos existen? */
for (i=0; i<3; i++)
{
if (*puntero_a_direccion == 0)
printf("Puerto LPT%d...............no disponible\n", i+1);
else
{
disponible = 1;
direccion = *puntero_a_direccion;
printf("Puerto LPT%d...............%d\n", i+1, i+1);
}
puntero_a_direccion++;
}
printf("Salir del programa........0\n");
scanf("%d", &seleccion);

do
{
switch(seleccion)
{
case 0:/* Salir del programa */
printf("Adios!!!\n");
return 0;
break;

case 1:/* Puerto LPT1 */
if(disponible[0]==1)
puerto(direccion[0]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}
break;

case 2:/* Puerto LPT2 */
if(disponible[1]==1)
puerto(direccion[1]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}
break;

case 3:/* Puerto LPT3 */
if(disponible[2]==1)
puerto(direccion[2]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}
break;

default:
printf("ERROR: OPCION INCORRECTA!\n");
break;
}
if(seleccion!=0)
{
printf("Seleccione otra opcion\n");
scanf("%d", &seleccion);
}
}
while(seleccion!=0);

return 0;
}

int puerto(int direcc)
{
unsigned char valor; /* Solo valores entre 0 y 255 */

printf("Ahora puede escribir cualquier valor\n");
printf("entre 1 y 255, 0 para terminar el programa\n");
do
{
printf("Valor al puerto?\n");
scanf("%d", &valor);
outp(direcc, valor);
printf("Se ha escrito %d al puerto\n", valor);
}
while(valor!=0);

return seleccion=0;
}

Responder