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.