Исследование системы прерывания микропроцессора. Микропроцессор i8085А (российский аналог КР1821ВМ85А), страница 4

В микропроцессоре 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-навигатор.