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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.