Hallöle,
ich habe wieder ein Problem und zwar erstelle ich gerade ein Menü mit
ner switch/case Anweisung. Soweit OK. Bei Tastendruck wird der Menüpunkt
einen hochgezählt
1 | // Zahl erhöhen
|
2 | if( R_TRIG( PINC, PIN0 )) {
|
3 | menuepunkt = menuepunkt + 1;
|
4 | lcd_clear();}
|
Gleichzeitig die LCD Anzeige gelöscht. Das ausgeben auf das Display
erfolgt so:
1 | switch(menuepunkt)
|
2 | {
|
3 |
|
4 | //################# Schritt 1 ###################
|
5 | case 1:
|
6 |
|
7 | wert = 1;
|
8 | lcd_setcursor( 10, 2 );
|
9 |
|
10 | break;
|
11 |
|
12 |
|
13 |
|
14 | //################# Schritt 2 ###################
|
15 | case 2:
|
16 |
|
17 | wert = 2;
|
18 | lcd_setcursor( 11, 2 );
|
19 |
|
20 | break;
|
21 |
|
22 | //################# Schritt 3 ###################
|
23 | case 3:
|
24 |
|
25 | wert = 3;
|
26 | lcd_setcursor( 12, 2 );
|
27 |
|
28 |
|
29 | break;
|
30 |
|
31 | //################# Schritt 4 ###################
|
32 | case 4:
|
33 |
|
34 | wert = 4;
|
35 | lcd_setcursor( 13, 2 );
|
36 |
|
37 | break;
|
38 |
|
39 |
|
40 | //################# Schritt 5 ###################
|
41 | case 5:
|
42 |
|
43 | wert = 5;
|
44 | lcd_setcursor( 14, 2 );
|
45 |
|
46 | break;
|
47 |
|
48 | //################# default ###################
|
49 | default:
|
50 |
|
51 | lcd_setcursor( 1, 1 );
|
52 | lcd_string("Test");
|
53 |
|
54 | break;
|
55 |
|
56 | } // Ende der switch
|
57 |
|
58 |
|
59 |
|
60 |
|
61 | if (wert >0) {
|
62 | itoa( wert, itoa_lcd_buffer, 10 );
|
63 | lcd_string( itoa_lcd_buffer ); } // Ausgabe an das LCD-Display
|
Nun das Problem. Von 1-5 zählt er ganz vernünftig hoch, es wird auch
immer nur eine Zahl angezeigt. Wenn er dann aber in die "0" springt,
also der default Zweig angezeigt wird. Zeigt das Display das Test an mit
einer 5 dahinter. Also: Test5 steht im Display
Warum frisst er da dieses lcd_clear() nicht ?
Wie man sieht will ich ein Menü erstellen, bin ich da auf dem richtigen
Wege? Oder gibt es da was besseres?
Vielen Dank.