8. Serial Controller
78
PROGRAMMABLE REGISTERS
Six registers are available for initializing and controlling each serial channel. The
following table "
Serial Controller Register Addressing
" shows the I/O port addressing for
the COM1 registers. The remaining serial channels are located as follows:
COM2:
2F8-2FFh
COM3:
2E0-2E7h
COM4:
2E8-2EFh
The topics that follow illustrate the 16-bit divisor latch, baud rate divisors, and the six
programmable registers for each serial channel.
Serial Controller Register Addressing
Address
Register
Operation
03F8h (DIV=0)
Receive Buffer
Read
03F8h (DIV=0)
Transmit Buffer
Write
03F8h (DIV=1)
Divisor Latch LSB
Read/Write
03F9h (DIV=0)
Interrupt Control
Read/Write
03F9h (DIV=1)
Divisor Latch MSB
Read/Write
03FAh
Interrupt Status
Read
03FBh
Line Control
Read/Write
03FCh
Modem Control
Read/Write
03FDh
Line Status
Read
03FEh
Modem Status
Read
03FFh
Reserved
Baud Rate Divisors
The "
Divisor Latch LSB
" and "
Divisor Latch MSB
" figures that follow illustrate the 16-bit
divisor latch. The "
Baud Rate Divisors
" table lists the divisors for popular baud rates. It
also includes the percent error based on the difference between the exact divisor for a
specified baud rate and the divisor obtainable with a 16-bit integer format. To guarantee
proper operation, the percent error should never be greater than four.