also gleichzeitig ist mal auf keinen Fall, der µC kann immer nur eine
Sache abarbeiten, dann kann er sich ner anderen widmen.
1 Sekunde Wartezeit ist für die Kiste ne Ewigkeit in der der Controller
nix aber auch garnix anderes macht als abwarten, esseidenn
er bekommt zwischendurch nen Interrupt z.B. vom Timer.
Dann springter aus der Warterei raus und amcht was anderes um dann
nach Erledigung wieder in die Warterei zurückzuspringen.

Wie von uwegw beschrieben wär ne Timeranwendung um die Ports
zu pollen und anschliessend ne Variable runter zählen lassen
eine Möglichkeit. Oder auch der PinChangeInterrupt könnt sowas
vollbringen. Dann wärste frei von Timingproblemen was das
Abfragen der Ports angeht.

Wenn ich dich recht verstanden hab gehts aber nur um einen
abzufragenden Pin, nämlich den von Eingang 1 und danach werden
die Ausgänge einfach durchrotiert. Eine Möglichkeit für das
Durchschalten wär anstelle von x If einfach rotate des Ports