newbie led inter code tortueux

Salut,
Je suis nouveaux aussi.
Comme je suis sur d'avoir loupé quelque chose voici ma consigne, ne pas prendre mon code au pieds de la lettre.

void setup() {
DDRD = DDRD | B11111100;
// registre du port D 0 à 7 arduino uno broche 2 a 7 en sortie
DDRB = DDRB | B00000011;
// registre du port B 8 à 13 broche 8 et 9 en sortie
// total 8 en sortie
}

void loop(){
if (digitalRead(BP1) == HIGH && PORTD == B00000000 && PORTB == B00000000)
{PORTD = B00000100; PORTB = B00000000; }
else
{PORTD = B00000000; PORTB = B00000000; }

if (digitalRead(BP2) == HIGH && PORTD == B00000000 && PORTB == B00000000)
{PORTD = B00001000; PORTB = B00000000; }
else
{PORTD = B00000000; PORTB = B00000000; }

if (digitalRead(BP3) == HIGH && PORTD == B00000000 && PORTB == B00000000)
{PORTD = B00010000; PORTB = B00000000; }
else
{PORTD = B00000000; PORTB = B00000000; }
}

Le code n'a rien de complet tel quel mais j'ai tester l'écriture et en théorie il ni a pas de faute ...
En réalité je suis sur d'être passer a coté d'un trucs ! mais quoi.
De toute manière je serai repris sur mon erreur, donc.