Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

·  командами, работающими с отдельными битами Р0.

При выполнении команд «ввода» вырабатывается внутренний сигнал «чтение выводов», который через буфер В2 передаёт значение i-го вывода Р0 на РШД.

4.2.1.3. Специальный режим использования порта Р0:

режим «чтение-модификация-запись»

В этом режиме порт Р0 работает в тех случаях, когда при выполнении команд порт является одновременно операндом и местом назначения результата. При этом информация считывается не с внешних выводов, а из триггеров-защёлок. Это происходит при выработке внутреннего сигнала «чтение защёлки» через буфер В1. Внутри микроконтроллера происходит модификация содержимого i-го триггера-защёлки в соответствии с выполняемой командой, а затем запись нового значения обратно в триггер-защёлку.

Если считывать информацию не из триггеров-защёлок, а с внешних выводов, то возможна ошибка. Например, если единичный выходной сигнал управляет каким-то мощным исполнительным элементом, то этот сигнал может падать по уровню и при чтении с вывода Р0, а не из защёлок, может восприниматься как логический 0 вместо логической 1.

4.2.2. Особенности работы порта Р1

Порт Р1 не используется при работе с внешней памятью, поэтому в отличие от портов P0 и P2 является "чистым" портом ввода-вывода.

Структура Р1 приведена в [1] и очень похожа на рассмотренную выше схему порта Р0 (рисунок 11).

Порт Р1 содержит 8 триггеров-защёлок, буферы ввода-вывода, несколько МОП-транзисторов, один из которых выполняет функцию внешнего ("подтягивающего") резистора Rc, группу дополнительных логических элементов для повышения быстродействия.

НЕ нашли? Не то? Что вы ищете?

Порт Р1 может использоваться в режиме "чтение – модификация – запись", который описан при рассмотрении порта Р0.

Кроме применения в качестве порта ввода-вывода порт Р1 применяется при программировании и проверке РПП (см. раздел 6).

Каждая из восьми линий порта Р1 может программироваться независимо друг от друга на ввод или вывод информации.

4.2.3. Особенности работы порта Р2

Структура порта Р2 приведена в [1] и выполнена аналогично схемам Р0, Р1. Кроме ввода-вывода порт Р2 используется для выдачи старшего байта адреса при работе с внешней памятью, поэтому его схема также как и Р0 содержит мультиплексор. Порт Р2 участвует в программировании и проверке РПП, может использоваться в режиме "чтение – модификация – запись", описанном выше (4.2.1.3). Каждая из восьми линий порта Р2 может программироваться независимо друг от друга на ввод или вывод информации.

4.2.4. Особенности работы порта Р3

Упрощённая структура i-го вывода (i = 0, 1, …, 7) порта Р3 приведена на рисунке 13.


Рисунок 13 - Упрощенная структурная схема Р3 (i-го вывода)

Р3 может работать как двунаправленный 8-разрядный порт ввода-вывода информации или выполнять альтернативные функции.

4.2.4.1. Работа Р3 в режиме "альтернативных функций"

Р3 может выполнять три альтернативные функции выхода и пять альтернативных функций входа.

4.2.4.1.1. Выполнение портом Р3 альтернативных

функций выхода

Порт Р3 может выполнять три альтернативные функции выхода. При этом используются следующие его выводы:

·  Р3.1 (T´D) – выход последовательного порта, предназначенный для вывода последовательных данных из передатчика последовательного порта;

·  Р3.6 (WR) – выход, с которого снимается сигнал - строб записи в ВПД при вы полнении команд MOVX @Ri, A; MOVX @DPTR, A;

·  P3.7 (RD) – выход, с которого снимается сигнал - строб чтения из ВПД при выполнении команд MOVX A, @Ri; MOVX A, @DPTR.

Чтобы одна из 3-х линий Р3 могла выполнять названные функции, в соответствующий триггер-защёлку регистра порта должна быть записана логическая 1, которая с единичного выхода триггера подаётся на нижний вход конъюнктора (рисунок 13).

Если значение альтернативной функции выхода 0/1, то после элемента И-НЕ оно преобразуется в 1/0 и поступает на затвор МОП-транзистора с n-каналом. Если на входе транзистора единица, то он открыт, а если нуль, то – закрыт. Т. е. с выхода транзистора и соответствующего выхода порта снимается 0/1, равный значению альтернативной функции.

