Hi, Ich benötige eine Tastenabfrage für meinen mp3 player. Habe nun angefangen rumzuproggen und es funzt auch wunderbar: Bei kurzem Tastendruck wird der zahlenwert der taste in die variable tasten_status_kurz gespeichert. Bei einem langen Tastendruck soll die Variable Taste_status_lang solange den wert der taste haben wie sie gedrückt ist. Eine Variable keytime wird per timerinterrupt hochgezählt und die tastenabfrage funktion wird im timerintterupt aufgerufen. allerdings funzt das ganze bis jet nur mit einer taste. beim erweitern auf mehrere tasten komm ich irgendwie nicht weiter... brett vorm kopf ;-) könnt ihr mir mal nen tipp geben wie ich das einfach erweitern kann... oder würdet ihr das ganz anders machen? Hier der Code
1 | void tastenabfrage(void) |
2 | {
|
3 | |
4 | if(taste_pressed) |
5 | {
|
6 | if((TASTE & (1<<S1)) && (keytime <= key_short)) |
7 | {
|
8 | tasten_status_kurz = play; |
9 | }
|
10 | |
11 | if((!(TASTE & (1<<S1))) && (keytime > key_short)) |
12 | {
|
13 | tasten_status_lang = (1 << 0); |
14 | }
|
15 | else
|
16 | {
|
17 | tasten_status_lang = 0; |
18 | }
|
19 | |
20 | }
|
21 | |
22 | |
23 | if(TASTE & (1<<S1)) |
24 | {
|
25 | key_counter = 0; |
26 | taste_pressed = 0; |
27 | }
|
28 | |
29 | if(!(TASTE & (1<<S1)) && (!taste_pressed)) |
30 | {
|
31 | key_counter++; |
32 | if(key_counter > 3){ |
33 | keytime = 0; |
34 | taste_pressed = 1; |
35 | key_counter = 0; |
36 | }
|
37 | }
|
38 | }
|