Hallo zusammen. Folgender Code habe ich aus mikrocontroller.net und funktioniert auch für Tastenentprellung von 0->1. Nun habe ich die uC eingänge mit Pullup auf 1 gezogen und wenn ich die Taste drücke wird das Signal zu GND. Somit muss ich die Erkennung auf 1->0 umschreiben. Doch was muss ich genau ändern? void debounceKey(void) { static char ct0, ct1, rpt; char i; i = key_state ^ ~KEY_PORT; // key changed ? ct0 = ~(ct0 & i); // reset or count ct0 ct1 = ct0 ^ (ct1 & i); // reset or count ct1 i &= ct0 & ct1; // count until roll over ? key_state ^= i; // then toggle debounced state key_press |= key_state & i; // 0->1: key press detect if( (key_state & REPEAT_MASK) == 0 ) // check repeat function rpt = REPEAT_START; // start delay if( --rpt == 0 ){ rpt = REPEAT_NEXT; // repeat delay key_rpt |= key_state & REPEAT_MASK; } } char get_key_press( char key_mask ) { cli(); key_mask &= key_press; // read key(s) key_press ^= key_mask; // clear key(s) sei(); return key_mask; }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.