4.2.4.1.2. Выполнение портом Р3 альтернативных

функций входа

Порт Р3 может выполнять пять альтернативных функций входа. При этом используются следующие его выводы:

·  Р3.0 (R´D) – вход последовательного порта, предназначенный для ввода последовательных данных в приёмник последовательного порта;

·  P3.2 (INT0) – используется как вход 0 внешнего запроса прерывания;

·  P3.3 (INT1) – используется как вход 1 внешнего запроса прерывания;

·  P3.4 (T0) – вход счётчика внешних событий T/CNT 0;

·  P3.5 (T0) – вход счётчика внешних событий T/CNT 1.

В схемах названных пяти линий порта Р3 сигнал "альтернативная функция выхода" принимает единичное значение. В триггеры-защёлки должна быть записана единица. Нулевым сигналом на затворе выходной транзистор закрыт и не шунтирует вход порта.

4.2.4.2. Работа Р3 в качестве порта вывода

В трёх разрядах порта Р3: Р3.1, Р3.6 и Р3.7, используемых в качестве альтернативных функций выхода, внутренний сигнал «альтернативная функция выхода» равен 1, если в данный момент не выполняется команда MOVX и нет выдачи данных из передатчика последовательного порта. В остальных пяти разрядах Р3 названный сигнал постоянно принимает единичное значение. В этом случае сигналом на выходе порта управляет соответствующий триггер-защёлка. Если триггер установлен в 1, то Р3.i = 1, а если триггер находится в 0, то Р3.i = 0.

4.2.4.3. Работа Р3 в качестве порта ввода

В этом случае в соответствующий триггер-защёлку должна быть записана 1, чтобы выходной транзистор был закрыт и не шунтировал i-й вывод порта. Внутренним сигналом «чтение выводов» (ввод) через буфер В2 вводимый сигнал передаётся на резидентную шину данных (РШД).

Аналогично остальным портам Р3 может использоваться в режиме «чтение-модификация-запись», который описан при рассмотрении работы порта Р0.

Следует подчеркнуть, что каждый бит порта Р3 может программироваться независимо друг от друга и использоваться как вход, выход или выполнять одну из альтернативных функций.

4.3. Применение последовательного порта

Последовательный порт ОМЭВМ может использоваться в виде регистра сдвига для расширения возможностей ввода-вывода или в качестве универсального асинхронного приемо­передатчика (УАПП) с фиксированной или переменной скоростью последовательного обмена и возможностью дуплексного включения (т. е. через последовательный порт можно принимать и передавать данные одновременно).

Последовательный порт содержит следующие основные узлы (рисунок 14): передающий регистр сдвига; принимающий регистр сдвига; буферный регистр приемопередатчика (SBUF), который содержит буфер передатчика (ПД) и буфер приёмника (ПРМ).

Режим передачи:

Режим приема:

Рисунок 14 - Упрощенная структура последовательного порта

Последовательный порт работает в одном из двух режимов: передачи и приёма.

При передаче байт по резидентной шине данных (РШД) записывается в буфер передатчика. Импульсами сдвига, которые может формировать таймер-счётчик1 (см. раздел 4.1), данные в последовательном двоичном коде, начиная с младшего значащего разряда, передаются в канал связи (КС).

При приёме под действием импульсов сдвига, которые могут быть сформированы в T/CNT 1, данные из канала связи в последовательном двоичном коде, начиная с младшего разряда, заполняют регистр сдвига приёмника. После выполнения требуемых проверок принятый байт переписывается в буфер приёмника, откуда может быть прочитан соответствующей командой.

Следовательно, при передаче производится преобразование параллельного ДК в последовательный, а при приёме – наоборот.

Последовательный порт может принимать очередной байт даже если уже принятый до этого байт не был прочитан из регистра приемника. Однако, если до окончания приема находящийся в регистре приемника байт не будет прочитан, принятый байт теряется. Программный доступ к регистрам приемника и передатчика осуществляется обращением к регистру специальных функций SBUF. При записи в SBUF байт загружается в регистр передатчика, а при чтении SBUF байт читается из регистра приемника.

Прием и выдача байта данных начинается с младшего разряда и заканчивается старшим разрядом. Для разрешения приема необходимо установить 1 в разряде REN регистра управления SCON (регистр SCON описан в разделе 3.7).

