Gibts noch eine Erklärung dazu wie nun der Port durchgeshiftet wird um zu Prüfen ob ein Pin1 ist oder die Register zu setzen?
"PORTB <<= 1;" ist das gleiche wie "PORTB = PORTB << 1;".
Dabei wird erstmal der aktuelle Wert aus dem Register PORTB gelesen, dann dieser Wert um eine Stelle nach links geschoben (links fällt dabei ein Bit raus, rechts wird eine 0 nachgeschoben) und der geänderte Wert wird zurück in das Register geschrieben. Nach 8 Schleifendurchläufen ist die 1 links rausgefallen (PORTB ist dann also 0) und das if sorgt dann dafür, dass ganz rechts wieder eine 1 reingeschrieben wird.