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

4.  Перейдите в дисплейную область отладчика AVSIM85, и с помощью клавиши F1 запустите программу в автоматическом режиме. Курсор в левой части экрана остановится на строке

0053  JMP $, и дальнейшее продвижение по программе прекратится – программа “зацикливается” на адресе 0053Н. Мнемоника JMP $ означает переход на адрес, равный текущему содержимому программного счетчика, т.е. 0053Н. Так отладчик AVSIM85 отображает строку

WAIT:         JMP   WAIT

программы MAIN_TRA.

5.  С помощью комбинации клавиш Ctrl-T перейдите в правую часть дисплея в область PINS (выводы). Мигающий 0 будет соответствовать сигналу лог.0 на входе запроса прерывания TRAP. Затем нажмите цифровую клавишу 1, при этом на входе TRAP появится мигающая 1. В результате этих действий продолжится выполнение программы. Спустя некоторое время вновь произойдет зацикливание на адресе 0053Н.

Действия, выполненные отладчиком, можно объяснить так. При изменении сигналов на выводе TRAP с лог.0 на лог.1 поступил запрос прерывания (см. табл.2) и микропроцессор приступил к выполнению подпрограммы обработки прерывания, начальный адрес которой находится в ячейке 0024Н. Подпрограмма произвела ввод из порта с адресом 00Н, обработку данных и вывод семисегментного кода в порты с адресами 01Н, 02Н, 03Н. Затем по команде RET произошел возврат в основную программу на адрес 0053Н.

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

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

Измените сигнал на выводе TRAP с лог.0 на лог.1 (перепад 0®1), что приведет к выполнению подпрограммы обработки прерывания. По содержимому портов 00Н-03Н и ячеек памяти 800Н, 810Н-812Н убедитесь в правильности работы программы.

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

3.3.2  Исследование запроса прерывания по входу INTR

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

Во-первых, они являются маскируемыми, т.е. их можно разрешить или запретить. Программно прерывания разрешаются командой EI, а запрещаются – командой DI. Аппаратно прерывания запрещаются после начальной установки микропроцессора, а также при переходе к подпрограмме обслуживания прерывания.

Во-вторых, внешнее устройство, запрашивающее прерывание, должно сообщить микропроцессору начальный адрес подпрограммы обслуживания прерывания, называемый часто вектором прерывания. Обычно это делается с помощью кода команды RST N (N=0,1,…7), который схема прерывания выставляет на шину данных микропроцессорной системы в машинном цикле обслуживания прерывания. В табл.3 приведены коды RST N и соответствующие им адреса переходов при прерывании ( вектора прерывания).

Таблица 3

Векторы прерываний по входу INTR

RST N

Адрес перехода при прерывании , HEX

Мнемоника

HEX-код

RST 0

C7

0000

RST 1

CF

0008

RST 2

D7

0010

RST 3

DF

0018

RST 4

E7

0020

RST 5

EF

0028

RST 6

F7

0030

RST 7

FF

0038

В качестве примера предположим, что схема прерывания выдает код FFH

( RST 7 ), а начальный адрес подпрограммы обработки прерывания будет 0038Н.

Программу работы МК в этом режиме сформируем в файле main_int.asm, который удобно получить из файла main.asm. Сделайте его копию с именем main_int.asm по методике, изложенной в п.3.3.1. Отредактируйте этот файл в соответствии со следующим текстом.

PUBLIC      MAIN_INT

EXTRN       PR810, CROSSCOD

STACKTOP          EQU  900H

.                             .         .

.                             .         .

.                             .         .

BASE                    EQU  810H

MAIN_INT:          JMP   MAIN                    ;переход на метку MAIN

ORG  0038H                   ;вектор прерывания по входу INTR

JMP   IZMER                  ;переход на метку IZMER