Последовательный порт может быть запрограммирован на один из четырех режимов приема/передачи путем программирования разрядов SM0 и SM1 регистра SCON. Во всех четырех режимах передача инициируется любой командой, которая использует SBUF в качестве регистра назначения (выполняет операцию "Запись в SBUF"). Прием в режиме 0 инициируется одновременным выполнением условий REN = 1 и RI = 0 (REN и RI – разряды регистра управления SCON). В остальных режимах прием инициируется приходом старт-бита (нулевой уровень) при REN = 1.

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

В режиме 0 последовательный порт работает как восьмиразрядный регистр сдвига. При этом 8 бит информации в последовательном коде принимаются и передаются через двунаправленный вывод RxD. На выводе TxD формируется сигнал синхронизации сдвигов.

Скорость (частота) приема/передачи в режиме 0 постоянна и составляет fBQ/12, где fBQ – частота синхронизации ОМЭВМ.

Временные диаграммы, иллюстрирующие работу последовательного порта в режиме 0, показаны на рисунках 15, 16. Все изображенные на этих рисунках сигналы, за исключением RxD и TxD, являются внутренними сигналами ОМЭВМ.


Рисунок 15 - Передача в режиме 0

Рисунок 16 - Прием в режиме 0

4.3.1.1. Передача в режиме 0

Передача начинается любой командой, которая использует SBUF в качестве регистра назначения (выполняет операцию "запись в SBUF") (рисунок 15).

При выполнении такой команды в фазе S6P2 вырабатывается внутренний импульс ЗАПИСЬ В SBUF, по которому предназначенный к передаче байт записывается в регистр сдвига передатчика и запускается блок управления передачей. Внутренняя система тактирования ОМЭВМ организована так, что между сигналом ЗАПИСЬ В SBUF и началом передачи проходит один полный машинный цикл, после чего вырабатывается внутренний сигнал ПОСЫЛКА, разрешающий выдачу содержимого регистра сдвига передатчика на выход RxD (вывод Р3.0 ОМЭВМ) и импульсов синхронизации сдвига (СИНХР СДВИГ на рисунке 15) на выход TxD (вывод Р3.1 ОМЭВМ). Сигнал СИНХР СДВИГ имеет низкий уровень в состояниях S3, S4 и S5 каждого машинного цикла и высокий уровень в состояниях S6, S1 и S2. В фазе S6P2 каждого машинного цикла, в котором сигнал ПОСЫЛКА активен, формируется внутренний импульс СДВИГ, по которому содержимое регистра сдвига передатчика сдвигается на одну позицию и на выходе RxD выставляется очередной бит передаваемой посылки. Всего формируется восемь импульсов СДВИГ, после чего блок управления передачей снимает сигнал ПОСЫЛКА и устанавливает флаг прерывания передатчика TI (разряд в регистре SCON). Оба эти действия выполняются в фазе S1P1 10-го машинного цикла после сигнала ЗАПИСЬ В SBUF. По прерыванию (TI = 1) прерывается основная программа, вызывается подпрограмма, которая сбрасывает флаг TI и записывает очередной передаваемый байт в SBUF

4.3.1.2. Приём в режиме 0

Прием начинается при одновременном выполнением двух условий: REN = 1 и RI = 0 (рисунок 16). В фазе S6P2 следующего машинного цикла блок управления приемом вырабатывает внутренний сигнал ПРИЕМ, разрешающий выдачу импульсов СИНХР СДВИГ на выход ОМЭВМ TxD. Импульсы СИНХР СДВИГ меняют свое состояние в фазах S3P1 и S6P1 и синхронизируют моменты поступления посылок на вход ПРМ. Биты принимаемых посылок через вход RxD поступают на регистр сдвига приемника. Состояние входа RxD опрашивается в фазе S5P2. В фазе S6P2 каждого машинного цикла, в котором сигнал ПРИЕМ активен, формируется внутренний импульс СДВИГ и содержимое регистра сдвига приемника сдвигается влево на одну позицию. Значение, которое при этом записывается в его крайний правый разряд, является значением сигнала на входе RxD, полученным в фазе S5P2 этого же машинного цикла. Всего формируется восемь импульсов СДВИГ, после чего блок управления приемом формирует сигнал загрузки содержимого регистра сдвига приемника в SBUF. В фазе S1P1 10-го машинного цикла после записи в SCON, сбросившей RI в 0, сигнал ПРИЕМ сбрасывается и устанавливается флаг прерывания приемника RI (бит в регистре SCON). Далее по RI = 1 выполняется прерывание основной программы, вызывается подпрограмма, которая сбрасывает флаг RI и читает принятый байт из буфера ПРМ.

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

