Hi Daniel,
mal vorweg: Streiche "if-Schleife" aus deinem Wortschatz.
Zu deinem Problem: Wenn du die Belegung nicht ändern kannst, stellt sich nur die Frage, wie hässlich der Code wird. Eine schöne, schnelle und platzsparende Lösung gibt es dann nämlich nicht.
Zerlegen wir das ganze Mal systematisch: Die Bits 1-8 (eigentlich zählt man in der Informatik ab 0 ...) müssen umgedreht werden. Das kann eine kleine Schleife erledigen und ist noch nicht so dramatisch. Das Ergebnis kann dann direkt zugewiesen werden.
Die Bits 9 und 10 bilden zusammen mit den Bits 16-20 eine Sequenz von PC6-PC0, das kann man mit etwas Bitgeschubse auch wieder in ein Byte extrahieren, dann wieder Reihenfolge umdrehen und dem Port C zuweisen.
Bleiben noch die Bits 11 bis 15, die müssen "nur" umgedreht und an die richtige Stelle im Byte geschoben werden.
Bei Port C und Port D sind Bits unbelegt, die wirst du beim Zuweisen an den Port dann ausmaskieren wollen.
mfG
Markus
Lesezeichen