@Grandalf

Ich hab deinen Code nach Codevision umgestrickt und durch den Simulator von AVR Studio gejagt.

Erstmal wurden da eine ganze Menge Compilerfehler gemeldet.

Zum Beispiel der Ausdruck
pruefung=pruefung - pow(2,i);

Kann der stimmen oder gehören da nicht eckige Klammern hin ?
also
pruefung=pruefung - pow[2,i];

Zum zweiten wurde nach dem rausmachen dieser Fehler nur der Port B.0 aktiv. Alle Aktionen gingen nur auf diesen Port.

Über diesen Ausdruck:

Code:
while(!(PIND & (1<<nIRQ)))
   {

   }
lief der Simulator auch nach änderung des DDR und des Pind nicht drüber.

Teste doch mal dein Programm mit AVR - Studio 4 aus, dann wird es auch in der realen Welt wahrscheinlicher das es funktionieren wird.