Hallo,
ich würde in der Hauptschleife nur feststellen (mit DEBOUNCE) ob der Taster gedrückt wurde.
In der Subroutine dann feststellen wie lange er gedrückt wird und in der gleichen Routine danach die LEDs
entsprechend schalten. Etwa so:
Code:
Hauptschleife
Taste gedrückt, dann Subroutine aufrufen
Ende Haupschleife
Subroutine:
Solange die Taste gedrückt ist, wird eine WORD-Variablen in 10ms Schritten hochgezählt.
Taste nicht mehr gedrückt, dann "WORD-Variable = WORD-Variable / 100" - ergibt ganzahlige Sekunden
Mit SELECT CASE je nach Drückdauer die LEDs schalten und in einem Flag die eingeschaltete LED Nummer speichern
In dem CASE für kurze Drückdauer eine weitere SELECT CASE Anweisung in der das Flag abgefragt wird und die entsprechende LED getoggelt wird.
RETURN (Subroutine Ende, Rücksprung in Hauptschleife)
Schönheitsfehler: Solange die Taste gedrückt ist, wird übriges Programm aufgehalten. Sollte hier aber keine Rolle spielen.
Gruß
Searcher
Lesezeichen