Внешние прерываниÑ
Материал из Automata.
(Различия между версиями)
м (Новая: #include <stdint.h> #include <avr/io.h> #include <avr/interrupt.h> //обработчик внешнего прерыания на выводе контроллера PD2_INT0; IS...) |
м (Полностью удалено содержимое страницы) |
||
Строка 1: | Строка 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; | ||
- | } |