Последовательный порт
Последовательный обмен используется при передаче информации на большие расстояния, с целью экономии оборудования. В последнее время он используется для внутриплатного и внутрикрейтового обмен с той же целью. Передача через последовательный порт может быть реализована в режимах синхронного или асинхронного обмена (отличается от синхронного и асинхронного способов передачи информации). При асинхронном режиме формат передаваемого сообщения имеет вид:
Cтартовый бит |
символ |
бит паритета |
стоповые биты |
Обычно длина символов, бит паритета и стоповые биты задаются программно.
Достоинство такого обмена - повышеная достоверность передаваемой информации.
Недостатки:
пониженное быстродействие, так как на каждый передаваемый символ требуется 3 или 4 бита сопровождения;
информация передается по байтам.
При асинхронном обмене требуется меньшее количество линий между приемником и передатчиком, так как синхронизация обеспечивается заданием одинаковой частоты генераторов ГТИ на приемном и передающем конце линии связи.
При синхронном обмене информация передается посимвольно, с необязательным битом паритета. В некоторых случаях начало сообщения, его конец и адрес приемника кодируются специальными символами (символами синхронизации). Скорость синхронного обмена возрастает в 5-10 раз, по сравнению с асинхронным. Однако требуется дополнительная линия, к которой подключен ГТИ(генератор тактовых импульсов), общий для приемника и передатчика.
Последовательный порт ВЕ51 осуществляет прием/передачу информации в последовательном коде, младшими битами вперед в дуплексном режиме (одновременный прием и передача информации) или полудуплексном режимах.
В состав последовательного канала входят принимающие и передающие сдвиговые регистры , специальный программно-доступный буфер SBUF, регистр управления SCON и логика управления каналом.
Запись байта в передатчик осуществляется автоматически, после того, как информация записана в SBUF. Чтение иформации выполняется из этого же регистра после установки флага готовности последовательного канала RI.
Последовательный канал может работать в следующих четырех режимах:
Режим '0' - cинхронный обмен в полудуплексном режиме с частотой OSC/12. Формат посылки – 8 бит. Данные принимаются и передаются через вход RxD , а частота синхронизации формируется на выходе TxD .
В этом режиме порт работает как восьмиразрядный сдвиговый регистр.
Режим '1' - асинхронный обмен, десятибитовый кадр, состоящий из стартового (ноль), стопового (единица )битов и 8-разрядного символа. Cкорость приема и передачи определяется частотой переполнения счетчика С/ T1 . В зависимости от состояния бита SMOD регистра PCON частота, поступающая на вход схемы синхронизации последовательного канала с выхода С/Т1, может изменяться в два раза. Схема синхронизации делит эту частоту на 16 и использует её для приема/передачи последовательного кода.
При использовании этого режима следует запретить прерывание от С/Т1.
При приеме стоп-бит заносится в бит RB8 регистра SCON.
Режим '2' - асинхронный 11-битовый кадр. По сравнению с режимом 1 добавлен программно устанавливаемый девятый бит. Передаваемый девятый бит данных принимает значение бита TB8 из регистра управления SCON. Этот бит может быть программно установлен в 0 или 1.В частности, ТВ8 можно присвоить значение бита паритета Р из регистра PSW для повышения достоверности передаваемой информации. При приеме девятый бит данных поступает в бит RB8 регистра SCON. Cкорость передачи фиксирована и определяется значением бита SMOD регистра PCON: OSC/32 или OSC/64.
Режим '3' -аналогичен режиму '2', но скорость обмена задается счетчиком С/T1 как в режиме 1.
Основная настройка последовательного канала на требуемый режим работы производится в регистре SCON, в котором задается режим работы, значение 11-го бита, разрешение контроля 11-го бита (в режимах '2' и '3'), флаги готовности приемника и передатчика.
|
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SCON |
SM0 |
SM1 |
SM2 |
REN |
TB8 |
RB8 |
TI |
RI |
|||||
Скорость последовательного обмена в зависимости от режима работы определяется либо частотой работы ОМК ( режимы 0 и 2) либо частотой переполнения C/T1 (режимы 1 и 3).
В режимах 1-3
изменение частоты передачи информации
в 2 раза обеспечивается битом SMOD регистра
PCON. В режиме '2' скорость задается частотой
В режимах '1' и '3' - частотой:
,
частота переполнения С/T1.
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
||||||||
PCON |
SMOD |
X |
X |
X |
GF1 |
GF0 |
PD |
IDL |
|||||||||
Рис.3.11. Формат регистра управления мощностью PCON : SMOD - бит управления скоростью передачи УАПП, при SMOD = 1 скорость передачи вдвое больше, чем при SMOD = 0; GF1,GF2 - флаги общего назначения, устанавливаемые пользователем; PD - установка бита переводит ОМК в режим холостого хода.
Hаиболее удобен для использования в последовательном канале режим '2' счетчика/таймера С/Т1, если с его помощью можно обеспечить требуемую скорость передачи, так как в этом режиме не требуется перезагрузка коэффициента пересчета.
Для использования C/T1 в качестве источника скорости обмена необходимо:
запретить прерывание от C/T1,
запрограммировать работу C/T1,
запустить C/T1.
Пример: Организовать работу передатчика в режиме '1'; передаваемые данные находятся в РПД с адреса аddr. Число передаваемых данные n . Вывести информацию в программном режиме.(SCON):=01x...xb, (TMOD):=1xh, (PCON):=80h
CLR IE.7; Запрет прерываний, возможно CLR IE.4;CLR ES
MOV SCON, #01x...xb; Режимное слово передатчика
MOV TMOD, #1xh; Режимное слово таймера (режим 1,таймер, прогр.запуск)
MOV PCON, #80h;Установка бита SMOD
MOV R0, #addr; Параметры массива
MOV R2, #n;
M2: MOV TH1, #C1; Коэффициент деления СТ1
MOV TL1, #C2;
SETB TCON.6; Пуск таймера
MOV SBUF, @R0; Передача элемента массива
M1: JNB SCON.1, M1; Анализ флага готовности передатчика
CLR SCON.1; Сброс флага готовности передатчика
DEC R0; Переход к следующему элементу массива
DJNZ R2,M2;
Проиллюстрируем расчет коэффициента деления для скорости обмена 110 бит/сек при частоте кварца 12 МГц : с учетом условий задачи ( SMOD=1) частота переполнения C/T1 равна 110*16=1760; на вход таймера поступает частота OSC/12 (1 МГц); коэффициент деления – 1000000/1760=568; так как счетчик суммирующий, то константа (65535-568+1)=64968 (0fdc8h). Таким образом, С1=FDh, C2=C8h.
Возможен вариант решения этой задачи, при котором перезапуск C/T1
выполняется по прерыванию от флага переполнения TF1. Тогда прерывание от C/T1 должно быть разрешено.
Аналогично рассчитывается коэффициент деления и для режима 2, но следует учитывать особенности этого режима ( режим перезапускаемый, регистр счетчика восьмиразрядный).
При организации последовательного канала необходимо учитывать, что выход передатчика может работать на длинную линию, поэтому его надо буферизировать. При реализации протоколов стандартных интерфейсов RS-232, RS-485 на выходе устанавливается специальная БИС, обеспечивающая соответствующее формирование сигнала.RS-232(-12B-'1', +12B-'0'), RS-485(5B). В качестве формирователей RS-232 можно использовать передатчики - К559ИП19, К170АП2, приемники - К559ИП20, К170УП2. Недостатком передатчиков этих схем является необходимость использования источников напряжения +/-12В. Лучшими характеристиками обладают формирователи MAX235, MAX221,242, которые питаются только от напряжения +5В и содержат в одном корпусе как приемники, так и передатчики.
