100x xxxx besagt starte das Programm 1 für Eingangskarte
010x xxxx besagt starte das Programm 2 für Ausgangskarte
110x xxxx besagt starte das Programm 3 für Analogausgangskarte
001x xxxx besagt starte das Programm 4 für Analogeingangskarte
Gewohnt euch lieber nicht an, das niederwertigste Bit links hinzumachen, sonst kommt ihr wahrscheinlich die ganze Zeit durcheinander, wenn ihr im Programm mal eine Zahl mit "0bxxxxxxxx" angebt.. ^^
Besser:
001
010
011
100

Allerdings verstehe ich das Problem nicht ganz...

Wenn euch 5 Bit als "Befehl" reichen, müsst ihr ja nur die jeweilige Adresse der Karte (0b00100000 bis 0b0b10000000) mit dem Befehl oder-Verknüpfen. Dann bekommt ihr einen 8 Bit wert, den ihr einfach über die Serielle jagen könnt... Auf der anderen Seite von µC halt wieder zerlegen lassen, sprich
Adresse = Empfangen &0b11100000
Befehl = Empfangen & 0b00011111

Gruß