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

ORG  0050H                   ;основная программа

MAIN:                   LXI    SP,STACKTOP

EI                                    ;разрешить прерывание

WAIT:                   JMP   WAIT                    ;зацикливание программы

IZMER:                 IN      IPORT

STA   SAVE

.

.

.

CALL   CROSSCOD

OUT    OPORT3

EI                                       ;разрешить прерывание

RET                                   ;возврат из подпрограммы прерыван.

END

Обратите внимание, что в программе MAIN_INT команда EI используется дважды. Первый раз она разрешает прерывания после начальной установки микропроцессора (в блоке инициализации). Второй раз она разрешает прерывания при выходе из подпрограммы обработки  (перед командой RET). Дело в том, что при переходе к подпрограмме обработки прерывания микропроцессор перестает реагировать на вновь поступающие запросы, т.е. новые прерывания автоматически запрещаются. И если перед выходом из подпрограммы не будет команды EI, то программа не будет реагировать на запросы прерывания. Теперь необходимо получить объектный файл mail_int.obj и hex-файл main_int.hex.

Проверку правильности работы программы будем вести в следующей последовательности.

1.  Запустите отладчик AVSIM85 и загрузите в него файл main_int.hex.

2.  Загрузите файл данных ram, формирующий в отладчике область ОЗУ.

3.  Выберите нижнее окно Memory Space (область Dump 2) с начальным адресом 0800Н.

4.  Переключитесь в дисплейную часть отладчика, и с помощью комбинации клавиш Ctrl-I перейдите в область PINS. Затем сместите курсор влево к надписи Intr Bus (шина прерывания). Здесь должен размещаться код команды RST N, который выдает  схема прерывания. В нашем случае это будет RST 7, поэтому заносим

Intr Bus:  FF

После этого смещаем курсор вправо к надписи Intr, обозначающей одноименный вход запроса прерывания.

5.  С помощью клавиши F1 запустите программу в автоматическом режиме. При этом курсор в левой части экрана остановится на строке

0053 JMP $.

Программа зацикливается и переходит в режим ожидания запроса прерывания. С помощью цифровой клавиши 1 подайте на вход Intr лог.1. Начнется выполнение подпрограммы обработки прерывания. Наблюдайте за перемещением курсора в левой части экрана и через некоторое время убедитесь, что выполнение программы зациклилось. Объясняется это следующим.

Для входа INTR запросом прерывания является высокий уровень сигнала, т.е. лог.1 (см. табл.2). Чтобы подпрограмма обработки прерывания выполнялась только один раз, необходимо к моменту ее окончания снять запрос, т.е. подать на INTR лог.0.

С помощью цифровой клавиши 0 установите INTR: 0 и убедитесь, что выполнение подпрограммы прекратилось, а программа зациклилась на адресе 0053Н.

В дальнейшем для отладки можно использовать следующий прием. Для создания запроса прерывания надо подать на вход Intr лог.1, и как только начнется движение курсора в левой части экрана, подать на вход Intr лог.0. При этом подпрограмма выполнится только один раз.

Вновь подайте запрос прерывания на Intr и убедитесь в корректности работы программы.

По содержимому портов 00Н-03Н и ячеек памяти 800Н, 810Н-812Н убедитесь в правильности работы подпрограммы обработки прерывания.

6.  Проверьте работу программы при других значениях входных данных. С этой целью с помощью комбинации клавиш Alt-1 перейдите в область портов и установите на входе порта ввода с адресом 00Н код FFH. Затем с помощью комбинации клавиш Ctrl-I  вновь вернитесь в область PINS.

Подайте запрос прерывания на вход Intr и убедитесь в правильности работы программы.

7.  На этом отладку программы MAIN_INT можно закончить. Перейдите в командную область AVSIM85 и вернитесь в DOS-навигатор.

3.3.3.  Исследование запроса прерывания по входу RST 5.5

Прерывания по входам RST 5.5,RST 6.5,RST 7.5 являются маскируемыми, их можно разрешать и запрещать программно. Для разрешения прерывания по какому-либо из этих входов необходимо выполнение двух условий:

1.  Прерывания должны быть разрешены с помощью команды EI – это общее разрешение.

2.  Прерывания по заданному входу должно быть размаскировано – разрешено индивидуально.