|
В начало
Лабораторная
работа.
Изучение
системы приоритетных прерываний в МК 8051
Цель работы 1.
Ознакомление с организацией системы прерываний в микроконтроллере; 2. Изучение приемов программирования и принципов
построения программ обработки прерываний. Общие сведения
В
микроконтроллере предусмотрена приоритетная
система прерываний, обслуживающая
запросы на прерывание, поступающие от следующих источников прерывания: 1. Таймеры/счетчики 0 и
1 (при переполнении); 2. Два
внешних источника прерывания (запросы должны поступать от внешних устройств на входы INT0/, INT1/
микроконтроллера); 3. Порт последовательной
передачи данных (при передаче или приеме очередного байта информации).
Внешние прерывания INT0/, INT1/ могут быть вызваны или уровнем, или
срезом при переходе сигнала из 1 в 0,
что определяется значением бит управления в регистре TCON. От внешних
прерываний устанавливаются флаги IE0,
IE1 в регистре TCON, которые
инициируют вызов соответствующей
подпрограммы обработки запроса прерывания. Сброс этих флагов осуществляется
аппаратно только в том случае , если прерывание было
вызвано по срезу сигнала. Если прерывание вызвано уровнем сигнала прерывания,
то сбросом флага IE управляет соответствующая подпрограмма обслуживания
прерывания путем воздействия на источник прерывания для снятия запроса. Флаги
запросов прерывания от таймеров TF0, TF1 сбрасываются автоматически при передаче
управления подпрограмме обработки прерывания.
Прерывания могут быть вызваны или
запрещены программным путем, так как все указанные флаги программно доступны
и могут быть установлены/сброшены.
Упрощенная структура системы прерываний микроконтроллера показана на рис.1. В
микроконтроллере имеются два регистра, управляющие режимом прерываний (IE) и
уровнем приоритетов (IP). Форматы данных регистров представлены на рис.2,3
, а их описание - в таблицах 1,2. IE7 IE0
----------------------------¬
¦EA¦--¦--¦ES¦ET1¦EX1¦ET1¦EX0¦ L----------------------------
Рис.2 Структура регистра разрешения прерываний IE
Таблица 1. Назначение битов регистра IE -------T-------T-----------------------------------------------¬ ¦ Бит ¦Позиция¦ Название и назначение ¦ +------+-------+-----------------------------------------------+ ¦ EA ¦ IE.7
¦ Бит блокиpовки пpеpываний. Сбpасывается ¦ ¦ ¦ ¦ пpогpаммно для запpета
всех пpеpываний
¦ ¦ ¦ ¦ независимо
от состояний остальных битов ¦ ¦ ¦ ¦ pегистpа IE. ¦ +------+-------+-----------------------------------------------+ ¦ -- ¦ IE.6 ¦ Не используются. ¦ ¦ -- ¦ IE.5
¦ ¦ +------+-------+-----------------------------------------------+ ¦ ES ¦ IE.4
¦ Бит pазpешения пpеpывания от УАПП. ¦ ¦ ¦ ¦
Устанавливается/сбpасывается
пpогpаммно для
¦ ¦ ¦ ¦ pазpешения/запpета
пpеpываний от флагов ¦ ¦ ¦ ¦ TI или
RI. ¦ +------+-------+-----------------------------------------------+ ¦ ET1 ¦ IE.3 ¦ Бит pазpешения пpеpывания от таймеpа/счетчика1¦ ¦ ¦ ¦
Устанавливается/сбpасывается
пpогpаммно для
¦ ¦ ¦ ¦ pазpешения/запpета
пpеpываний ¦ +------+-------+-----------------------------------------------+ ¦ EX1 ¦ IE.2 ¦ Бит pазpешения
внешнего пpеpывания INT1/ ¦ ¦ ¦ ¦
Устанавливается/сбpасывается
пpогpаммно для
¦ ¦ ¦ ¦ pазpешения/запpета внешнего пpеpывания . ¦ +------+-------+-----------------------------------------------+ ¦ ET0 ¦ IE.1 ¦ Бит pазpешения пpеpывания от таймеpа/счетчика0¦ ¦ ¦ ¦
Устанавливается/сбpасывается
пpогpаммно для
¦ ¦ ¦ ¦ pазpешения/запpета
пpеpываний ¦ +------+-------+-----------------------------------------------+ ¦ EX0 ¦ IE.0 ¦ Бит pазpешения
внешнего пpеpывания 0. ¦ ¦ ¦ ¦
Устанавливается/сбpасывается
пpогpаммно для
¦ ¦ ¦ ¦ pазpешения/запpета
внешнего пpеpывания INT0/. ¦ L------+-------+------------------------------------------------ IP7 IP0 ----------------------------¬ ¦--¦--¦--¦PS¦PT1¦PX1¦PT0¦PX0¦ L----------------------------
Рис.3. Структура регистра приоритетов прерываний IP
Таблица 2. Назначение битов регистра IP _______________________________________________________
Символ Позиция Название и назначение
_______________________________________________________
-- IP.7-IP.5 Не используются
PS IP.4 Бит приоритета УАПП. Устанавлива- ется/сбрасывается
программой для присваивания
прерыванию от УАПП высшего/низшего
приоритета.
PT1 IP.3 Бит приоритета таймера 1. Устанав- ливается/сбрасывается
программой для присваивания
прерыванию от та- ймера
1 высшего/низшего приоритета.
PX1 IP.2 Бит приоритета внешнего прерывания
1. Установка/сброс
программой для присваивания
высшего/низшего прио- ритета
внешнему прерыванию INT1/.
PT0 IP.1 Бит приоритета таймера 0. Работает аналогично IP.3.
PX0 IP.0 Бит приоритета внешнего прерывания INT0/. Работает
аналогично IP.2
__________________________________________________________
Система прерываний
микроконтроллера формирует аппаратно вызов (LCALL) соответствующей
подпрограммы обслуживания, если она не заблокирована одним из следующих
условий: 1. В
данный момент обслуживается запрос прерывания равного или более высокого уровня
приоритета; 2.
Текущий машинный цикл не является последним в цикле выполняемой команды; 3.
Выполняется команда RETI или любая команда, связанная с обращением к регистрам
IE или IP. По
аппаратно сформированному коду LCALL система прерывания загружает в стек только
содержимое счетчика команд PC, а в счетчик команд затем загружается адрес
вектора соответствующей подпрограммы обработки прерывания: 0003H - для внешнего прерывания INT0/ и 000BH
- для прерывания от таймера TF0. Подпрограммы обслуживания прерываний при
необходимости должны сохранить в стеке некоторые регистры, а при
завершении программ требуется
использование команды RETI,
обеспечивающей правильный возврат из подпрограммы. Задания
1. Построить программу
реализации "бегущего огня" на основе программно-аппаратной задержки .
Внешний сигнал прерывания INT0/ вызывает программу вывода в порт Р1 "решетки", например код 55H.
Изучить отличия формирования сигнала прерывания по фронту и уровню.
Замаскировать прерывание INT0/ , а затем и прерывание от TF0, объяснить поведение программы
(отсутствие индикации ). 2.
Построить программу "бегущего огня" справо
налево. По сигналу прерывания INT0/ обеспечить изменение направление
перемещения огней. Запрограммировать
формирование сигнала прерывания по срезу.
Убедится, что при формировании сигнала прерывания по уровню программа
может работать неустойчиво.
Внимание! При программировании регистров управления прерыванием
обеспечить разрешение прерывания от T/C0 и INT0/. 3.
Изучить режимы обработки запросов прерываний с различными приоритетами. Для
этого назначить сигналу INT0/ приоритет, равный и меньше приоритета сигнала
прерывания F0 от T/C0. Убедится, что программа, запускаемая от таймера/счетчика
0, не прерывается. Содержание
отчета
1.Привести форматы и назначение управляющих слов, используемых при
программировании подсистемы прерывания микроконтроллера. 2.
Привести схемы алгоритмов, межпрограммные переходы при обработке прерываний. 3. Представить выводы по выполненным
заданиям. |
|