#include <avr/io.h>
#include <avr/interrupt.h>

int main(){
  DDRB=0x1F; // PORTB als Ausgang
  PORTD = 0b01110000; // PullUps an
  TCCR0A |= 1<<WGM01; // CTC-Mode
  OCR0A = 145;        // 150 ms
  TIMSK |= 1<<OCIE0A; // Interrupt einstellen
  sei();              // Globale ISR-Freigabe
  while (1){
    if(~PIND&(1<<PD4)){ // T0 gedrueckt?
      TCCR0B |= 5;   // Timer starten
    }
  }
}

ISR(TIMER0_COMPA_vect){ 
  if(PORTB!=15){
    PORTB = (PORTB<<1) +1;  
  }
  else{
    PORTB = 0; // LEDs aus
    TCCR0B = 0; // Timer stopp
  }
}