Da deine ports und outbits nicht in einer natürlichen Reihenfolge
verteilt sind, die man in einer for-schleife ausnutzen könnte, geht das
so einfach gar nicht. Man könnte die Port-und Pins jeweils in ein Array
packen, am besten gleich als {port,pin} struct, und die Schleife über
das Array laufen lassen. Aber kürzer als deine Version ohne Schleife
wird das auch nicht.
Lass es so, wie es ist. Da vermutlich nur immer genau einer der
Vergleiche
wahr werden kann, könnte man noch ab den zweiten if ein else if
verwenden. Das spart unnötige Vergleiche.
Wenn dir der Code zu unübersichtlich ist, oder mehrfach verwedet wird,
pack in in eine eigene Funktion.
Oliver