- •Теория микропроцессорных систем микроконтроллеры
- •Структура и функциональные возможности мк51
- •Электрический интерфейс мк51
- •Резидентная память данных
- •Работа блока управления и синхронизации
- •Элементы данных в мк51
- •Характеристика функциональных групп команд
- •2.5. Система команд семейства mcs-51.
- •2.5.1. Команды пересылки данных.
- •Команда обработки данных.
- •Команды передачи управления.
- •Характеристика периферийных блоков в составе мк51
- •Управление таймерами-счетчиками (т/с)
- •Описание вариантов конфигурации таймеров-счетчиков
- •Особенности реализации временных интервалов
- •Структура последовательного порта и принципы управления
- •Описание режимов работы уапп
- •Назначение и принципы функционирования системы прерываний
- •Управление приоритетами запросов прерываний
- •Работа системы обслуживания прерываний
- •Заполнение начальной области памяти программ
- •Шестнадцатиразрядные микроконтроллеры Motorola
- •Современные встраиваемые микроконтроллеры, выпускаемые производственной фирмой Freescale Semiconductor
- •Номенклатура и функциональный состав микроконтроллеров cемейства 68hcs12
- •2.1. Микроконтроллеры семейства 68нс12/912
- •2.1.3. Начальный запуск и обработка прерываний
- •2.1.4. Режимы работы и конфигурация микроконтроллеров
- •2.1.5. Функционирование и программирование Flash-памяти и эсппзу
- •2.1.6. Блок контроля функционирования и генератор тактовых импульсов
- •2.1.7. Параллельный ввод-вывод данных и подключение внешней памяти
- •2.1.8. Последовательные порты sci и spi
- •2.1.9. Таймерные модули и широтно-импульсные модуляторы
- •2.1.10. Модуль аналого-цифрового преобразователя atd
- •2.1.11. Модуль последовательного интерфейса msCan
- •2.1.12. Режим отладки bdm и установка контрольных точек
Управление приоритетами запросов прерываний
При работе МК возможная ситуация, когда одновременно поступают запросы на прерывание от разных источников. Для избежания конфликтов в МК51 реализована двухуровневая аппаратно-программная шкала приоритетов, соответственно которой устройство управления выбирает источник прерывания, который может быть обслуженным раньше. В соответствии с аппаратной шкалой приоритетность обслуживания запросов следующая: INT0 – TF0 – INT1 – TF1 – TI/RI.
Для любого из пяти источников (TF1, TF0, INT1, INT0, TI или RI) может быть установлен один из двух уровней приоритета - "высокий" или "низкий" - программным способом. В случае совпадения уровней приоритетов нескольких источников выбор высшего приоритета устройство управления проводит соответственно аппаратной (неизменной) шкале (см. также рис.16.2 или рис.29 в комплекте).
Например, если высокий приоритет выбран программистом для INT0 и TF1, то в случае одновременного запроса от этих источников сначала будет обслуженный запрос INT0, а потом TF1 и только после этого - остальные запросы в порядке TF0-INT1-(TI/RI).
Уровень приоритета каждого источника устанавливают через биты регистра приоритетов прерываний IP (рис.16.4):
Таблица 9.2.
Назначение битов РПП – регистра IP
Имя бита |
Позиция |
Назначение |
- PS PT1 PX1 PT0 PX0 |
IP.7-IP.5 IP.4 IP.3 IP.2 IP.1 IP.0 |
Не используются Бит приоритета УАПП (запрос TI-RI) Бит приоритета таймера 1 (запрос TF1) Бит приоритета внешнего запроса INT1 Бит приоритета таймера 0 (запрос TF0) Бит приоритета внешнего запроса INT0 |
Примечания: 1. Установка бита в "1" - назначение высокого приоритета.
Сброс бита в "0" - назначение низкого приоритета.
2. Регистр IP является ячейкой РПД с битовой адресацией.
3. Биты устанавливают и сбрасывают только программно.
Работа системы обслуживания прерываний
Флаги прерываний опрашиваются в момент S5P2 каждого МЦ. Ранжирование прерываний по уровню приоритета выполняется на протяжении следующего МЦ, и выбирается прерывание, которое необходимо обслужить в данный момент.
Система прерываний формирует аппаратно команду вызова LCALL и загружает ее в регистр команд IR. Один из адресов векторов перехода на процедуру обработки прерывания используется как адрес вызова (рис.16.2 или рис.29 в комплекте). Вектора перехода образуют участки по восемь байт в памяти программ. На этих участках могут находиться:
- команда JMP перехода на соответствующую процедуру обработки прерывания или команды условных переходов на несколько процедур (например, для УАПП - по TI или RI);
- короткая (до восьми байтов) процедура обслуживания прерывания.
Например: пусть зафиксирован запрос прерывания от TF1. Логика передачи управления показана схемой на рис.16.5 или рис.30 в комплекте.
Процедура обработки прерывания обычно начинается командами PUSH для сохранения в стеке важной информации из регистров (PSW, ACC, DPRT и т.д.), а завершается восстановлением из стека их содержимого (команды POP) в обратном порядке. Последней является команда RETI, по которой в (РС) загружается сохраненная точка возврата в основную программу и снимается блокировка прерывания только что обслуженного уровня. Таким образом, внутри процедуры обработки прерывания не может обслуживаться прерывание, которое вызвало данную процедуру (разумеется, в случае его появления).
В случае, если необходимо обрабатывать сигналы внешних прерываний от нескольких источников (больше двух), можно воспользоваться простой схемой (рис.16.6). В соответствии с ней, при возникновении запроса на прерывание от любого устройства (даже от нескольких одновременно!) будет сформирован единый запрос на входе #INT1. Процедура обработки этого общего запроса должна программным путем провести опрос всех входов Р1.0...Р1.3, определить устройство (или устройства), которое сделало вызов, выбрать источник с высшим приоритетом и провести соответствующую обработку события, которое вызвало прерывание основной программы.
Таким образом, подобная схема требует реализации протокола обработки прерывания с программным поиском источника. (Студентам предлагается самостоятельно разработать программный фрагмент реализации такого протокола).
