Mode 2—bidirectional bus – National Instruments PC-DIO-96 User Manual
Page 55
Chapter 4
Register-Level Programming
© National Instruments Corporation
4-17
PC-DIO-96 User Manual
outp(cnfg,0xA0);
/* Port A is an output in mode 1.*/
while (!(inp(portc) & 0x80));
/* Wait until OBFA* is set, indicating
that the data last written to port A
has been read.*/
outp(porta,0x12);
/* Write data to port A. */
/* EXAMPLE 2–port B output */
outp(cnfg,0x84);
/* Port B is an output in mode 1.*/
while (!(inp(portc) & 0x02));
/* Wait until OBFB* is set, indicating
that the data last written to port B
has been read.*/
outp(portb,0x34);
/* Write the data to port B. */
}
Mode 2—Bidirectional Bus
Mode 2 has an 8-bit bus that can transfer both input and output data without changing the
configuration. The data transfers are synchronized with handshaking lines in port C. This mode
uses only port A; however, port B can be used in either mode 0 or mode 1 while port A is
configured for mode 2.
The control word written to the CNFG Register to configure port A as a bidirectional data bus in
mode 2 is shown as follows. If port B is configured for mode 0, then PC2, PC1, and PC0 of port
C can be used as extra input or output lines.
D2
D1
D0
D3
D7
D6
D5
D4
1 = input
0 = output
Port C
(PC2-PC0)
1
1/0
X
X
X
1
1 = input
0 = output
Port B
0 = mode 0
1 = mode 1
Group B Mode
1/0
1/0
During a mode 2 data transfer, the status of the handshaking lines and interrupt signals can be
obtained by reading port C. The port C status-word bit definitions for a mode 2 transfer are
shown as follows.