@bloodyDragon
Dein Programm wartet nicht auf das loslassen des Tasters um dann wieder auf das Drücken zu warten.
Eventuell hilft folgendes:
Code:
StartSwitch();
while(1) {
      PrintInt(switched);
      if(switched == TRUE) { // Tastendruck

         t1 = PollSwitch();
         t2 = PollSwitch();

         PrintInt(t1);
         PrintInt(switched);
         SerPrint ("\n\r");
         
         while (switched == TRUE) {
            switched = FALSE;
            StartSwitch();
            Sleep (10);      // muesste ueberfluessig sein
         }
      }
}
oder 'logisch' lesbarer:
Code:
switched = FALSE;
StartSwitch();
while(1) {

      while (switched == FALSE)
          ;                // warte auf druecken

      t1 = PollSwitch();
      t2 = PollSwitch();

      PrintInt(t1);
      SerPrint ("\n\r");
         
      while (switched == TRUE) {  // warte auf loslassen
            switched = FALSE;
            StartSwitch();
            Sleep (10);      // muesste ueberfluessig sein
      }
}
Der sleep in der inneren while-Schleife hat nichts mit dem oben angesprochenen warten zu tun. Hab ich nur mal vorsichtshalber da hingeschrieben, da ja auch der Interrupt Zeit braucht bis er die switched-Variable gesetzt hat.
Das 'PrintInt(switched);' habe ich mal entfernt, da ich glaube, dass du das nur zum testen eingebaut hast.