Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mps.doc
Скачиваний:
9
Добавлен:
18.11.2019
Размер:
3.97 Mб
Скачать

15. Организация последовательного ввода/вывода микроконтроллера семейства mcs51 (омэвм51). Режимы работы uart. Расчет скорости передачи данных для асинхронного режима.

  1. Бит четности Р – не используется – 10 бит

  2. Бит четности Р используется – 11 бит

COM-порт: «0» = +3..+12 В, «1» = -3..-12 В.

Для организации последовательного ввода/вывода используется 2 регистра: SBUF – буфер последовательного ввода/вывода. При поступлении сюда байта автоматически осуществляется преобразование из параллельного кода в последовательный и наоборот из послед. в параллельный.

SCON – управление последовательны вводом/выводом.

Формат регистра SCON

SCON SM1,SM0,SM2,REN,TB8,RB8,TI,RI

SM1

SM2

Режим работы

0

0

0- режим послед. cинхронного вода/вывода на скорости fт/12.

Линия данных – RxD,

Линия синхр-ии – TxD (частота fт/12)

0

1

1- асинхронный (10 бит)

1

0

2 – асинхронный (11 бит), но 2 фиксированных скорости: fт/32 и fт/64

1

1

3-асинхронный (11 бит)

Для режимов 1 и 3 скорость устанавливается с помощью таймера 1.

Для режима 2 , существует 2 фиксированных скорости обмена.

    1. FT/32

    2. FT/64

Задаются в PCON (используется бит четности).

REN(receive enable) - разрешить\заблокировать приём.

TB8 – место для записи бита четности при передаче.

RB8 – место для записи бита четности при приеме.

Эти места побитно доступны.

TI – бит готовности для передатчика;

RI – бит готовности для приёмника;

Эти биты могут быть обработаны либо программно, либо по прерыванию.

Расчет скорости передачи для послед. вв/выв.

Расчет для режимов 1 и 3.

Скорость задается с помощью внутр.таймера Т1 в режиме 2. Таймер Т1 выполняет функцию внутр. Генератора. ТН1 – идет накопление, когда он 0, то загрузка его содержимого в TL1. Нужно загрузить в ТН1 и TL1 начальные значения. В них загружаются одинаковые значения = 256 - [ ], где V – скорость передачи (300 бод, 600, 1200….).

Пример. На что повлияет округление. Найти начальное значение для таймера Т1. fт=6 МГц, V=1200 б/с.

. А в таймер нужно загружать целое числа. Следовательно, округлим до 13. 256 – 13=243. Следовательно, скорость V= .

Возможно отклонение скорости на 0.05%. Мы укладываемся.

Если V=2400 б/с, то получаем . Нужно либо 6, либо 7 брать. Но в обоих случаях отклонение больше, чем 0.05%. Нужно выбирать fт, кратную набору всех скоростей. В частности fт=11.0592 МГц.

TCPU ~ мкс => необходимо подождать пока появится TI.

Контроллер 8-ми разрядный, а если есть контроль чётности, то девать его некуда. Решили хранить этот бит в SCON

!!! Аппаратно бит чётности не формируется !!!

Формирование p для передатчика.

Задача: передать содержимое аккумулятора. Добавим к нему бит чётности.

Бит чётности есть в PSW (в PC - регистр флагов).

Флаги формируются при арифметических и логических операциях, поэтому сложим A с 0 (чтобы не портить его содержимое).

add A,#0

mov C,P

mov TB.8,C

;Сформировали бит чётности и поместили в TB.8.

;C - бит переноса в PSW.

mov SBUF,A

;регистр SBUF для преобразования параллельного кода в ;последовательный

Перед следующей записью\чтением в SBUF необходимо проверить сигнал готовности.

PSW:

C

F0

RS1 RS0

P

!!!Бит P – бит пересылать нельзя, но через флаг переноса (С) – можно!!!

Для приемника:

… ;опрос бита готовности

mov A,SBUF ;преобразование последовательного кода в параллельный

add A,#0 ;далее сформируем бит чётности и сравним с приходящим(RB8)

mov C,P

xor C,RB.8 ;сравнение с RB8: если Р=RB8, то правильно принято, иначе нет

jnz error_msg

SM2

SM2 – разрешение многопроцессорной работы.

Р=0 & SM2=1– передаём команды => формируется бит готовности (RI)

Р=1 & SM2=1– передаём данные => бит готовности приёмника не формируется.

В режиме 0 SM2=0. В режиме 1: SM2=1 для приемника, если STOP=0, то RI не формируется. В режиме 2 и 3: если RB8=0, то RI не формируется, если RB8=1, то RI формируется.

Топология звезды. Передатчик вещает всем приемникам, а откликнуться должен только один. Помогает бит SM2. ТВ8=1 – передача адреса. ТВ8=0 – передача данных.

Пример.

В поле Data поместим адрес Slave. Пакет получат все, но расшифрует только Slave 2, сбросит SM2=0 и RI будет формироваться, а у других – не будет => данные будут принимать только Slave2.

Если SM2=0, то RI формируется в любом случае (всегда).

Если передаётся команда (SM2=1), то передаётся команда, которую примут все. Потом будут переданы данные (SM2=0), которые примет только тот, кому они предназначены.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]