В режиме 1 прием/передача данных осуществляется в формате восьмиразрядного УАПП. Через TxD передаются, а через RxD принимаются 10 бит: старт-бит (0), 8 бит данных и стоп-бит (1). При приеме стоп-бит заносится в бит RB8 регистра SCON. Скорость (частота) приема/передачи определяется частотой переполнений таймера / счетчика 1 FOV T/C1. Эта частота внутри УАПП проходит преобразование по схеме, приведенной на рисунке 17.


Рисунок 17 - Схема формирования синхрочастот передачи и приема внутри МК51 для

последовательного порта, работающего в режимах 1,3

В зависимости от значения бита SMOD регистра PCON частота, поступающая на вход делителей на 16, F’OV T/C1 = FOV T/CNT1 при SMOD = 1 и при SMOD = 0. На выходах делителей на 16 формируются частоты синхронизации передатчика fсинхр. ПД и приёмника fсинхр. ПРМ. На выходах 7, 8, 9 делителя на 16, формирующего fсинхр. ПРМ, вырабатываются 3 коротких импульса, когда на вход счётчика-делителя поступают соответственно 7-, 8- и 9-й импульсы частоты F’OV T/C1, начиная с начала цикла счёта. Эти импульсы используются логической схемой идентификации значения очередной принятой посылки (0/1) по мажоритарному принципу.

4.3.2.1. Передача в режиме 1


Передача инициируется любой командой, использующей SBUF в качестве регистра назначения, в который производится запись. Вырабатываемый при этом внутренний импульс ОМЭВМ ЗАПИСЬ В SBUF загружает предназначенный к передаче байт в младшие 8 разрядов регистра сдвига передатчика и инициирует начало работы блока управления передачей (рисунок 18).

Рисунок 18 - Передача в режиме 1

В режиме 1 регистр сдвига передатчика имеет 9 разрядов и в его 9-й разряд по импульсу ЗАПИСЬ В SBUF заносится "1" (стоп-бит).

Реально передача начинается в фазе S1P1 машинного цикла, следующего за ближайшим после ЗАПИСЬ В SBUF переполнением делителя на 16 в цепи сигнала fсинхр. ПД (рисунок 16). Таким образом, начало передачи синхронизовано делителем на 16, а не импульсом ЗАПИСЬ В SBUF. Период сигнала fсинхр. ПД (синхронизация передачи) определяет время, в течение которого выдаваемый бит присутствует на выходе TxD (время передачи бита).

Передача начинается установкой активного уровня внутреннего сигнала ОМЭВМ ПОСЫЛКА, появление которого вызывает выдачу на выход TxD уровня старт-бита (нуль). После этого через время передачи одного бита становится активным внутренний сигнал ОМЭВМ ДАННЫЕ, который разрешает выдачу содержимого регистра сдвига передатчика на выход TxD (вывод Р3.0 ОМЭВМ). При появлении активного сигнала ДАННЫЕ старт-бит на выходе TxD сменяется битом D0 регистра сдвига передатчика. По окончании времени передачи бита D0 формируется первый внутренний импульс ОМЭВМ СДВИГ, по которому содержимое регистра сдвига передатчика сдвигается на один разряд, и бит D0 на выходе TxD заменяется битом D1. Всего формируется 9 импульсов СДВИГ, в результате чего на выход TxD выдаются 8 бит данных и стоп-бит. По окончании выдачи всех бит посылки блок управления передачей устанавливает, как показано на рисунке 18, флаг прерывания передатчика TI и снимает сигналы ПОСЫЛКА и ДАННЫЕ. По прерыванию происходит сброс флага TI, запись нового байта и т. д.

4.3.2.2. Приём в режиме 1

Прием начинается при обнаружении перехода сигнала на входе RxD из "1" в "0". Для отслеживания такого перехода вход RxD аппаратно опрашивается с частотой F’OV T/C1 (рисунок 17).


