20
PPIO2899 Manual
B&B Electronics Mfg Co Inc – 707 Dayton Rd - PO Box 1040 - Ottawa IL 61350 - Ph 815-433-5100 - Fax 815-433-5104
The parallel port’s status register stores the upper nibble (four
bits) of the input line status. Since the smallest value that can be
read from the port is a byte, some work must be done to get only the
upper nibble’s value. We read a byte from the status register and
bitwise AND it with F0h (240 decimal, 11110000 binary). This sets
the lower nibble of the byte to zero.
The parallel port’s control register stores the low nibble of the
input line status. A method, similar to the one used to get the high
nibble, extracts the low nibble. We read a byte from the control
register and bitwise AND it with 0Fh (15 decimal, 00001111 binary).
This sets the upper nibble of the byte to zero.
Now, combine both bytes into one value by bitwise ORing them
together. This value is stored in the variable Input_Byte. At this point,
the upper nibble of Input_Byte is the same as the upper nibble of the
status register and the lower nibble of Input_Byte is the same as the
lower nibble of the control register.
To return the status of a specific line, a test is done to determine
the state of the line’s corresponding bit stored in Input_Byte. To
determine the bit’s state, all other bits of Input_Byte are set to zero.
This is done by bitwise ANDing Input_Byte with the mask value of
the desired line shown in the following table.
Mask Value
Line
Hex
Decimal
Binary
0
01h
1
00000001
1
02h
2
00000010
2
04h
4
00000100
3
08h
8
00001000
4
10h
16
00010000
5
20h
32
00100000
6
40h
64
01000000
7
80h
128
10000000