Код: Выделить всё
#include "avr/io.h" //
#include<avr/interrupt.h>
#include<avr/boot.h>
#define F_CPU 1000000UL // 1MHz
#include <util/delay.h>
char trig = 1;
char a = 1;
ISR(INT0_vect) // прерывание по вектору INT0
{
trig = (~trig) & 1; // если кнопка нажата меняем направление движения огонька
}
int main(void)
{
SREG = 128;
GICR |= _BV(INT0);
DDRA = 0; // порт A на ввод
PORTA = 0xFF; // подтянуть внутренние резисторы
DDRB = 0; // порт B на ввод
PORTB = 0xFF; // подтянуть внутренние резисторы
DDRD = 0; // порт D на ввод
PORTD = 0xFF; // подтянуть внутренние резисторы
DDRC = 0xFF; // порт C на вывод
PORTC = 0xFF; // потушить светодиоды
while(1)
{
//_delay_ms(100);
if (trig) // усли кнопка не надата работаем
{
if (a)
{
a = a << 1;
}
else
{
a = 1;
}
}
else // если нажата кнопка то trig изменит своё значение и движение огонька изменится
{
if(a)
{
a = a >> 1;
}
else
{
a = 128;
}
}
}
}