Когда переход сигнала на входе RxD из "1" в "0" обнаружен, немедленно сбрасывается счетчик-делитель на 16 в цепи сигнала fсинхр. ПРМ (рисунок 19), в результате чего происходит совмещение моментов переполнения этого счетчика-делителя (импульсы fсинхр. ПРМ на рисунке 19) с границами смены битов принимаемой посылки на входе RxD.

Рисунок 19 - Прием в режиме 1

Шестнадцать состояний счетчика-делителя делят время, в течение которого каждый бит принимаемой посылки присутствует на входе RxD, на 16 фаз, с 1-й по 16-ю для каждого бита. В фазах 7, 8 и 9 специальное устройство ОМЭВМ, бит-детектор, считывает с входа RxD 3 значения принимаемого бита, по мажоритарному принципу "2 из 3-х" выбирает из них одно и подает его на вход регистра сдвига приемника. Блок управления приемом при этом формирует внутренний импульс ОМЭВМ СДВИГ, в результате чего содержимое регистра сдвига приемника сдвигается на один разряд и принятый бит заносится в регистр сдвига приемника. Всего формируется 10 импульсов СДВИГ, а регистр сдвига приемника в режиме 1 является 9-разрядным. Поэтому после 10-го импульса СДВИГ в регистре сдвига приемника находятся биты данных D0—D7 и стоп-бит. После 10-го импульса СДВИГ блок управления приемом загружает данные из регистра сдвига приемника в SBUF, загружает стоп-бит из регистра сдвига приемника в разряд RB8 регистра SCON и устанавливает флаг прерывания приемника RI. Сигнал загрузки SBUF, RB8 и установки RI вырабатывается блоком управления приемом только в том случае, если в момент генерации последнего импульса СДВИГ выполняются следующие условия:

1. RI = 0 и

2. Либо SM2 = 0, либо принятый стоп-бит равен "1".

Если хотя бы одно из этих условий не выполняется, принятая посылка безвозвратно теряется, а флаг RI не устанавливается. Если оба приведенных условия выполнены, стоп-бит поступает в RB8, восемь бит данных поступают в SBUF и устанавливается флаг RI. В это же время, независимо от выполнения приведенных выше условий, последовательный порт вновь начинает отслеживание перехода сигнала из "1" в "0" на входе RxD и приём нового байта. До окончания этого процесса предыдущий байт должен быть прочитан из буфера ПРМ, иначе будет наложения нового принятого байта на старый.

Если мажоритарный отбор при приеме первого бита посылки (старт-бит) показывает ненулевое значение бита, все устройства блока приема сбрасываются, и начинается отслеживание

следующего перехода сигнала из "1" в "0" на входе RxD. Таким образом, обеспечивается защита от ошибочных старт-битов.

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

Режимы 2 и 3 — это режимы 9-разрядного УАПП с постоянной (режим 2) и переменной (режим 3) скоростью обмена. В этих режимах 11 бит передаются / принимаются соответственно через выводы TxD / RxD в следующей последовательности: старт-бит, 9 бит данных, стоп-бит. 9-ый бит данных при передаче определяется содержимым разряда ТВ8 регистра SCON. При приеме 9-й бит данных заносится в бит RB8 регистра SCON.

Скорость (частота) приема / передачи в режиме 2 (рисунок 20) программно настраивается на одну из двух возможных величин: fBQ/32 и fBQ/64, где fBQ – частота синхронизации ОМЭВМ.


Рисунок 20 - Схема формирования синхрочастот передачи и приема внутри МК51 для

последовательного порта, работающего в режиме 2

В режиме 3 скорость (частота) приема / передачи определяется частотой переполнений Таймера / Счетчика 1 FOV T/CNT1 (рисунок 17).

Различие в скорости (частоте) приема / передачи является единственным отличием между режимом 2 и режимом 3. Во всем остальном эти два режима полностью идентичны.

Временные диаграммы, иллюстрирующие работу последовательного порта в режимах 2 и 3, приведены в [1, 2].

Работа УАПП в режимах 2 и 3 очень похожа на режим 1. Но при этом имеется ряд отличий:

