Szczegółowa mapa rejestrów UART 16550 jest niezbędna przy bezpośrednim programowaniu portu szeregowego. Rejestr LCR (Line Control Register, baza+3) jest najważniejszym rejestrem konfiguracyjnym: bity 1-0 określają długość słowa (00=5, 01=6, 10=7, 11=8 bitów), bit 2 = liczba bitów stopu (0=1, 1=1.5 dla 5 bitów lub 2 dla 6-8 bitów), bity 4-3 = parity (00=none, 01=odd, 11=even), bit 5 = stick parity, bit 6 = Set Break (wymusza SPACE na TxD), bit 7 = DLAB (Divisor Latch Access Bit) - gdy 1, porty baza+0 i baza+1 stają się dzielnikiem częstotliwości. Rejestr LSR (Line Status Register, baza+5): bit 0 = Data Ready (znak odebrany), bit 1 = Overrun Error (poprzedni znak nadpisany), bit 2 = Parity Error, bit 3 = Framing Error (brak bitu stopu), bit 4 = Break Interrupt (linia RxD w SPACE > czas transmisji znaku), bit 5 = THR Empty (nadajnik gotowy na nowy znak), bit 6 = Transmitter Empty (nadajnik i rejestr przesuwny puste), bit 7 = błąd w FIFO (dla 16550). Rejestr MSR (Modem Status Register, baza+6): bity 0-3 = delta (zmiana od ostatniego odczytu) odpowiednio dla CTS, DSR, DCD, RI; bity 4-7 = aktualny stan CTS, DSR, DCD, RI. W trybie loopback (MCR bit 4=1), wewnątrz UART: TX łączy się z RX, RTS z CTS, DTR z DSR, a Out1 z RI, Out2 z DCD - przydatne do samotestowania.