Последовательный порт микроконтроллеров MCS-251 дуплексный, имеет три асинхронных режима работы (режимы 1, 2, 3) и один синхронный режим (режим 0). Он поддерживает обнаружение ошибок передачи, автоматическое распознавание адреса и обмен в многопроцессорных системах.
При синхронном обмене синхросигнал выдается по линии TxD, а данные принимаются или передаются по линии RxD. При асинхронном обмене блок последовательного порта передает данные по линии TxD, а принимает по линии RxD. Прием и передача могут осуществляться одновременно, поскольку регистр данных SBUF состоит из двух частей. Чтобы передать данные необходимо произвести запись в регистр SBUF, а для приема информации необходимо прочитать содержимое регистра SBUF. Приемник
буферизирован, т.е. возможен прием следующего байта, когда предыдущий еще находится в регистре SBUF. Однако, если подпрограмма обслуживания не успела прочесть байт данных из регистра SBUF к моменту завершения приема следующего байта, то этот следующий принятый байт затрет предыдущий. Прием и передача обслуживаются битами прерывания RI и TI, которые формируют общий запрос прерывания. Блок последовательного порта обслуживается следующими регистрами специальных функций:
SBUF — буфер данных последовательного порта. Состоит из двух отдельных регистров, буфера приемника и буфера передатчика. Запись в SBUF загружает данные в буфер передатчика, чтение SBUF производит обращение к буферу приемника.
SCON — регистр управления последовательного порта.
SADDR — регистр индивидуального адреса ведомого последовательного порта.
SADEN — регистр маски индивидуального адреса.
Регистр управления последовательного порта SCON имеет следующий формат: