Ohne zyklisches Abfragen des Tastenports (durch Timer getaktet) wüsste
ich auch keine "schnelle Lösung".
Ansonsten:
In Timer-ISR:
- Tastenport einlesen und unbenutzte Bits ausblenden
- mit gemerktem alten Wert vergleichen
- bei Gleichheit Prellzähler runterzählen
- Bei Ablauf des Prellzählers Merker für neuen, gültigen Tastendruck
setzen
- bei Unterschied Prellzähler auf Startwert setzen
- neuen Wert als alten Wert für nächsten Vergleich sichern
In Mainloop:
- Wenn Merker gesetzt, dann alten Tastenwert auswerten und Merker
löschen
- wenn $bf, dann Decrement
- wenn $df, dann Increment
- wenn $9f, dann übernehmen
- wenn $ff, dann nix tun
- andere Werte dürfte es aufgrund der Ausblendung der unbenutzten Bits
nicht geben
Noch besser ist der 8-Tasten-Algorithmus von Peter Dannegger
(Codesammlung, Stichwort "Bulletproof"), doch er ist schwerer zu
verstehen und bringt in Deinem Fall keine echten Vorteile, ich werde es
mir also nicht antun, Dir den verständlich zu machen. ;-)
...