Understanding The Parallel Port
On the PC the parallel port uses a 25-pin connector (called DB-25, 25-pin D-sub or 25-pin D-shell), as you can see in Figure 2. On printers, however, a different kind of connector is used, called Centronics, which has 36 pins.
Besides the eight data bits, there are more signals available on the parallel port. In the table below we list all the basic parallel port signals and their function, as well as their location on both standard 25-pin and Centronics connector. The I/O column indicates if the signal is input (I) or output (O). Input means that the signal must come from the device to the parallel port (i.e., the signal must be provided by your prototype); output means that the signal comes from the parallel port.
|Signal||Name||Pin (25-pin standard connector)||Pin (36-pin Centronics Connector)||I/O||Description|
|/STROBE||Strobe||01||01||O||Indicates if data is ready or not to be transmitted.(0 = Data ready to be transmitted, 1 = Data not ready to be transmitted)|
|/ACK||Acknowledge||10||10||I||Indicates that the printer is ready to receive data.|
|BUSY||Busy||11||11||I||Indicates that the printer is not ready to receive data.|
|PE||Paper Empty||12||12||I||Indicates that the printer has no paper to print on.|
|SELECT||Select||13||13||I||Indicates that the printer is on its “on line” state, ready to get information.|
|/AUTO FD XT||Auto Feed||14||14||O||The printer moves the paper to the beginning of the next line.|
|/ERROR||Error||15||32||I||Some error occured (printer disabled, paper empty).|
|/INIT||Init||16||31||O||Resets the printer and clears its printing buffer.|
|/SELECT INPUT||Select Input||17||36||O||Data can only be transferred to the printer when this line is set to “0”.|
|D0 through D7||D0 through D7||2 through 9||2 through 9||O||Data bits.|
|GND||Ground||18 through 25||19 through 30||O||Ground.|
The parallel port uses three I/O addresses: data (378h), status (379h) and control (37Ah). If you want to send data to the parallel port and get this data outside the computer, just write this data to the parallel port data address. For example, if we want to turn on all our LEDs, all we need to do is to send the value 255 (which is the decimal equivalent for 11111111, i.e., all data bits set to “on”) on the address 378h. Of course we will explain more about this and also the role of the status and control addresses.