#include #include #define UP 0 #define DOWN 1 int main(void) { /* Init LEDs */ DDRD |= (1 << PIND6); DDRD |= (1 << PIND7); DDRB |= (1 << PINB0); /* Init push button */ DDRC &= ~(1 << PINC5); PORTC |= (1 << PINC5); uint8_t active=0; uint8_t direction=DOWN; uint8_t btn_last=1; uint8_t counter=0; while(1) { if ((btn_last)&&(!(PINC & (1< 10) { counter=0; if (direction==UP) ++active; else --active; switch(active) { case 2: PORTD &= ~(1 << PIND6); PORTD |= (1 << PIND7); PORTB &= ~(1 << PINB0); break; case 3: PORTD |= (1 << PIND6); PORTD &= ~(1 << PIND7); PORTB &= ~(1 << PINB0); break; default: PORTD &= ~(1 << PIND6); PORTD &= ~(1 << PIND7); PORTB |= (1 << PINB0); active=(direction==UP)?1:4; } } _delay_ms(50); } }