1.  В формате обмениваемых данных. После восьми информационных перед стоп-битом присутствует программируемый 9-й бит. При передаче значение 9-го бита определяется значением разряда TB8 регистра SCON. При приёме 9-й бит фиксируется в разряде RB8 регистра SCON.

2.  Если бит SM2 регистра SCON установлен в единицу, то сообщение, в котором 9-й бит равен нулю, бракуется (теряется). Т. е. флаг RI не устанавливается, и прерывание основной программы при приёме не происходит.

3.  На временных диаграммах работы передатчика в режимах 2 и 3 по сравнению с режимом 1 добавится ещё один бит (TB8) и цикл передачи удлиняется на один такт (период частоты синхронизации передатчика).

4.  На временных диаграммах работы приёмника в режимах 2, 3 добавится ещё один принимаемый бит (RB8) перед стоп-битом. Кроме того, детектирование стоп-бита не происходит, и флаг RI устанавливается после 10-го сдвига, т. е. после фиксации RB8.

4.3.4. Скорость передачи-приёма данных через

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

Скорость (частота пересылки битов) последовательного обмена Vпд в зависимости от режима работы последовательного порта определяется либо частотой синхронизации ОМЭВМ fBQ (режимы 0 и 2), либо частотой переполнения Таймера / Счетчика 1 Fov (режимы 1 и 3).

В режиме 0 скорость последовательного обмена максимальна. Она постоянна и составляет:

Vпд = fBQ/12 [бит/с]. (3)

При необходимости работать с переменной скоростью используется режим 2 последовательного порта. В этом режиме скорость последовательной передачи зависит от состояния бита SMOD регистра SCON и частоты fBQ:

Vпд = (2SMOD/64) * fBQ [бит/с]. (4)

Т. е. при SMOD = 0 Vпд = fBQ/64, а при SMOD = 1 Vпд = fBQ/32. по сигналу “сброс” бит SMOD устанавливается в нуль. Для установки бита SMOD используются команды с байтовой адресацией, например, команда MOV 87H, #80Н.

В режимах 1, 3 также имеется возможность изменить скорость последовательной передачи:

Vпд = (2SMOD/32) * FOV T/C1 [бит/с], (5)

где FOV T/C1 – частота переполнений Т/С 1.

Для использования Т/С 1 в качестве источника для задания скорости обмена необходимо:

1) запретить прерывания от Т/С 1;

2) запрограммировать работу Т/С 1 в качестве таймера или в качестве счетчика, установив при этом для него один из режимов 0, 1 или 2;

3) запустить Т/С 1 на счет.

Обычно для синхронизации последовательного порта таймер Т/С 1 включается в режим автозагрузки (режим 2).

В этом случае скорость последовательного обмена определяется по формуле:

Vпд = (2SMOD * fBQ)/(32 * 12 * [256-(TH1)]) [бит/с], (6)

где (ТН1) – десятичный код содержимого ТН1. Если необходим последователь­ный обмен с очень низкой скоростью, то можно использовать Т/С 1 в режиме 16-разрядного таймера (режим 1), разрешив при этом прерывание от Т/С 1 с целью перезагрузки TL1/TH1 в подпрограмме обслуживания прерывания.

В таблице 19 приведен ряд стандартных скоростей последовательного обмена и то, как они могут быть реализованы в ОМЭВМ.

Таблица 19 - Формирование стандартных скоростей обмена по последовательному порту

В таблице 20 приведена сводная информация по всем четырем режимам работы последовательного порта ОМЭВМ семейства МК51.


Таблица 20 - Сводная информация по всем режимам работы последовательного порта

4.3.5. Пример программирования последовательного порта ОМЭВМ

Исходные данные для программирования:

1.  Скорость обмена – 110 бит/с (бод);

2.  fBQ = 6 МГц;

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

4.  Режим работы T/C1 – 2;

5.  Вид обмена – под управлением микропроцессора (программно-управляемый);

6.  Бит SMOD регистра PCON сигналом "RESET" установлен в 0.

Ниже приведен пример программы инициализации последовательного порта и фрагменты программно-управляемого обмена:

; инициализация последовательного порта

; для работы со скоростью 110 бод на

; частоте тактового сигнала 6 МГц;

INT1: CLR TCON.6 ; останов таймера;

CLR IE.3 ; запрет прерываний от T/C1;

CLR IE.4 ; запрет прерываний от УАПП;

