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