page41
6. Система прерываний
Прерывания
служат
для
приостановки
прямого
выполнения
программы,
с
тем,
чтобы
процессор
смог
отреагировать
на
определенный
запрос,
сформированный
периферийный
устройством в зависимости от какого-либо обстоятельства. Реакция ЦП на запрос выражается в
переходе
к
выполнению
некоторой
программы,
которая
называется
программой
обработки
прерывания (Interrupt- Service Routine - ISR). После её окончания продолжается выполнение
прерванной программы
2
. Путём присвоения приоритетов запросам можно добиться, чтобы ЦП
реагировал, прежде всего, на наиболее важное событие, игнорируя запросы либо прерывая ISR
менее важных.
В отличие от циклического опроса, при котором программно проверяется выполнение
определенного
условия,
и
для
которого
требуется
время
выполнения
и
место
в
памяти,
прерывание обеспечивает практически мгновенную реакцию, т.к. не зависит от периода опроса,
отсутствие программы опроса, как таковой, выражается в экономии памяти.
Различные
варианты
применения
прерываний
являются
эффективным
средством
повышения производительности микропроцессорной системы.
6.1.
Разрешение
и
запрещение
прерываний
Для приёма запросов на прерывания микропроцессор Z80 имеет два входа: INT и NMI.
Различие между ними - в приоритете и маскируемоести.
INT
(маскируемое
прерывание)
может
быть
программно
запрещено
или
разрешено.
Необходимость в запрещении (маскировании) прерываний возникает, например, когда условия
работы
в
реальном
масштабе
времени
делают
нежелательным
прерывание
данного
участка
программы.
Состояние
"запретить
прерывания"
либо
"разрешить
прерывания"
запоминается
программно-доступный триггером IFF1 (Interrupt Flip Flop) внутри ЦП. Посредством команды
разрешения прерываний EI (Enable Interrupt) либо запрещения прерываний DI (Disable Interrupt)
этот
триггер
соответственно
устанавливается
либо
сбрасывается.
В
некоторых
случаях
для
сохранения
его
текущего
состояния
требуется
промежуточная
память,
в
качестве
которой
предусмотрен триггер IFF2.
При сбросе ЦП сигналом /RESET оба триггера сбрасываются, блокируя требования на
маскируемые прерывания. Посредством команды EI их можно разблокировать. Когда прерывание
принимается, IFF1 и IFF2 также автоматически сбрасываются, чтобы предотвратить дальнейшие
прерывания до тех пор, пока они не будут разрешены новой командой EI.
Применение EI внутри IBR дает следующие две возможности:
2
Для корректного возврата в прерванную программу предусмотрено следующее:
-при входе в ISR адрес возврата автоматически сохраняет я в стеке;
-внутри ISR программно предпринимаются меры для сохранения содержимого регистров ЦП
двумя способами:
а) смена блока регистров командами EXX, EX AF,AF'.
б) пересылка в стек командой PUSH.