Hmmm, zum einen schaltest Du die internen Pull-Up-Widerstände für den
Eingabeport nicht ein (z.b. via "ldi tmp, 0xFF"/"out PORTD, tmp"
nachdem Du PortD als Ausgang definiert hast), ich weiss aber natürlich
nicht ob das bewusst getan wurde weil Du externe Pull-Ups hast.
Habe ich das denn richtig verstanden dass das Programm quasi abstürzt,
sobald Du Taster1 drückst? Eine LED zumindest müsste dem Programmcode
nach schon von Anfang an leuchten, zumindest wenn Du nicht schon vor
dem Einschalten eine Taste drückst.
Falls das Programm wirklich abstürzt, da könnte ich mir jetzt momentan
keinen richtigen Reim drauf machen. Höchstens dass Du nur SPL und nicht
SPH setzt, aber ich denke das ist vermutlich bewusst so (=Du benutzt
wahrscheinlich keinen ATmega).
Ein anderes "Problem" ist, dass der Shift in dieser Art
wahrscheinlich nicht exakt so funktioniert, wie Du Dir das evtl.
vorstellst: Bei ROL bzw. ROR wird wie bereits erwähnt immer das
Carry-Flag mitrotiert, wenn Du also 0b01111111 einmal ROLst, dann ist
das Ergebnis nicht zwingenderweise 0b11111110.