#include #include #include #include #include #include #include #include #include static volatile uint8_t led; static volatile uint8_t direction; SIGNAL(SIG_OVERFLOW0) //signal handler for tcnt0 overflow interrupt { PORTB = ~led; if(direction==0) { led<<=1; //move to next LED } else { led>>=1; } if(!led) //overflow: start with PORT B0 again { if(direction) { direction = 0; led = 1; } else { direction = 1; led = 128; } } TCNT0= 0; //reset counter to get this interrupt again } int main(void) { DDRB = 0xff; //use all pins on PORT B for output TIMSK = (1<