
- •Микропроцессорные устройства
- •4.2.1.3 Специальный режим использования порта р0:
- •10 Примеры схем включения омэвм………………………………………...……..……………..73
- •Введение
- •1 Общая характеристика омэвм к1816ве751
- •2 Условное графическое обозначение омэвм к1816ве751 и назначение ее отдельных выводов
- •3 Структура омэвм к1816ве751 и ее описание
- •3.1 Блок управления и синхронизации микроЭвм
- •3.2 Блок арифметико-логического устройства (алу)
- •3.3 Резидентная память данных
- •3.4 Резидентная память программ
- •3.5 Блок прерываний
- •3.6 Блок таймеров – счетчиков
- •3.7 Блок последовательного порта (интерфейса)
- •3.8 Параллельные порты ввода-вывода
- •3.9 Схема десятичной коррекции аккумулятора (сдка)
- •3.10 Внутренний тактовый генератор (osc)
- •3.11 Резидентная шина данных
- •3.12 Регистры
- •4 Особенности функционирования и применение омэвм в различных режимах
- •4.1 Использование таймеров-счётчиков
- •4.2 Использование параллельных портов ввода-вывода
- •4.2.1 Особенности работы порта р0
- •4.2.1.1 Особенности работы р0 с вп (впп или впд)
- •4.2.1.2 Особенности работы р0 в качестве портов ввода/вывода
- •4.2.1.2.1 Вывод данных через р0
- •4.2.1.2.2 Ввод данных через р0
- •4.2.1.3 Специальный режим использования порта р0:
- •4.2.2 Особенности работы порта р1
- •4.2.3 Особенности работы порта р2
- •4.2.4.1.2 Выполнение портом р3 альтернативных функций входа
- •4.2.4.2 Работа р3 в качестве порта вывода
- •4.2.4.3 Работа р3 в качестве порта ввода
- •4.3 Применение последовательного порта
- •4.3.1 Работа последовательного порта в режиме 0
- •4.3.1.1 Передача в режиме 0
- •4.3.1.2 Приём в режиме 0
- •4.3.2 Работа последовательного порта в режиме 1
- •4.3.2.1 Передача в режиме 1
- •4.3.2.2 Приём в режиме 1
- •4.3.3 Работа последовательного порта в режимах 2 и 3
- •4.3.4 Скорость передачи-приёма данных через последовательный порт
- •4.3.5 Пример программирования последовательного порта омэвм
- •4.3.6 Особенности межконтроллерного обмена информацией в локальных управляющих сетях
- •4.4 Особенности структуры прерываний
- •4.5 Организация пошагового режима работы
- •4.6 Организация памяти
- •4.6.1 Особый режим работы памяти омэвм
- •4.7 Расширение резидентной (внутренней) системы ввода-вывода (рсвв/выв)
- •5 Система команд
- •5.1 Способы адресации операндов
- •5.2 Команды передачи данных
- •5.3 Арифметические команды
- •5.4 Логические команды
- •5.5 Операции с битами
- •5.6 Команды передачи управления
- •6 Программирование и проверка омэвм км1816ве751
- •7 Программирование бита защиты памяти
- •8 Режим холостого хода и пониженного энергопотребления
- •8.1 Режим холостого хода
- •8.2 Режим микропотребления
- •8.3 Режим пониженного потребления для омэвм серии 1816 (n-моп)
- •9 Начальная инициализация омэвм
- •10 Примеры схем включения омэвм
- •Список литературы
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
изображены все возможные источники
прерывания и порядок их обработки.
Рисунок 20 - Схема алгоритма обработки прерывания
Каждое
из внешних прерываний
может быть активизировано по уровню
("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,
# 00000101B
; разрешение прерывания от
.
MOV
IP,
# 04H
; присвоение
старшего приоритета.
SETB EA ; общее разрешение прерывания.
MOV P3; # 11110011В ; имитация внешних прерываний.
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. IE0 |
(высший) |
2. TF0 |
|
3. IE1 |
|
4. TF1 |
|
5. RI + TI |
(низший) |
Необходимо особо подчеркнуть, что структура "Приоритет внутри уровня" работает только в тех случаях, когда определяется последовательность обслуживания запросов на прерывания, которые приняты одновременно и при этом имеют одинаковый уровень приоритета.
Упрощенная схема системы прерываний ОМЭВМ приведена на рисунке 22.
Рисунок 21 - Упрощенная схема системы прерываний
Обработка
прерываний и время отклика.
Уровни на выводах
и
инвертируются и защелкиваются в флаги
прерывания IE0
и IE1
в фазе S5P2
каждого машинного цикла. В фазе S5P2
устанавливаются флаги прерываний
последовательного порта RI
и TI.
Флаги TF0
и TF1
таймеров/счетчиков устанавливаются в
фазе S5P2 машинного цикла, в котором
происходит переполнение Т/С. Анализ
(опрос) флагов выполняется внутренними
средствами ОМЭВМ в следующем после
установки (защелкивания) флагов машинном
цикле (цикл опроса флага). И только после
выполнения последнего цикла текущей
команды производится аппаратный вызов
соответствующей подпрограммы обслуживания,
эквивалентный команде LCALL
[1].
Аппаратно-реализуемая команда LCALL загружает содержимое счетчика команд PC в стек (при этом PSW в стек не записывается), после чего записывает в PC адрес соответствующей подпрограммы обработки прерывания:
Источник прерывания |
Адрес подпрограммы (вектор прерывания) |
IE0 |
0003 Н |
TF0 |
000В Н |
IE1 |
0013 Н |
TF1 |
001В Н |
TI + RI |
0023 Н |
При выполнении аппаратно-реализуемой команды LCALL в ячейку стека с младшим адресом загружаются разряды 0 – 7 счетчика команд, а в следующую ячейку стека – разряды 8 – 15 счетчика команд.
Подпрограмма обслуживания прерывания продолжается до выполнения команды RETI. Команда RETI восстанавливает состояние логики прерывания и загружает в счетчик команд PC 2 байта адреса возврата из двух верхних ячеек стека. Восстановление состояния логики прерывания заключается в следующем: при переходе по вектору на подпрограмму обработки прерывания автоматически до выполнения команды RETI независимо от состояния бит регистра IE запрещаются все прерываний с уровнем приоритета, равным уровню приоритета обслуживаемого прерывания, т. е. вложенные прерывания с равными уровнями приоритета невозможны. Команда RETI снимает этот запрет. При использовании команды RET восстанавливается только состояние счетчика команд, т. е. происходит возврат в прерванную программу. Состояние логики прерывания команда RET не меняет, т. е. логика управления обслуживанием прерываний по-прежнему считает, что продолжает обслуживаться прерывание, подпрограмма обработки которого была закончена командой RET.