Für die komplette Auswertung habe ich keine Zeit, aber gerne ein paar Tipps:
- Die Balken der 7-Segment-Anzeigen sind wie folgt durch"nummeriert":

-
Die Inhalte der vier 7Segment-Anzeigen selbst sind mit i = 0 ... 3 in dem Array Anzeigen[i] gespeichert und werden von dort in der Routine "Multiplexen()" und im einzelnen dann in "SetzeSegmente()" regelmäßig gesetzt.
-
Die über die Jumper vorwählbaren Modi sind dann wie folgt zu lesen (hier nur an einem Beispiel):
void Modus03() {
Anzeigen[0] = 0; // Setzt den Wert der ersten 7Segment-Anzeige auf Null
Anzeigen[1] = Akt_LS1 ? a_Balken : d_Balken; // Schaltet Balken a ein, wenn LS1 aktuell true liefert, sonst Balken d
Anzeigen[2] = Akt_LS2 ? a_Balken : d_Balken; // wie oben, jedoch für LS2
Anzeigen[3] = Akt_LS3 ? a_Balken : d_Balken; // wie oben, jedoch für LS3
if (!Akt_LS1 && !Akt_LS2 && !Akt_LS3 && StartTaste) {
Modus = 1; // Wenn die LS1 bis LS3 alle im Zustand "false" sind und zugleich die StartTaste im Zustand "true" dann wechsele in den Modus 1
}
}