Пример кода для работы с внешними прерываниями int0 int1
Для программ основа которы является обработка сигналов подаваемых на выводы внешнего прерывания необходимо код, вот хороший пример структуры кода для обработки внешних прерываний int0 и int1 для микроконтроллера ATmega8
#include <avr/io.h> #include <avr/interrupt.h> SIGNAL(SIG_INTERRUPT0)//обработка прерываний { //программа, которая должна выполнятся при срабатывании прерывания 1 } SIGNAL(SIG_INTERRUPT1)//обработка прерываний { //программа, которая должна выполнятся при срабатывании прерывания 2 } int main(void) { GIMSK=0b11000000; //разрешаем прерывание int0 и int1 MCUCR=0b00001111;// int by rising front - для кнопки 1 и 2 sei(); //Разрешение прерываний глобально по всей программе while(1) //Вечный цикл, все что в нем будет выполнятся постоянно { //Тут располагается код программы, которая будет выполнятся в основном цикле } }
В принципе все просто, единственное что хочется сказать, это то что при подключении кнопок или переключателей на входы INT0 и INT1 при переключении будет появляться так называемый дребезг контактов. Для его подавления необходимо поставить параллельно кнопке конденсатор на 0,1 мкФ, после этого эффект должен уменьшиться.
Все вопросы просьба оставлять в комментариях.
»