Wenn Du prüfen willst, wielange ein Bein low (oder high) ist, kannst Du natürlich die verstrichenen Timer-Takte zwischen den Flanken zählen. Entweder Du merkst Dir den Startwert des Timers, und bildest die Differenz, oder Du setzt den Timer beim Start zurück.
Wenn Du aber nur'ne Zeitschwelle willst (Taster länger als xyz gedrückt), kannst Du auch regelmäßig (sagen wir mal jede Zehntelsekunde) den Wert des Beins (1 oder 0) als Bit aufschreiben. Hast Du:
11111111 war der Taster nie betätigt.
11011111 hat er mal ganz kurz ausgelöst.
10100111 hat er geprellt/gezappelt
00000000 wurde er mindestens 0,8s betätigt, und bisher nicht (erkennbar) losgelassen.
00000001 wurde er nach mindestens 0,7s Betätigung losgelassen.
Der Trick ist der, nicht mit irgendwelchen Vergleichen (Compare bzw If-Konstrukten) abzufragen, ob das Bein Hi oder low ist, sondern einfach den Inhalt des Speicherregisters um eins zu verschieben und der Beinzustand quasi dazuaddiert wird. Ist das Speicherregister danach =0 (Zero Flag wird automatisch beim addieren/inkrementieren manipuliert), war der Taster die letzten 8 Überprüfungen gedrückt, sonst nicht.
Ursprünglich hat
Alabel den Weg zum ignorieren von Tasterprellen verwendet (ob er den selbst entwickelt hat, kann ich nicht sagen, aber daher kenne ich ihn).