logo
КС-ZAO / Лекции ЦЭВМруский вариант11

§7.5 Последовательный интерфейс

Последовательный порт является полнодуплексным – т.е. он может принимать и передавать данные одновременно. Также он снабжен приемным буфером, что позволяет начинать прием следующего байта до того как предыдущий полученный байт был считан из приемного регистра (в случае, если к моменту окончания приема следующего байта предыдущий байт все еще не был считан из регистра, один из байтов будет потерян). Доступ к регистрам приема и передачи последовательного порта осуществляется через СФР SBUF. Данные, записанные вSBUF загружаются в регистр передачи, а считанные изSBUF, приходят непосредственно из регистра приема.

Рисунок 7.12. Таймер 2 в режиме захвата

Последовательный порт может работать в 4-х рехимах.

Режим 0: Последовательный данные входят и выходят черезRXD. На выходе TXD – синхронизирующий сигнал. Передаются/принимаются 8 бит. Скорость передачи постоянная и составляет 1/12 частоты осциллятора (в бодах).

Режим 1: 10 бит передаются (через TXD) или принимаются (через RXD): старт-бит (0), 8 бит данных, и стоп-бит (1). При приеме стоповый бит попадает в RB8 регистра SCON. Скорость приема/передачи переменная.

Режим 2: 11 бит передаются (черезTXD) или принимаются(черезRXD): старт-бит (0), 9 программируемых бит данных, и стоп-бит (1). При передаче 9-ый бит данных (TB8 вSCON) может принимать значения 0 и 1. Этим битом может быть, например, бит четности (P вPSW), для чего его необходимо поместить вTB8. При приеме 9-ый бит данных попадает вRB8 регистраSCON в то время как стоп-бит игнорируется. Скорость приема/передачи переменная и может составлять1/32 или 1/64 частоты осциллятора (в бодах).

Режим 3: 11 бит передаются (черезTXD) или принимаются(черезRXD): старт-бит (0), 8 бит данных, программируемый 9-ый бит и стоп-бит(1). По сути, режим 3 полностью повторяет режим 2, за исключением скорости передачи, которая в режиме 3 переменная.

Во всех 4-х режимах передача инициируется инструкциями, использующими SBUF в качестве регистра назначения. Прием инициируется в режиме 0 при условияхRI=0, REN=1. В остальных режимах прием инициируется поступлением старт-бита при условии REN=1.