Код: Выделить всё
#include <mega16.h>
#include <delay.h>
void main(void)
{
PORTB=0x00;
DDRB=0xFF; // PD выход
PORTD=0x00;
DDRD=0x00; // PD вход
#asm("sei"); //разрешение глобальных прерываний
GICR |= (1<<INT0); //внешнее прерывание с PD2
MCUCR |= (1<<ISC01)|(1<<ISC00); // условие прерывания (по нарастающему фронту)
while (1)
{
PORTB.0=!PORTB.0; //моргание диодиком на PB0
delay_ms(50); // с задержкой в 50 мс
}
interrupt [INT0] void buton(void)
{
PORTB.1 = 1; //зажигаем диод
delay_ms(1000); //ждем секунду
}
}Я честно говоря уже себе мозг сломал как правильно обработку прерывания. Поэтому прошу помоши, не могли бы вы мне просто впревести премер кода который будет выполнять ту часть программы которая отвечает за зажигание лампочки на секунду. или привести поохожий пример.
очень желательно в синтаксе CVAVR, так как находил несколько похожие примеры для других компиляторов но так и не смог поянть как их адаптировать под тот в котором я пытаюсь это сделать.


