Метки обслуживания прерываний

 

Для удобства программирования используется специальный вид меток–метки обслуживания прерываний. Для обслуживания прерывания обычным путем необходимо размещение по адресу вектора прерывания кода безусловного перехода на соответствующую подпрограмму. При использовании специального вида меток компилятор проделывает все это автоматически. Для этого вам необходимо дать метке (вершине) стандартное имя прерывания, и пометить ее как макрообразование, нажав клавишу «F2», при этом имя будет отображаться жирным шрифтом. Тот же результат можно проще получить, выбрав пункт меню «Elements\Interrupt vectors\…».

Встретив хотя бы одну такую метку в алгоритме, компилятор заполнит свободное пространство векторов прерывания кодом возврата из подпрограммы обслуживания прерывания («RETI»), а по соответствующему прерыванию адресу поместит код безусловного перехода на данную метку.

Таким образом, для того, чтобы создать прерывание, необходимо:

1. Создать вершину «Reset», с которой будет начинаться исполнение программы.

2. Определить указатель стека настройщиком «SP» (обычно это максимальный адрес SRAM).

3. Разрешить данное прерывание. ( Для таймеров – это соответствующие биты регистра TIMSK).

4. Разрешить глобальное прерывание оператором «1 -> I».

5. Ввести подпрограмму обработки прерывания, которая должна начинаться с вершины с именем прерывания, а заканчиваться обязательно оператором «RETI».