Пример кода для работы с внешними прерываниями int0 int1

Для программ основа которы является обработка сигналов подаваемых на выводы внешнего прерывания необходимо код, вот хороший пример структуры кода для обработки внешних прерываний int0 и int1 для микроконтроллера ATmega8

  1. #include <avr/io.h>
  2. #include <avr/interrupt.h>
  3.  
  4. SIGNAL(SIG_INTERRUPT0)//обработка прерываний
  5. {
  6. //программа, которая должна выполнятся при срабатывании прерывания 1
  7. }
  8.  
  9. SIGNAL(SIG_INTERRUPT1)//обработка прерываний
  10. {
  11. //программа, которая должна выполнятся при срабатывании прерывания 2
  12. }
  13.  
  14. int main(void)
  15. {
  16. GIMSK=0b11000000; //разрешаем прерывание int0 и int1
  17. MCUCR=0b00001111;// int by rising front - для кнопки 1 и 2
  18.  
  19. sei(); //Разрешение прерываний глобально по всей программе
  20.  
  21. while(1) //Вечный цикл, все что в нем будет выполнятся постоянно
  22. {
  23. //Тут располагается код программы, которая будет выполнятся в основном цикле
  24. }
  25.  
  26. }

В принципе все просто, единственное что хочется сказать, это то что при подключении кнопок или переключателей на входы INT0 и INT1 при переключении будет появляться так называемый дребезг контактов. Для его подавления необходимо поставить параллельно кнопке конденсатор на 0,1 мкФ, после этого эффект должен уменьшиться.
Все вопросы просьба оставлять в комментариях.