03.11.2017 admin

РАБОТА 5. ВНЕШНИЕ ПРЕРЫВАНИЯ


Периодическое нажатие кнопки PD2 в эмуляторе имитируется системой. Программа обработки прерывания ISR в качестве аргумента используется вектор-прерывания (адрес). Эта константа берется из справочника. Макросы sei() и cli() разрешают и запрещают прерывания глобально, помимо нужно разрешить частное прерывание с помощью GIMSK, поскольку по умолчанию они все запрещены.

У микропроцессора ATmega16 устаревшее обозначение GIMSK заменено на GICR, в остальном все то же самое. В системе прерываний с кнопкой PD2 связан сигнал INT0, что видно из рисунка микропроцессора. Биты ISCx0 и OSCx1 регистра MCUCR устанавливаются в соответствии с нужным режимом прерывания (по низкому уровню, по изменению уровня, по перепаду с 1 в 0 или по перепаду с 0 в 1). Директива «volatile» указывает глобальные переменные, изменяемые при прерываниях (см. замечание выше). Пишется тело подпрограммы обработки прерывания ISR, переключающей светодиод, подсоединенный к ножке PD0, и изменающей глобальную переменную T. Основная программа управляет светодиодом PC5 в зависимости от T, значение которой сбрасывается в 0.

Hide

Rambler's Top100