Программирование МК на ассемблере ASM-51 и AVR Pascal. Китаев Ю.В. - 19 стр.

UptoLike

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

19
loop
endloop;
end atMega8888KLM.
Некоторые пояснения к механизму прерываний. Ниже приведена
таблица некоторых векторов прерываний МК ATMega128 и пример
расположения вектора прерывания при совпадении кодов таймера0 по
адресу 1E и процедуры обработчика с символическим адресом
TIMER0COMP.
В момент совпадения кодов счетчика TCNT0 и регистра OCR0 схема
управления компаратора сформирует признак переполнения OCF0 и
запрос на прерывание. МК по запросу автоматически обратится к ячейке с
адресом 1E, куда программист (или транслятор) заносит команду перехода
JMP TIMER0COMP к процедуре обработки прерывания с символическим
адресом TIMER0COMP. Осуществив этот переход МК начнет выполнять
подпрограмму interrupt TIMER0COMP.... (см
. выше), в которой в нашем
примере переключается светодиод. Для чего это нужно? В процессе
разработки программы ее размер и относительное положение отдельных
ее фрагментов постоянно меняется, поэтому указать сразу окончательное
значение физического адреса, соответствующего символическому имени
(TIMER0COMP) невозможно. Адрес же ячейки памяти, где будет
храниться адрес перехода (или сама команда перехода
) определяется
структурой МК и известен из справочника. Содержимое такой ячейки(еек)
памяти называют вектором прерывания.
На этом рисунке показан
фрагмент кода после очередной
трансляции, из которого видно,
что в ячейку памяти с адресом
1E транслятор поместил
команду перехода JMP 03A9h к
подпрограмме TIMER0COMP,