Zitat Zitat von for_ro
Zitat Zitat von Snaper
Einziges Problem wird sein, dass ich während des kompilierens die Anzahl und Namen der Tabellen bekannt sein müssen und von Hand includiert werden müssen, oder sehe ich das falsch?
Klar, aber ist das ein Problem? Was meinst du mit "... von Hand includiert werden ..."?

Zitat Zitat von Snaper
Habe ich dann nicht das Problem, dass sofern ich eine Variable erhöhe eine 2-x malige erhöhung durch längeren drückens des Schalters möglich ist?
Das kannst du verhindern, indem du feststellst, ob der Taster nach Erkennung des einen Zustands auch einmal den anderen für einen längeren Zeitraum angenommen hat.
Z.B. so:
  • Du setzt den aktuellen Wert z.B. eine 1 in eine Variable in Bit 0 rein. (Variable.0 = Pinx.y)
    Dann überprüfst du, ob du 8 mal den gleichen Wert bekommen hast, also alle Bits 1 sind (Variable = 255, oder 0, falls gerade dauernd 0 kommen). [list:8a53126868]Wenn der Taster prellt, wirst du evtl. auch mal eine 0 mit drin haben.
Dann schiebst du den Wert der Variable um eine Stelle nach links. (Shift Variable, Left)[/list:u:8a53126868]
Wenn dein Taster z.B. 20ms prellt und du jede ms den Timer aufrufst, hast du spätestens nach 28ms einen konstanten Wert. Hast du mehrere Taster, dauert es aber nicht länger, wie dies bei Debounce der Fall wäre.
Für diese Überprüfung benötigst du eine Variable zum Speichern der 8 Werte des Tasters und eine weitere, um den letzten erkannten Zustand zu speichern. Dadurch kannst du erkennen, ob sich der Taster geändert hat und vermeidest mehrfach Auslösen der Aktion.
Wäre es möglich da einen kleinen Pseudocode zu bekommen? Denn so 100% habe ich es noch nicht verstanden... Frage mich auch wofür der Links Shift am ende dienen soll