Hm, wo ist der Fehler?

Code:
while(1)
	{
		PORTD = pgm_read_byte(&Tabelle[nKeyPress]);
		if (bit_is_clear (PINB, PINB0))
		{
			if (bPortB) // wenn Taster gedrückt
			{
				dauer++;
        	}
			else // wenn nicht gedrückt
			{
				if 	(dauer > 10)
				{
					if (nKeyPress < 8)
					{
						nKeyPress++;
						bPortB = 0;
					}
					else
					{
						nKeyPress = 0;
						bPortB = 0;
					}
				}
				if 	(dauer > 20) // wenn länger gedrückt
				{
					eeprom_write_byte(&eeFooByte, nKeyPress);
					dauer = 0;
					Warte (100);
				}
			}
    	}
    	else
		{
        	bPortB = 1;
    	}
	}
	return 0;