В микропроцессоре i8085A имеется специальный регистр для хранения информации о прерываниях. С помощью команды RIM (Read Interrupt Mask – читать маску прерывания) можно прочитать содержимое этого регистра. Команда RIM пересылает содержимое регистра прерываний в аккумулятор. Значение отдельных битов показаны на рис.7. Биты, обозначенные как М7.5,М6.5,М5.5, - это маски прерываний по входам RST 7.5, RST6.5 RST5.5. Если в каком-либо из этих битов будет 1, то прерывание замаскировано, т.е. запрещено. Бит IE является флагом общего разрешения прерывания, он отображает состояние триггера разрешения прерывания микропроцессора. Если прерывания разрешены, то IE=1, если запрещены, то IE=0. После начальной установки (RESET) микропроцессора все прерывания запрещены, поэтому будет IE=0, М75=М6.5=М5.5=1. Биты 4-7 регистра прерывания используются для других целей, их назначение мы рассматривать не будем. Для установки и сброса масок прерывания используется команда SIM (Set Interrupt Mask – установит маску прерывания). Эта команда пересылает содержимое аккумулятора в регистр прерываний микропроцессора. Информацию в аккумуляторе необходимо записать в формате, показанном на рис.8.
Разрешение на установку масок дает бит MSE (1 - разрешено, 0 – запрещено). Значения битов М7.5, М6.5, М5.5 определяют маску 1- маска установлена, 0 – маска сброшена). Биты 4-7 используются для других целей, поэтому их значения в рассматриваемом случае принимаем равными 0.
Если, например, надо разрешить прерывания по входу RST 5.5, то необходимо в программу включить команды:
EI ;разрешить прерывание
MVI A,00001110B ;MSE=1, M7.5=M6.5=1, M5.5=0
SIM
Программу работы МК для исследования прерывания RST 5.5 сформируем в файле main_r55.asm, который удобно получить из файла main.asm. Сделайте его копию с новым именем main_r55.asm по методике, изложенной в п.3.3.1. Отредактируйте этот файл в соответствии со следующим текстом.
PUBLIC MAIN_R55
EXTRN PR810,CROSSCOD
STACKTOP EQU 900H
.
.
.
BASE EQU 810H
MAIN_R55: JMP MAIN
ORG 002CH ;вектор прерывания по входу RST 5.5
JMP IZMER
ORG 0050H ;основная программа
MAIN: LXI SP,STACKTOP
EI ;разрешить прерывание
MVI A,0EH
SIM ;установить маски прерывания
WAIT: JMP WAIT ;зацикливание программы
IZMER: IN IPORT
STA SAVE
.
.
.
CALL CROSSCOD
OUT OPORT3
EI ;разрешить прерывание
RET ;возврат из прерывания
END
Далее необходимо получить объектный файл main_r55.obj и hex-файл main_r55.hex.
Проверку правильности работы программы будем вести в следующей последовательности.
1. Запустите отладчик AVSIM85 и загрузите в него файл main_r55.hex.
2. Загрузите файл данных ram, формирующий в отладчике область ОЗУ.
3. Выберите нижнее окно Memory Space (Область Dump 2) c начальным адресом 0800Н.
4. Переключитесь в дисплейную часть отладчика, и с помощью комбинации клавиш Ctrl-I перейдите в область PINS. Переместите курсор на вход R5.5. С помощью клавиши F1 запустите программу в автоматическом режиме. При этом курсор в левой части экрана остановится на строке
0053 JMP $.
Программа зацикливается и переходит в режим ожидания запроса прерывания.
Обратите внимание на строку
Rim: 0001110 , которая отображает содержимое регистра прерываний микропроцессора. Нуль в 0-м разряде означает, что запрос по входу RST 5.5 размаскирован, а 1 в 3-м разряде означает, что прерывание разрешено.
С помощью цифровой клавиши 1 подайте на вход R5.5 лог.1. Начните выполнение подпрограммы обработки прерывания. Наблюдайте за перемещением курсора в левой части экрана и через некоторое время убедитесь, что выполнение программы зациклилось. Объясняется это тем, что активным сигналом для входа RST 5.5 является высокий уровень (лог. 1), так же как и для входа INTR. Для выхода из цикла подайте на вход R5.5 лог.0.
5. Вновь подайте запрос прерывания на вход R5.5, используя методику, изложенную в п.3.3.2. для прерывания INTR. Убедитесь, что подпрограмма обработки прерывания была выполнена только один раз.
По содержимому портов 00Н-03Н и ячеек памяти 800Н, 810Н-812Н убедитесь в правильности работы подпрограммы.
6. Проверьте работу программы при других значениях входных данных. С этой целью установите на входе порта ввода с адресом 00Н код FFН. Запустите программу и убедитесь в правильности ее работы.
7. На этом отладку программы MAIN_R55 можно закончить. Перейдите в командную область AVSIM85 и вернитесь в DOS-навигатор.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.