MCS-51 (1031646), страница 12
Текст из файла (страница 12)
Каждому источнику прерывания может быть индивидуально присвоен один из двух уровней приоритета:высокий или низкий. Выполняется это установкой (высокий уровень приоритета) илисбросом (низкий уровень приоритета) соответствующего бита в регистре приоритетовпрерываний IP (описан в разделе 2.2.4). Программа обработки прерывания с низким уровнем приоритета может быть прервана запросом прерывания с высоким уровнем приоритета, но не может быть прервана другим запросом прерывания с низким уровнем приоритета. Программа обработки прерывания с высоким уровнем приоритета не может быть прервана никаким другим запросом прерывания ни от одного из источников.
Если два запроса с разными уровнями приоритета приняты одновременно, сначала будет обслужен запрос с высоким уровнем приоритета. Если одновременно приняты запросы с одинаковымуровнем приоритета, обработка их будет производиться в порядке, задаваемом последовательностью внутреннего опроса флагов прерываний.
Таким образом, в пределах одногоприоритетного уровня существует еще одна структура приоритетов:ИсточникПриоритет внутри уровня1.IE0(высший)2.TF03.IE14.TF15.RI+TI(низший)56Необходимо особо подчеркнуть, что структура "Приоритет внутри уровня" работает только в тех случаях, когда определяется последовательность обслуживания запросовна прерывания, которые приняты одновременно и при этом имеют одинаковый уровеньприоритета.Общая схема системы прерываний ОМЭВМ приведена на рис. 2.22а.Рис.
2.22а. Система прерываний ОМЭОбработка прерываний и время отклика. Уровни на выводах INT0 и INT1 инвертируются и защелкиваются в флаги прерывания IE0 и IE1 в фазе S5P2 каждого машинного цикла. В фазе S5P2 устанавливаются флаги прерываний последовательного порта RIи TI. Флаги ТГ0 и TF1 таймеров/счетчиков устанавливаются в фазе S5P2 машинного цикла, в котором происходит переполнение Т/С. Анализ (опрос) флагов выполняется внутренними средствами ОМЭВМ в следующем после установки (защелкивания) флагов машинном цикле (цикл опроса флага).
И только после выполнения последнего цикла текущей команды производится аппаратный вызов соответствующей подпрограммы обслуживания, эквивалентный команде LCALL.Обращение к подпрограмме обслуживания задерживается (блокируется аппаратныйLCALL) при выполнении хотя бы одного из следующих условий:− уже производится обработка прерывания с таким же или высшим приоритетом;− текущий машинный цикл (цикл опроса флага) не является последним циклом выполняемой команды;− выполняемая команда текущей программы является командой RETI или любой командой обращения к регистрам IE, IP.В последнем условии после окончания одной из вышеуказанных команд обязательно выполнится еще минимум одна команда текущей программы перед вызовом подпрограммы обслуживания прерывания.Флаг прерывания, установленный во время действия блокировки прерывания поодному из трех указанных выше условий и сброшенный до их снятия, не вызовет обслуживания соответствующего запроса прерывания.На рис.
2.23 изображены случаи наиболее быстрой и медленной реакции на прерывание (на примере внешнего прерывания). От момента фиксации запроса внешнего пре-57рывания до начала выполнения первой команды подпрограммы обслуживания требуетсяот 38 до 86 периодов сигнала тактовой частоты ОМЭВМ TBQ (табл. 2.19).Рис.
2.23. Временная диаграмма задержки начала выполнения подпрограммы обслуживания внешнего прерыванияТаблица 2.19Выполняемые операции1. Завершение цикла, в котором обнаружен запроспрерывания2. Окончание текущей или следующей команды3. Выполнение команды MUL или DIV4. Выполнение аппаратно-реализуемой командыLCALL ' вызова подпрограммы обслуживания прерыванияВсегоВремя отклика на прерываниеНаиболее бы- Наиболее медстрая реакция ленная реакция2TBQ2TBQ12TBQКомандыMUL,DIV неиспользуются24TBQ38TBQ12TBQ48TBQ24TBQ86TBQЕсли запрос прерывания с более высоким уровнем приоритета зафиксируется вовремя аппаратного вызова подпрограммы обслуживания, а именно в фазе S5P2 1-го циклааппаратной команды LCALL, то по окончании процедуры текущего вызова сразу же начнет выполняться процедура аппаратного вызова по поступившему запросу.Аппаратно-реализуемая команда LCALL загружает содержимое счетчика командPC в стек (при этом PSW в стек не записывается), после чего записывает в PC адрес соответствующей подпрограммы обработки прерывания:58Источник прерыванияIE0TF0IE1TF1TI+RIАдрес подпрограммы (вектор прерывания)0003 Н000В Н0013 Н001В Н0023 НПри выполнении агшаратно-реализуемой команды LCALL в ячейку стека с младшим адресом загружаются разряды 0—7 счетчика команд, а в следующую ячейку стека —разряды 8—15 счетчика команд.Подпрограмма обслуживания прерывания продолжается до выполнения' командыRETI.
Команда RETI восстанавливает состояние логики прерывания и загружает в счетчиккоманд PC 2 байта адреса возврата из двух верхних ячеек стека. Восстановление состояния логики прерывания заключается в следующем: при переходе по вектору на подпрограмму обработки прерывания автоматически до выполнения команды RETI независимоот состояния бит регистра IE запрещаются все прерывания с уровнем приоритета, равнымуровню приоритета обслуживаемого прерывания, т. е.
вложенные прерывания с равнымиуровнями приоритета невозможны. Команда RETI снимает этот запрет. При использовании команды RET восстанавливается только состояние счетчика команд, т. е. происходитвозврат в прерванную программу. Состояние логики прерывания команда RET не меняет,т. е. логика управления обслуживанием прерываний по-прежнему считает, что продолжает обслуживаться прерывание, подпрограмма обработки которого была закончена командой RET.Организация пошагового режима работы в ОМЭВМ семейства МК51 можетбыть реализована с использованием особенностей системы прерывания при очень небольших затратах в плане дополнительного программного обеспечения.
Как уже отмечалось, при переходе по вектору на подпрограмму обработки прерывания автоматически довыполнения команды RETI запрещаются все прерывания с уровнем приоритета, равнымуровню приоритета обслуживаемого прерывания. После выполнения команды RETI обязательно будет выполнена минимум одна команда прерванной программы, после чего возможен следующий переход на обработку прерывания. Использовать эту особенность дляорганизации пошагового режима можно следующим образом:- запрограммировать одно из внешних прерываний (к примеру, INT0) наактивизацию по уровню;- закончить подпрограмму обработки прерывания от INT0 следующейпоследовательностью команд:LABEL1: JNB P3.2.LABEL1; ожидание "1" на входе Р3.2 (ОТ)LABEL2: JB P3.2.LABEL2 ; ожидание "0" на входе Р3.2 (INT0)RETI; возврат и исполнение одной команды- задать на входе Р3.2 (INT0) постоянный уровень "0" с возможностьюподачи единичных импульсов, к примеру, с помощью кнопки "ШАГ".После того как указанные манипуляции выполнены, будет происходить следующее:выполнится одна команда основной программы, после чего управление будет переданоподпрограмме обработки прерывания по INT0, которая не сможет завершиться до тех пор,пока на входе INT0 не будет зафиксирован импульс "0"_"1"—"0".
После прохождения такого импульса, задаваемого кнопкой "ШАГ" выполнится команда RETI, управление возвратится в основную программу, где будет выполнена одна команда, после чего вновьначнет обрабатываться прерывание по INT0. Таким образом, одно нажатие кнопки "ШАГ"(один импульс "0"-"1"-"0" на входе INT0) вызывает выполнение одной команды основнойпрограммы.592.3.5. Организация памятиВсе ОМЭВМ семейства МК51 имеют несколько адресных пространств, функционально и логически разделенных за счет разницы в механизмах адресации и сигналахуправления записью и чтением:- память программ;- внутренняя память данных;- внешняя память данных.Структура адресного пространства ОМЭВМ показана на рис.
2.24. Слева приводятся адреса соответствующих областей памяти.Рис. 2.24. Пространство памяти ОМЭВМПамять программ имеет 16-битовую адресную шину, ее элементы адресуются с использованием счетчика команд (PC) или инструкций, которые вырабатывают 16разрядные адреса.Память программ доступна только по чтению. ОМЭВМ не имеют команд и управляющих сигналов, предназначенных для записи в память программ. Память программимеет байтовую организацию и общий объем до 64 Кбайт. Ряд ОМЭВМ (КР1816ВЕ51,КМ1816ВЕ751, КР183ОВЕ51) содержат расположенную на кристалле внутреннюю памятьпрограмм емкостью 4 Кбайт, которая может быть расширена до 64 Кбайт за счет подключения микросхем внешней памяти программ.
Внутренняя память программ КР1816ВЕ51 иКР1830ВЕ51 представляет собой ПЗУ, формируемое при изготовлении ОМЭВМ. Внутренняя память программ КМ1816ВЕ751 является ППЗУ с ультрафиолетовым стиранием.Таким образом, для ОМЭВМ КРШ6ВЕ51, КМ1816ВЕ751 и КР1830ВЕ51 внутренняя и внешняя память программ разделены в соотношении 4 К/60 К.ОМЭВМ КР1816ВЕ31 и КР1830ВЕ31 не имеют внутренней памяти программ и могут работать только с внешней емкостью до 64 Кбайт.С точки зрения программиста имеется только один вид памяти программ объемом64 К. Тот факт, что в ряде ОМЭВМ он образуется комбинацией массивов, находящихся накристалле и вне его, в соотношении 4 К/60 К для программиста неощутим, так как АЛУавтоматически выбирает байт из соответствующего массива в соответствии с его адресом.60Сигналом, стробирующим выборку и ввод байта из внешней памяти программ вОМЭВМ является сигнал ОМЭВМ РМЕ.
Для ОМЭВМ, содержащих внутреннюю памятьпрограмм, РМЕ формируется только в том случае, если адрес в счетчике команд превосходит максимальный адрес внутренней памяти программ 0FFFH (т. е. для выборок извнутренней памяти программ РМЁ не формируется).Для ОМЭВМ, не имеющих внутренней памяти программ, РМЕ формируется прилюбом обращении к памяти программ.ОМЭВМ семейства МК51 имеют внешний вывод DEMA, с помощью которогоможно запретить работу внутренней памяти программ, для чего необходимо подать навывод DEMA "0".