ESTE PROGRAMA DETERMINA LA DIRECCION DEL PUERTO PARALELO

ESTE PROGRAMA DETERMINA LA DIRECCION DEL PUERTO PARALELO

 

 

/**********************************************************

*  puerto1.c                                              *

*  Determina la direccion del puerto paralelo             *

**********************************************************/

 

#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;

}

 

 

ESTE PROGRAMA ESCRIBE DATOS AL PUERTO PARALELO DE LA PC

 

/**********************************************************

*  puerto2.c                                              *

*  Escribe datos al puerto paralelo de la PC              *

**********************************************************/

 

#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[i] = 1;

            direccion[i] = *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;

}