Последовательный порт

Последовательный порт микроконтроллеров MCS-51 является дуплексным и обеспечивает работу в одном синхронном режиме (режим 0) и трех асин­хронных режимах (режимы 1, 2, 3). Поддерживается также последователь­ный обмен в многопроцессорных системах.

При синхронном приеме синхросигнал выдается по линии TxD, а данные принимаются или передаются по линии RxD. При асинхронном обмене блок последовательного порта передает данные по линии TxD, а принимает по линии RxD. Прием и передача могут осуществляться одновременно, по­скольку регистр данных SBUF состоит из двух частей. Чтобы передать дан­ные необходимо произвести запись в регистр SBUF, а для приема информа­ции необходимо прочитать содержимое регистра SBUF. Приемник буферизирован, т.е. возможен прием следующего байта, когда предыдущий еще находится в регистре SBUF. Однако, если подпрограмма обслуживания не успела прочесть байт данных из регистра SBUF к моменту завершения приема следующего байта, то этот следующий принятый байт затрет преды­дущий. Прием и передача обслуживаются битами прерывания RI и TI, ко­торые формируют общий запрос прерывания. Управляется последователь­ный порт с помощью регистра SCON.

SM0 SM1 SM2 REN TB8 RB8 TI RI

SCON

Имя бита Номер бита Функция
SM0 SCON.7 Бит 0 определения режима работы последовательного порта
SM1 SCON. 6 Бит 1 определения режима работы последовательного порта
SM2 SCON.5 Разрешение обмена в многопроцессорных системах. В режи­ме 0 должен быть сброшен. В режиме 1 при SM2 = 1 бит RI не устанавливается, если принятый стоп-бит = 0. В режи­мах 2 и 3 при SM2 = 1 бит RI не устанавливается, если при­нятый девятый бит данных RB8=0.
REN SCON.4 Разрешение приема. При REN = 1 прием разрешен
TB8 SCON.3 9-й бит данных, который будет передаваться в режимах 2 и 3. Значение устанавливается программно разработчиком.
RB8 SCON.2 В режиме 0 не используется. В режиме 1 при SM2=0 в него заносится принятый стоп-бит. В режимах 2 и 3 в него заносится 9-й принятый бит данных
TI SCON.1 Флаг запроса прерывания передатчика. Должен быть сбро­шен программно.
RI SCON.0 Флаг запроса прерывания приемника. Должен быть сбро­шен программно.

Биты SM0 и SM1 следующим образом определяют режимы работы после­довательного порта:

SM0 SM1 Скорость передачи Режим работы
    Fosc/12 Режим 0. Сдвиговый регистр
    переменная Режим 1. Асинхронный приемо-передатчик, 8 бит данных в кадре.
    Fosc/64 или Fosc/32 Режим 2. Асинхронный приемо-передатчик, 9 бит данных в кадре
    переменная Режим 3. Асинхронный приемо-пере-датчик, 9 бит данных в кадре

Кроме битов регистра SCON последовательный порт управляется также битом SMOD регистра PCON. В основном регистр PCON управляет режи­мами энергопотребления. Бит SMOD этого регистра управляет опцией удвоения скорости обмена. При SMOD = 1 скорость обмена данными через последовательный порт в режимах 1, 2 и 3 удваивается.

Синхронный обмен (режим 0)

В этом режиме по линии TxD выдается восемь синхроимпульсов, а по линии RxD принимается или передается байт данных. Передача и прием данных осуществляются начиная с младшего бита, сдвиг происходит в S6P2 каждого машинного цикла (рис. 3.13). Таким образом последовательный обмен про­изводится с фиксированной частотой Fosc/12. Это максимально возможная скорость обмена через последовательный порт микроконтроллера. Передача информации заключается в реализации следующих действий:

• запись в регистр SCON байта управления, очищающего биты SM0, SM1, REN;

• запись байта данных в регистр SBUF.

Передача начинается в следующем (после записи в регистр SBUF) машин­ном цикле с выдвижения бита D0 на линию RxD в фазе S6P2. В S3P1 следую­щего цикла на линии TxD появляется «0» первого импульса синхронизации. Выдвижение битов данных продолжается в каждом цикле до девятого вклю­чительно, когда на линии RxD появляется старший бит D7. В начале

Рис. 3.13 - Работа последовательного порта в режиме 0

десятого цикла линия RxD переводится в высокоуровневое состояние и ус­танавливается флаг RI, что свидетельствует об окончании передачи.

Прием информации инициируется записью в регистр SCON байта управле­ния, очищающего биты SM0, SM1, RI и устанавливающего бит REN. Во вто­ром цикле после этой операции записи в фазе S3P1 на линии TxD появляет­ся «0» первого импульса синхронизации, а на фазе S5P2 выполняется ввод младшего бита данных D0 с линии RxD в сдвиговый регистр. Ввод повторя­ется в последующих циклах и после восьми сдвигов в регистр вводится стар­ший бит D7, устанавливается флаг TI. После этого подпрограмма обслужи­вания может прочесть байт данных из SBUF.

Асинхронный обмен (режимы 1, 2, 3)

При асинхронном обмене данные передаются по линии TxD, а принимают­ся но линии RxD.

В режиме 1 кадр данных состоит из 10 бит (рис. 3.14): старт-бит, восемь битов данных, стоп-бит. При приеме в разряд RB8 регистра SCON записыва­ется стоп-бит. Скорость обмена определяется переполнением таймера 1.

В режимах 2 и 3 кадр данных состоит из 11 бит (рис. 3.15): старт-бит, восемь битов данных, программируемый бит, стоп-бит. При приеме подпрограмма обслуживания может прочитать девятый бит из разряда RB8 регистра SCON. При передаче девятый бит записывается в ТВ8 регистра SCON. Пользователь

Рис. 3.14 - Работа последовательного порта в режиме 1

может использовать девятый бит по своему усмотрению (часто это бит контро­ля). Скорость обмена в режиме 2 равна 1/32 (SMOD = 1) или 1/64 (SMOD = 0) частоты синхросигнала. Скорость передачи в режиме 3 определяется пере­полнением таймера 1. Передача информации заключается в реализации сле­дующих действий:

• запись в регистр SCON байта управления, определяющего биты SM0, SM1 (выбор режима) и очищающего бит REN. Для режимов 2 и 3 следует запи­сать значение девятого бита данных в ТВ8;

• запись байта данных в регистр SBUF.

Для инициализации приема следует установить бит REN регистра SCON. При­ем данных начинается после идентификации перехода «1»-«0» на линии RxD.

Рис. 3.15 - Работа последовательного порта в режимах 2 и 3

При синхронизации последовательного порта от Таймера 1, работающего в режиме автоперезагрузки, скорость обмена определяется по формуле:

где (ТН) - содержимое регистра ТН1 в десятичном представлении.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: