
Accessing the Serial Port registers
Figure 13 lists the address map for the 16450 and 16550 UARTs. Each
register can be accessed by reading from or writing to the proper I/O address.
This I/O address is determined by adding an offset to the base address set for the
particular serial port. The base address is set using DIP switches on the ES-100D
(see section III).
Notice that two locations access different registers depending on whether
an I/O read or I/O write is attempted. Address [base+0] accesses the receive
buffer on an I/O read, or the transmit buffer on an I/O write. Address [base+2]
accesses the Interrupt Identification register on an I/O read or the FIFO control
register
(16550 only)
on an I/O write. Also, notice that if address [base+0] or
[base+1] is used with the DLAB bit from the Line Control Register set to '1', the
baud rate divisor latches are accessed.
NOTE: All figures displaying bitmapped registers are
formatted such that bit 7 is the high-order bit.
* DLAB in Line Control Register must be set to access baud rate divisor latch.
(X = don't care)
Baud rate divisor latch (MSB) *
Base + 1
1
Baud rate divisor latch (LSB) *
Base + 0
1
Scratchpad
Base + 7
X
MODEM status
Base + 6
X
Line status
Base + 5
X
MODEM control
Base + 4
X
Line control
Base + 3
X
Interrupt identification (read)
(16450 and 16550)
FIFO control (write)
(16550 only)
Base + 2
X
Interrupt enable
Base + 1
0
Receive buffer (read)
Transmit holding register (write)
Base + 0
0
I/O Address
DLAB
Register Description
UART Addressing
Figure 13 --- Serial port register address map for 16450/16550 UART
Quatech ES-100D User's Manual
13