Микроконтроллеры семейства AVR. Воробьева Г.С. - 11 стр.

UptoLike

Составители: 

.org $001A rjmp USART, ТХС ;USART, передача завершена
.org $001C rjmp ADC ;Преобразование АЦП завершено
.org $001E rjmp EE_RDY ;EEPROM готово
.org $0020 rjmp ANACOMP ;Аналоговый компаратор
.org $0022 rjmp TW1 ;Прерывание от модуля TW1
.org $0024 rjmp INT2 ;Внешнее прерывание 2
.org $0026 rjmp TIMER0COMP ;Совпадение таймера/счетчика ТО
.org $0028 rjmp SPM_RDY ; Готовность SPM
!!! примечание: приоритет прерывания убывает с ростом адреса вектора прерывания
Обработка прерываний
Для глобального разрешения/запрещения прерываний предназначен
флаг I регистра SREG. Для разрешения прерываний он должен быть уста-
новлен в I, а для запрещениясброшен в 0. Индивидуальное разрешение или
запрещение (маскирование) прерываний производится установкой/сбросом
соответствующих битов регистров масок прерываний, рассматриваемых
ниже.
При возникновении прерывания флаг I регистра SREG аппаратно
сбрасывается, запрещая тем самым обработку следующих прерывании.
Однако в подпрограмме обработки прерывания этот флаг можно снова ус-
тановить в 1 для разрешения вложенных прерываний. При возврате из
подпрограммы обработки прерывания (при выполнении команды RETI)
флаг I устанавливается аппаратно.
Все имеющиеся прерывания можно разделить на два типа.
Прерывания первого типа генерируются при наступлении некоторого
события, в результате которого устанавливается флаг прерывания. Затем,
если прерывание разрешено, в счетчик команд загружается адрес
вектора соответствующего прерывания. При этом флаг прерывания
аппаратно сбрасывается. Он также может быть сброшен программно,
записью лог. 1 в бит регистра, соответствующий флагу.
Прерывания второго типа не имеют флагов прерываний и
генерируются в течение всего времени, пока присутствуют условия,
необходимые для генерации прерывания. Соответственно, если условия,
вызывающие прерывание, исчезнут до разрешения прерывания,
генерации прерывания не произойдет.
Следует помнить, что при вызове подпрограмм обработки
прерываний регистр состояния SREG не сохраняется. Поэтому
пользователь должен самостоятельно запоминать содержимое этого
регистра при входе в подпрограмму обработки прерывания (если это
необходимо) и восстанавливать его значение перед вызовом команды
RETI.
Микроконтроллеры семейства Mega поддерживают очередь
прерываний, которая работает следующим образом: если условия
11