Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[7]

отдельности, так и все сразу с использованием общего бита разрешения всех прерываний (GIE) в регистре статуса (SR).

Reset 0FIFG

Reset ACCVIFG

Reset NMIIFG

1Г ЛГ чг

Пользовательская программа

Пользовательская программа

Пользовательская программа

обработки неисправности

обработки нарушения

обработки внешнего

осциллятора

доступа к Flash

запроса NMI-прерывания

Конец программы обработки NMI-прерывания

Пример 1:

BIS #(NMIIE+OFIE+ACCVIE), &IE1

Пример 2:

BIS MASK, &IE1

; Маскировка допускается

;только для источников

; прерывания

Рис. 2-6. Алгоритм процедуры обработки NMI-прерывания

Каждое конкретное периферийное прерывание будет рассмотрено в этом руководстве в разделе описания соответствующего периферийного устройства.

223. Обработка прерывания

Если периферийное устройство запросило прерывание и включены биты общего разрешения прерываний GIE и индивидуальный бит разрешения прерывания от этого устройства, будет вызвана процедура обработки прерывания. Для вызова немаскируемого (NMI) прерывания достаточно установки только индивидуального бита разрешения прерывания.


Получение прерывания

Время задержки вызова прерывания составляет 6 машинных циклов, с момента приема запроса на прерывание и до начала выполнения первой команды процедуры обработки прерывания, как показано на рис. 2.7. Логика обработки запроса прерывания имеет следующую последовательность:

1)Любая текущая команда выполняется до конца;

2)Содержимое программного счетчика PC, указывающего на следующую команду, помещается в стек;

прерывания

Элемент 1

Элемент 2

Вершина стека

После прерывания

Элемент 1

Элемент 2

Вершина стека

Рис. 2-7. Процесс прерывания

3)Содержимое регистра статуса SR помещается в стек;

4)Если поступило несколько прерываний во время выполнения последней команды, обрабатывается прерывание с наивысшим приоритетом, остальные ожидают обслуживания;

5)Автоматически сбрасывается флаг одного источника прерывания. Флаги запроса остальных прерываний остаются установленными в ожидании обслуживания программным обеспечением.

6)Регистр SR очищается, за исключением бита SCG0, остающегося неизменным. В результате прекращается работа в любом режиме пониженного энергопотребления;

7)Содержимое вектора прерывания загружается в РС и начинается выполнение процедуры обработки прерывания с загруженного адреса.

Возврат из прерывания

Подпрограмма обработки прерывания заканчивается такой командой: RETI (возврат из подпрограммы обработки прерывания) Для возврата из прерывания необходимо 5 машинных циклов, чтобы выполнить действия, показанные на рис. 2.8.


1)Восстанавливается из стека содержимое регистра SR. Становятся актуальными все предыдущие установки GIE, CPUOFF и пр., в не зависимости от установок, использовавшихся в процедуре обработке прерывания.

2)Восстанавливается из стека содержимое программного счетчика PC и начинается выполнение программы с того места, где она была прервана.

Возврат из прерывания

Элемент 1

Элемент 2

Вершина стека

Элемент 1

Элемент 2

Вершина стека

Рис. 2-8. Возврат из прерывания

Вложенные прерывания

Разрешаются вложенные прерывания, если бит GIE установлен во время выполнения процедуры обработки прерывания. Когда вложенные прерывания разрешены, любое прерывание, возникающее во время выполнения одной подпрограммы обработки прерывания, вызовет выполнение своей подпрограммы, несмотря на приоритеты прерываний.

22.4. Векторы прерываний

Векторы прерываний и стартовые адреса расположены в адресном диапазоне с 0FFFFh по 0FFE0h, как показано в таблице 2.1. Вектор программируется пользователем с помощью указания 16-разрядного стартового адреса соответствующей процедуры обработки прерывания. Полный перечень векторов прерываний приводится в справочном руководстве каждого конкретного устройства.

Таблица 2.1. Источники прерываний, флаги и векторы

Источник прерывания

Флаг прерывания

Характер прерывания

Адрес слова

Приоритет

Включение питания, внешний сброс, сигнал сторожевого таймера, проверка пароля Flash-памяти

WDTIFG KEYV

наивысший

NMI-прерывание, неисправность осциллятора, нарушение доступа к Flash-памяти

NMIIFG OFIFG ACCVIFG

Немаскируемое Немаскируемое Немаскируемое



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120]