MOV TH1,#72H ; автозагружаемое значение для получения

; скорости 110 бод;

MOV SCON,#B ; установка режима 9-разрядного УАПП;

MOV TMOD,#B ; установка режима автозагрузки таймера 1;

SETB TCON.6 ; запуск таймера1;

; приём символа от внешнего устройства;

CIN: JNB RI, CIN ; ожидание завершения приёма;

MOV A, SBUF ; чтение полученного символа;

CLR RI ; очистка флага приёма;

; передача символа на внешнее устройство;

COUT: JNB TI, COUT ; ожидание окончания передачи предыдущего

; символа;

CLR TI ; очистка флага передачи;

MOV SBUF, A ; выдача символа.

4.3.6. Особенности межконтроллерного обмена информацией в

локальных управляющих сетях

Режим 2 и режим 3 последовательного порта позволяют организовать работу ОМЭВМ в многопроцессорных системах, использующих для обмена информацией между ОМЭВМ разделяемый моноканал (коаксиальный кабель, витая пара, оптоволокно) [2]. В этих режимах принимается девять бит данных и 9-й принятый бит записывается в бит RB8 регистра SCON. При этом, если бит SM2 регистра SCON установлен в "1", то после приема последней посылки флаг прерывания приемника RI будет установлен только в том случае, если RB8 = 1. Эту особенность работы последовательного порта в режимах 2 и 3 можно использовать для организации межконтроллерного обмена следующим образом.

Когда ведущая ОМЭВМ хочет передать блок данных одной из ведомых ОМЭВМ, она выдает в моноканал посылку с адресом ведомой, которой будет передан блок данных. Адресная посылка отличается от посылки с данными тем, что в адресной посылке 9-й бит данных равен "1", а в посылке с данными – "0". Таким образом, при SM2 = 1 ни одна ведомая ОМЭВМ не будет реагировать на посылку с данными, но все ведомые среагируют на адресную посылку. Проанализировав полученный адрес, адресуемая ОМЭВМ сбрасывает свой бит SM2, а остальные оставляют его без изменения и вновь переходят к выполнению прерванной программы. После этого ведущая ОМЭВМ может начинать выдачу в моноканал блока данных, на посылки которого будет реагировать только ОМЭВМ, у которой SM2 = 0.

Бит SM2 никак не участвует в работе последовательного порта в режиме 0. В режиме 1 бит SM2 может использоваться для контроля правильности принятого стоп-бита: в режиме 1, если SM2 = 1, флаг прерывания приемника RI не будет установлен, если принятый стоп-бит не равен "1".

4.4. Особенности структуры прерываний


Механизм прерываний в ОМЭВМ позволяет автоматически реагировать на внешние и на внутренние события (переполнение таймеров/счетчиков; завершение последовательного обмена). Алгоритм обработки прерывания при обнаружении запроса прерывания представлен на рисунке 21. На рисунке 22 изображены все возможные источники прерывания и порядок их обработки.

Рисунок 21 - Схема алгоритма обработки прерывания

Каждое из внешних прерываний может быть активизировано по уровню ("0") или по фронту (переход из "1" в "0") сигналов на выводах ОМЭВМ Р3.2, Р3.3, что определяется состоянием битов IT0 и IT1 регистра TCON. При поступлении запроса внешнего прерывания (х=0,1) устанавливается флаг IЕх (х=0,1) регистра TCON. Установка флагов IЕх в регистре TCON вызывает соответствующее прерывание. Очистка флага IЕх производится следующим образом: при прерывании по фронту IЕх сбрасывается аппаратно (автоматически внутренними средствами ОМЭВМ) при обращении к соответствующей подпрограмме обработки прерывания; при прерывании по нулевому уровню флаг очищается при снятии запроса внешнего прерывания, то есть в IЕх отслеживается состояние вывода .

Чтобы внешнее прерывание по уровню было распознано, необходимо, чтобы низкий уровень на выводе удерживался в течение не менее 12 периодов сигнала тактовой частоты ОМЭВМ. Это объясняется тем, что проверка выводов ОМЭВМ выполняется внутренними аппаратными средствами ОМЭВМ один раз в каждом машинном цикле. В случае внешнего прерывания по фронту флаг IЕх будет установлен, если две последовательные проверки входа покажут в одном машинном цикле "1", а в следующем "0". Поэтому, если внешнее прерывание активизируется по переходу из состояния высокого уровня в состояние низкого уровня, то минимум одному машинному циклу низкого уровня должен предшествовать минимум один машинный цикл высокого уровня на выводе . Если внешнее прерывание активизируется по уровню, запрос должен удерживаться до начала обслуживающей подпрограммы и сниматься до завершения этой подпрограммы для предотвращения повторного обслуживания.

