C Code To Interface With Parallel Port
Article by: Ravee H Bhalla
Program To Obtain Base Address Of Printer Port
/* Program to obtain the base address of printer port on your pc */
#include<stdio.h>
#include<conio.h>
#include<dos.h>
int main()
{
unsigned int far *lpt1 = (unsigned int far *)0x00000408;
// 0x00000408 = IVT entry for LPT1's base address
unsigned int data, status, control;
data = *lpt1;
status = data+1;
control = data+2;
clrscr();
if(!data)
{
printf("Parallel port not installed!\n");
}
else
{
printf("Data port: %04u(Dec) %04X(Hex)\n",data,data);
printf("Status port: %04u(Dec) %04X(Hex)\n",status,status);
printf("Control port: %04u(Dec) %04X(Hex)\n",control,control);
}
getch();
return 0;
}
Program To Write Data To Parallel Port (Data Port, Control Port)
Program To Read Data From Parallel Port
/* Program to read data from parallel port (Status Port) */ #include<stdio.h> #include<conio.h> #include<dos.h> int main() { unsigned int far *lpt1 = (unsigned int far *)0x00000408; // 0x00000408 = IVT entry for LPT1's base address unsigned int data, status, control; unsigned char in; data = *lpt1; status = data+1; control = data+2; clrscr(); in = ((inportb(status)^0x80)>>3); if(!data) { printf("Parallel port not installed!\n"); } else { printf("Data port: %04u(Dec) %04X(Hex)\n",data,data); printf("Status port: %04u(Dec) %04X(Hex)\n",status,status); printf("Control port: %04u(Dec) %04X(Hex)\n",control,control); } printf("\nRead Data: %u(dec) %X(hex)\n",in,in); getch(); return 0; }