#include <avr/io.h>     // Definitionen laden 
#include <util/delay.h> // CPU Frequenz einstellen! 

#define KEYREADER ~PIND & 0b11 // Einlesen, invertieren, maskieren zurecht schieben 
#include "keycheck.inc"        // http://mezdata.de/avr/083_c-entprellen/keycheck.inc

unsigned char muster[2][6]={{4,0b1000,0b0100,0b0010,0b0001},{5,0b0001,0b0011,0b0111,0b1111,0b0000}};
unsigned char musterzaehler=1,musternummer=0;

void wechsleMuster(){
  PORTB=(PORTB|0b1111) & ~muster[musternummer][musterzaehler]; // Muster aus Array
  musterzaehler++;
  if(musterzaehler>muster[musternummer][0]){ // 
    musterzaehler=1;
  }
}

int main(){         // Hauptprogramm 
  PORTB=0xff;       // alle LED aus 
  DDRB=0xff;        // PB als Ausgang
  PORTD=0xff;       // PullUps an
  while(1){         // Endlosschleife 
    keyCheck();
    if(keyEnter&1){ // Taste gedrueckt?
      musterzaehler=1;
      musternummer++;
      if(musternummer>=sizeof(muster)/sizeof(muster[0])) musternummer=0;
    }
    wechsleMuster();
    _delay_ms(400);
  } 
  return 0; 
}