Прерывания от таймеров/счетчиков вызываются установкой флагов TF0 и TF1 регистра TCON, которые устанавливаются при переполнении соответствующих регистров таймеров/счетчиков (за исключением режима 3, см. раздел 4.1.4). Очистка флагов TF0 и TF1 производится внутренней аппаратурой ОМЭВМ при переходе к подпрограмме обслуживания прерывания.

Прерывание от последовательного порта вызывается установкой флага прерывания приемника RI или флага прерывания передатчика TI в регистре SCON. В отличие от всех остальных флагов, RI и TI сбрасываются только программным путем обычно в пределах подпрограммы обработки прерывания, где определяется, какому из флагов RI или TI соответствует прерывание.

Каждый из перечисленных источников прерываний может быть индивидуально разрешен или запрещен установкой или сбросом соответствующего бита в регистре разрешения прерываний IE. Регистр IE содержит также бит ЕА, сброс которого в "0" запрещает сразу все прерывания. Необходимым условием прерывания является его разрешение в регистре IE. Формат и описание регистра разрешения преры­ваний приведены в разделе 3.5.

Все биты, которые вызывают прерывания (IE0, IE1, TF0, TF1, RI, TI), могут быть программно установлены или сброшены с тем же результатом, что и в случае их аппаратной установки или сброса. Т. е. прерывания могут программно вызы­ваться или ожидающие обслуживания прерывания могут программно ликвидиро­ваться. Кроме того, прерывания по могут вызываться программной установкой Р3.2 = 0 и Р3.3 = 0, как показано в приведенном ниже примере:

MAIN: MOV IE, # B ; разрешение прерывания от .

MOV IP, # 04H ; присвоение старшего приоритета.

SETB EA ; общее разрешение прерывания.

MOV P3; # В ; имитация внешних прерываний.

SUBR: ORG013H ; переход к подпрограмме обслуживания .

В предложенном примере запросы прерывания и , имеющие различный приоритет, поступают одновременно. При этом обслуживается прерывание с высшим приоритетом.

В случае, когда прерывание по (x = 0, 1) вызывается уровнем сигнала на соответствующем входе ОМЭВМ, флаг IЕх (х = 0, 1) при переходе к подпрограмме обработки прерывания автоматически сбрасывается, а затем, если соответствующий вывод ОМЭВМ Р3.2 или Р3.3 все еще находится в состоянии логического "0", вновь устанавливается. Поэтому, в случае, когда прерывание по входам вызывается уровнем, программная установка в "1" флагов IE0, IE1 вызовет прерывание, после чего соответствующий флаг IЕх (х = 0, 1) будет автоматически сброшен при переходе к подпрограмме обработки прерывания.

Флаги IE0, IE1, TF0, TF1, RI, TI устанавливаются независимо от того разрешено или нет соответствующее прерывание в регистре IE.

Структура приоритетов прерываний является двухступенчатой. Каждому источнику прерывания может быть индивидуально присвоен один из двух уровней приоритета: высокий или низкий. Выполняется это установкой (высокий уровень приоритета) или сбросом (низкий уровень приоритета) соответствующего бита в регистре приоритетов прерываний IP (описан в разделе 3.5). Программа обработки прерывания с низким уровнем приоритета может быть прервана запросом прерывания с высоким уровнем приоритета, но не может быть прервана другим запросом прерывания с низким уровнем приоритета. Программа обработки прерывания с высоким уровнем приоритета не может быть прервана никаким другим запросом прерывания ни от одного из источников. Если два запроса с разными уровнями приоритета приняты одновременно, сначала будет обслужен запрос с высоким уровнем приоритета. Если одновременно приняты запросы с одинаковым уровнем приоритета, обработка их будет производиться в порядке, задаваемом последовательностью внутреннего опроса флагов прерываний. Таким образом, в пределах одного приоритетного уровня существует еще одна структура приоритетов:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10