/* * example.c: very simple example of port I/O * * This code does nothing useful, just a port write, a pause, * and a port read. Compile with `gcc -O2 -o example example.c', * and run as root with `./example'. */ #include #include #include #define BASEPORT 0x2a2 /* PLC-730 card LED Output */ int main() { unsigned char x; /* Get access to the ports */ if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);} for(x=0;x<150;x++) { /* Set the data signals (D0-7) of the port to all low (0) */ outb(x, BASEPORT+1); /* Sleep for a while (100 ms) */ usleep(100000); } /* Read from the status port (BASE) and display the result */ printf("status: %d\n", inb(BASEPORT+1)); while((inb(BASEPORT+1) & 0x10) != 0x10) { outb(0,BASEPORT); printf("A/D: %d\n", inb(BASEPORT)); usleep(100000); outb(0xff,BASEPORT); } /* We don't need the ports anymore */ if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);} exit(0); } /* end of example.c */