3.3 Исследование системы прерывания микропроцессора
Микропроцессор i8085А (российский аналог КР1821ВМ85А) имеет несколько входов запросов прерывания, функции которых поясняет табл.2
Таблица 2
Наименование вывода |
Приоритет |
Адрес перехода при прерывании |
Активный сигнал для выбора |
TRAP |
1 |
0024H |
Перепад 0®1 |
RST 7.5 |
2 |
003CH |
Перепад 0®1 |
RST 6.5 |
3 |
0034H |
Высокий уровень ( лог.1 ) |
RST 5.5 |
4 |
002CH |
Высокий уровень |
INTR |
5 |
Согласно команде RST N |
Высокий уровень |
Запрос прерывания по входу TRAP называется немаскируемым, его невозможно запретить или разрешить программно. Остальные запросы называются маскируемыми, для их разрешения служит команда EI, а запрещения – команда DI. Кроме того, запросы прерываний по входам RST 5.5, RST 6.5, RST 7.5 можно разрешить или запретить индивидуально.
Исследование системы прерывания микропроцессора i8085А будем проводить на примере микроконтроллера, рассмотренного в п.3.2. На рис.5 приведена схема формирования запросов прерывания. RS-триггер используется для устранения дребезга контактов кнопки SB1. При нажатии SB1 на прямом выходе триггера формируется импульс высокого уровня, который подается на один из входов запросов прерывания, выбранный переключателем SA1.
Алгоритм работы МК следующий. После включения электропитания выполняется главная программа MAIN, которая производит необходимую инициализацию Затем программа зацикливается, и МК переходит в режим ожидания нажатия кнопки SB1. При нажатии SB1 вырабатывается запрос прерывания и микропроцессор переходит на выполнение подпрограммы обработки прерывания, начальный адрес который определяется видом запроса (см. табл.2 ).
При выполнении подпрограммы производится ввод двоичных данных из порта ввода, их запоминание в ОЗУ, перекодировка и вывод через 3 порта на семисегментные индикаторы. После этого происходит возврат в основную программу, т.е. вновь переход в режим ожидания нажатия кнопки SB1. На рис.6 приведены блок-схемы алгоритмов программы MAIN и подпрограммы отработки прерывания с именем IZMER.
3.3.1 Исследование запроса прерывания по входу TRAP
Программу работы МК в этом режиме сформируем в файле main_tra.asm, который удобно получить из файла main.asm. Чтобы не испортить содержимое файла main.asm, сделаем его копию, но уже с именем main_tra.asm. С этой целью перейдите на альтернативную панель DOS-навигатора и раскройте каталог VREM, в котором будут находиться временные файлы. Затем выделите файл main.asm и скопируйте его в каталог VREM. Выделите курсором полученный файл и нажмите клавишу F6. В раскрывшемся окне введите новое имя файла
С:\MP85\main_tra.asm
и нажмите Enter. В каталоге МР85 появится новый файл main_tra.asm. Отредактируйте этот файл в соответствии со следующим текстом.
PUBLIC MAIN_TRA
EXTRN PR810, CROSSCOD
STACKTOP EQU 900H
. .
. .
. .
BASE EQU 810H
MAIN_TRA: JMP MAIN ;переход на метку MAIN
ORG 0024H ;вектор прерывания по входу TRAP
JMP IZMER ;переход на метку IZMER
ORG 0050H ;основная программа
MAIN: LXI SP,STACKTOP
WAIT: JMP WAIT ;зацикливание программы
IZMER: IN IPORT
STA SAVE
.
.
.
CALL CROSSCOD
OUT OPORT3
RET ;возврат из подпрограммы
END
Здесь для краткости обозначены точками ….. команды программы MAIN из файла main.asm, которые необходимо оставить.
Теперь нужно получить объектный файл main_tra.obj и hex-файл main_tra.hex
Проверку правильности работы полученной программы рекомендуется вести следующим образом.
1. Запустите отладчик AVSIM85 и загрузите в него файл main_tra.hex.
2. Загрузите файл данных ram, формирующий в отладчике область ОЗУ.
3. Выберите нижнее окно Memory Space (область Dump 2) для отображения ОЗУ с адреса 0800Н. Убедитесь, что в ячейках памяти, находящихся в этом окне, записаны нули.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.