Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_MK_1_3.doc
Скачиваний:
1
Добавлен:
23.09.2019
Размер:
326.66 Кб
Скачать

2.5 Реализация прерываний

Микроконтроллер выполняет пять видов прерываний: одно программное и четыре аппаратных. При реализации прерывания в стек загружается содержимое основных регистров процессора в, следующей последовательности; CCR – A –X – PCh – PCl, где РСh, РСl – старший и младший байты содержимого PC. После этого в PC загружается адрес первой команды подпрограммы обслуживания из таблицы, которая размещается в ячейках ППЗУ с адресами, задаваемыми соответствующим вектором прерывания Ve (табл. 2.4). Выполнение подпрограммы обслуживания должно заканчиваться командой возврата из прерывания RTI, которая выбирает из стека и восстанавливает содержимое регистров PC, X, A, CCR, обеспечивая продолжение прерванной программы.

П

Таблица 2.4 – Векторы прерывания и сброса

Вектор Ve

Вид прерывания

$1FF4

Запрос СПП

$1FF6

Запрос АПП

$1FF8

Запрос таймера

$1FFA

Внешний сигнал IRQ#

$1FFC

Команда SWI

$S1FFE

Установка начального состояния (RESET)

рограммное прерывание реализуется при поступлении команды SWI, выполнение которой описано в [1].

Аппаратные прерывания вызываются запросами последовательных портов АПП, СПП, таймера и поступлением уровня 0 на вход внешнего прерывания IRQ#.

Аппаратные прерывания являются маскируемыми: их обслуживание не выполняется при установке признака I=1 в регистре CCR. Команда SWI выполняется при любом значении признака I.

Формирование внутренних запросов прерывания от АПП, СПП таймера рассмотрено в [1]. Внешним запросом прерывания может быть либо поступление отрицательного перепада потенциала на вход IRQ#, либо установка на этом входе уровня 0.Это зависит от значения бита IRQ в регистре конфигурации OR микроконтроллера: при IRQ=0 прерывание вызывается отрицательным перепадом, при IRQ=1 – уровнем 0. Если прерывание вызывается перепадом потенциала, то после его обслуживания следующее прерывание происходит только при поступлении нового перепада. Если прерывание вызывается уровнем, то при сохранении уровня сигнала IRQ#=0 микроконтроллер повторяет выполнение подпрограммы обслуживания, пока не установится значение сигнала IRQ#=1.

Поступление внешнего или внутренних запросов проверяется микроконтроллером после выполнения каждой команды программы. Если поступило несколько запросов, то в первую очередь обслуживается запрос с более высоким приоритетом. Запросы имеют фиксированные приоритеты: внешний запрос IRQ# (высший приоритет), затем запрос таймера, запрос АПП, запрос СПП (низший приоритет).

Обслуживание запросов выполняется в соответствии с их векторами Ve – адресами ячеек ППЗУ, из которых загружается новое содержимое PC (см. табл. 2.4). Это содержимое является адресом первой команды соответствующей подпрограммы обслуживания (входом в подпрограмму). При обслуживании внутренних запросов эта подпрограмма должна проанализировать содержимое регистров состояния запросившего устройства (таймера, АПП или СПП), чтобы выяснить причину запроса и обеспечить выполнение необходимой процедуры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]