1,843,200
делитель = –––––––––––––––––––––––––––––––
16 Х скорость передачи в бодах
Чтобы установить скорость передачи в бодах, Вы должны проделать следующее:
1. Установить в 1 наиболее значимый бит регистра управления линией.
2. Загрузить младший и старший байты делителя соответственно в приемный буфер и регистр разрешения прерываний.
3. Установить DLAB в 0 для обеспечения нормальной работы универсального асинхронного приемопередатчика.
Применяя этот подход, можно установить любое значение скорости передачи в бодах. Максимально возможной скоростью передачи является 1/16 тактовой частоты, или 115,200 бод. Этот предел вытекает из того, что делитель не может быть меньше единицы.
1.6 Информационный обмен контроллер – ЭВМ с использованием интерфейса RS‑232
Для связи МК51 с интерфейсом RS‑232 можно использовать самый подходящий для этого вариант – последовательный порт.
Последовательный порт микроЭВМ семейства МК51 может использоваться в виде регистра сдвига для расширения ввода-вывода или в качестве универсального асинхронного приемопередатчика с фиксированной или переменной скоростью последовательного обмена и возможностью дуплексного включения. Последовательный порт может принимать очередной байт, даже если уже принятый до этого байт не был прочитан из регистра приёмника. Однако если до окончания приёма, находящийся в регистре приёмника байт не будет прочитан то принятый байт теряется. Программный доступ к регистрам приёмника и передатчика осуществляется обращением к регистру специальных функций SBUF. При записи в SBUF байт загружается в регистр передатчика, а при чтении SBUF байт читается из регистра приёмника.
Приём и выдача байта данных начинается с младшего разряда и заканчивается старшим разрядом. Для разрешения приёма необходимо установить 1 в разряде REN регистра управления SCON.
Последовательный порт может быть запрограммирован на один из четырёх режимов приёма / передачи путём программирования разрядов SM0 и SM1 регистра SCON. Во всех четырёх режимах передача инициируется любой командой, которая использует SBUF в качестве регистра назначения.
Режим 0. В этом режиме информация и передаётся и принимается через внешний вывод входа приёмника. Принимаются или передаются 8 бит данных. Через внешний вывод выхода передатчика выдаются импульсы сдвига, которые сопровождают каждый бит. Частота передачи бита информации равна 1/12 частоты резонатора.
Режим 1. В этом режиме передаются через TXD или принимаются из RXD 10 бит информации: старт бит, 8 бит данных и стоп-бит. Скорость приёма / передачи – величина переменная и задаётся таймером.
Режим 2. В этом режиме через TXD передаются или из RXD принимаются 11 бит информации: старт бит, 8 бит данных, программируемый девятый бит и стоп-бит. При передаче девятый бит может принимать значение 0 или 1, или, например, для повышения достоверности передачи путём контроля по чётности в него может быть помещено значение признака паритета из слова состояния программы. Частота приёма / передачи выбирается программой и может быть равна либо 1/32, либо 1/64 частоты резонатора в зависимости от управляющего бита SMOD.
Режим 3. Режим 3 совпадает с режимом 2 во всех деталях, за исключением частоты приёма / передачи, которая является величиной переменной и задаётся таймером.
Передача начинается в фазе S1P1 машинного цикла, следующего за ближайшим после ЗАПИСЬ В SBUF переполнением делителя на 16 в цепи сигнала СИНХР Тх. Период сигнала СИНХР Тх определяет время, в течение которого выдаваемый бит присутствует на выходе TxD. Внутренние сигналы микроЭВМ семейства МК51 ПОСЫЛКА, ДАННЫЕ и СДВИГ по функциональному назначению и формированию идентичны во всех режимах. На выход TxD выдается девять бит данных: D0‑D7 и TB8. После первого импульса СДВИГ в освободившийся девятый разряд регистра сдвига передатчика заноситься 1. Всего формируется 9 импульсов СДВИГ, в результате чего все биты регистра сдвига передатчика последовательно выдаются на выход TxD. По окончании выдачи всех бит посылки блок управления передачей устанавливает флаг прерывания передатчика TI и снимает сигналы ПОСЫЛКА и ДАННЫЕ.
Приём начинается при обнаружении перехода сигнала на входе RxD из 1 в 0. Для отслеживания такого перехода вход RxD аппаратно опрашивается с частотой f1. Когда переход обнаружен, немедленно сбрасывается счетчик делитель на 16 в цепи сигнала СИНХР Rx, в результате чего происходит совмещение моментов переполнения этого счётчика делителя с границами смены битов принимаемой посылки на входе RxD. Шестнадцать состояний счётчика-делителя делят время, в течение которого каждый бит принимаемой посылки присутствует на входе RxD, на 16 фаз, с 1 по 16 для каждого бита. В фазах 7, 8 и 9 специальное устройство ОМЭВМ, бит-детектор, считывает с входа RxD 3 значения принимаемого бита, по мажоритарному принципу «2 из 3» выбирает из них одно и подаёт его на вход регистра сдвига приёмника. Блок управления приёмом при этом формирует внутренний импульс МИКРОЭВМ СЕМЕЙСТВА МК51 СДВИГ, в результате чего содержимое регистра сдвига приёмника сдвигается на один разряд и принятый бит заносится в регистр сдвига приёмника. После 10 импульса СДВИГ блок управления приёмом загружает биты D0‑D7 из регистра сдвига приёмника в SBUF, переписывает 9 разряд регистра сдвига приемника в бит RB8 регистра SCON и устанавливает флаг прерывания приёмника RI в регистре SCON. Сигнал загрузки SBUF, RB8 и установки RI вырабатывается блоком управления приёмом тогда и только тогда, когда в момент генерации последнего импульса СДВИГ выполняются следующие условия: RI=0 и либо SM2=0, либо принятый 9 бит данных равен 0.
Если хотя бы одно из этих условий не выполняется, принятая посылка безвозвратно теряется, а флаг RI не устанавливается. Если оба приведённых условия выполнены, принятый 9 бит данных поступает в RB8, биты D0‑D7 записываются в SBUF и устанавливается флаг RI. Независимо от выполнения приведённых выше условий последовательный порт вновь начинает отслеживание перехода сигнала из 1 в 0 на входе RxD. Значение принятого стоп-бита не влияет на SBUF, RB8 или RI.
Обмен между контроллером и ЭВМ производится в режиме полудуплекса, т.е. ЭВМ посылает байт, а контроллер отвечает. С ЭВМ по каналу RS‑232 приходит байт с установленным девятым битом, это означает что необходимо начать преобразование входного сигнала. Второй и последующий байты посылаемые ЭВМ приводят к выталкиванию двух оцифрованных значений побайтно, старшими байтами вперёд, т.е. если первое слово обозначить H0L0, а второе H1L1 то они будут переданы так: H0, L0, H1, L1. Затем контроллер передаёт контрольную сумму, которая подсчитывается по формуле: CRC = S + H0 + L0 + H1 + L1. Она служит для контроля за правильностью передачи данных. После передачи контрольной суммы контроллер переходит в исходное состояние в котором он может принимать только байты с девятым битом равным единице.
1.7 Создание программы управления автоматизированным комплексом многоканальной связи
Конкретная степень сложности данной системы определяется не только количественными характеристиками схемы, но и ее топологией. Поэтому становится ясна необходимость выбора простого в реализации, быстрого, надежного и точного алгоритма.
Простота алгоритма в реализации необходима для удобства его понимания и облегчения возможности усовершенствования, кроме того нельзя забывать, что чем алгоритм сложнее в реализации, тем вероятнее появление в нем ошибок, чего необходимо избежать. Под быстротой алгоритма понимается способность его к завершению за достаточно малое время, чем это время меньше – тем лучше. Надежность алгоритма требует отсутствие «лишних» решений – решений, которые являются некорректными. Поэтому, при разработке программного обеспечения должны быть соблюдены следующие основные критерии:
1. Надежность;
2. Простота реализации;
3. Точность;
4. Скорость работы.
Каждая программа оперирует с тремя видами данных – входными, выходными и промежуточными. Входные данные – это вся та информация, которая доступна до начала выполнения, или вводится по мере работы программы. Выходные данные – результат работы программы. Входные и выходные данные служат для коммуникации с другими программами или с оператором, а промежуточные данные предназначены для обработки, выполнения алгоритмов и прочих действий, результат которых не доступен вне программы. Соответственно, для процесса проектирования программы необходимо проработать все три типа данных.
1.7.2 Составляющие программы
Программа управления автоматизированным комплексом многоканальной связи состоит из трех частей: основная программа, подпрограмма перезаписи карты памяти части битов внутренних регистров CR1, CR2, TSR и PSR линейных интерфейсов, которая выполняется с приходом прерывания от любого линейного интерфейса и подпрограмма связи с внешней ПЭВМ через последовательный порт, которая выполняется, когда приходит прерывание от последовательного порта.
Система прерываний для микроконтроллера АТ89С51 организована следующим образом. При приходе прерывания от последовательного порта, выполняется специальная подпрограмма обработки этого прерывания. Как она работает. Вначале производится проверка, и если приходит прерывание от передатчика, то сбросить его и выйти. Если нет, то производится проверка полученного байта, если пришёл байт с установленным 9 битом то выполняется инициализация процедуры чтения данных из памяти, затем подсчёт контрольной суммы, передача блока данных на ЭВМ и завершение подпрограммы. Если пришел байт без установленного 9 бита, то если переданы все байты – передаётся контрольная сумма, а если нет – передаётся байт и подсчитывается контрольная сумма.
В начале основной программы происходит назначение векторов прерываний от линейных интерфейсов и последовательного порта. Далее идут два блока инициализации: области памяти ОЗУ данных с 40Н по 7FН и самих линейных интерфейсов. Команды инициализации последних CR2.RESET формируются в соответствии с таблицей адресов линейных интерфейсов и таблицей адресов внутренних регистров линейных интерфейсов.