Hallo, ich wollte eigentlich nur schnell ein kleines Menü erstelle aber
jetzt macht mich das Ding fertig.
Im Grunde geht es, nur wenn ich Taster DOWN drücke dann saust das ganze
Menü durch, von unten nach oben das gleiche. Manchmal geht es
allerdings! Warum???
Der obere testcode läuft einwandfrei.
Die Taster werden mit Timer0 alle 10ms abgefragt.
Also ist "tast" ja 10ms lang z.b. UP und er läuft das Menü nach oben
durch. Deshalb wollte ich "tast" wieder auf 0 setzen aber das juckt ihn
überhaupt nicht.
1 | volatile uint8_t tast = 0;
|
2 | volatile uint8_t menutap = 1;
|
3 |
|
4 |
|
5 | void menu(void)
|
6 | {
|
7 |
|
8 |
|
9 | /*
|
10 | if(tast == RIGHT)
|
11 | {LCD_puts("right",1);
|
12 | menutap = 10;
|
13 | }
|
14 | else if(tast == LEFT)
|
15 | {LCD_puts("Left",1);
|
16 | menutap = 5;
|
17 | }
|
18 | else if(tast == DOWN)
|
19 | {LCD_puts("DOWN",1);
|
20 | menutap = 50;
|
21 | }
|
22 | else if(tast == UP)
|
23 | {LCD_puts("UP",1);
|
24 | menutap = 6;
|
25 | }
|
26 | else if(tast == ENTER)
|
27 | {LCD_puts("enter",1);
|
28 | menutap = 8;
|
29 | }
|
30 | else if(tast == FALSE)
|
31 | {LCD_puts("false",1);
|
32 |
|
33 | }
|
34 |
|
35 | */
|
36 |
|
37 |
|
38 |
|
39 | switch (menutap)
|
40 | {
|
41 |
|
42 | case 1: if(tast==DOWN)
|
43 | {menutap = 2;
|
44 | tast = 0;
|
45 | }
|
46 | LCD_puts("TAP 1",1);
|
47 | break;
|
48 |
|
49 | case 2: if(tast==UP)
|
50 | {
|
51 | menutap = 1;
|
52 | tast =0;
|
53 | }
|
54 | else if(tast==DOWN)
|
55 | {menutap = 3;
|
56 | tast = 0;
|
57 | }
|
58 |
|
59 | LCD_puts("TAP 2",1);
|
60 |
|
61 | break;
|
62 |
|
63 | case 3: if(tast == UP)
|
64 | {menutap = 2;
|
65 | tast = 0;
|
66 | }
|
67 | LCD_puts("TAP 3",1);
|
68 | break;
|
69 |
|
70 | }
|
71 | }
|