Внешние прерываниÑ
Материал из Automata.
(Различия между версиями)
м (Новая: #include <stdint.h> #include <avr/io.h> #include <avr/interrupt.h> //обработчик внешнего прерыания на выводе контроллера PD2_INT0; IS...) |
м (Правки Kern (обсуждение) откачены к версии Mrsnaut) |
||
(1 промежуточная версия не показана) |
Текущая версия
#include <stdint.h> #include <avr/io.h> #include <avr/interrupt.h>
//обработчик внешнего прерыания на выводе контроллера PD2_INT0; ISR(SIG_INTERRUPT0) { PORTB &= 0xfe;//включаем светодиод на плате контроллера; }
//обработчик внешнего прерыания на выводе контроллера PD3_INT1; ISR(SIG_INTERRUPT1) { PORTB |= 0x01;//выключаем светодиод на плате контроллера; }
//главная функция; int main (void) { DDRB = 0xff;//порт В настраиваем на выход; PORTB = 0x00;//отправляем на выводы логический "0"; DDRD = 0xff;//порт D настраиваем на выход; PORTD = 0x00;//отправляем на выводы логический "0"; SREG = 0x80;//глобальное разрешение прерываний; MCUCR = _BV(ISC11) | _BV(ISC10) | _BV(ISC01) | _BV(ISC00);//обработчики INT0 и INT1 будут запускаться при изменении //состояния соответствующих выводов с логических "0" на "1"; GICR = _BV(INT1) | _BV(INT0);//разрешаем внешние прерывания INT0 и INT1; }