Hallo..
Habe folgendes Problem:
Habe eine Funktion geschrieben in der eine switch-case Anweisung steht.
In die Funktion übergebe ich eine Int-Variable zum steuern.
Das ganze läuft auf einem 8051 Controller.
Das ganze sieht bei mir so aus (zusammengefasst):
1 | void funktion(int)
|
2 |
|
3 | int main(void)
|
4 | {
|
5 | funktion(0)
|
6 | return 0;
|
7 | }
|
8 |
|
9 | void funktion(int fall)
|
10 | {
|
11 | int lauf, y=0;
|
12 | unsigned char aufforderung[16]="Frequenz in Hz: ";
|
13 | unsigned char bestaetigung[3]="OK";
|
14 | unsigned char fehleingabe[14]="Fehleingabe!";
|
15 |
|
16 | switch(fall)
|
17 | case 2: //OK!
|
18 | y=strlen(bestaetigung);
|
19 | for(lauf=0;lauf<=y;lauf++)
|
20 | {
|
21 | SBUF=bestaetigung[lauf];
|
22 | Warte10Us(200);
|
23 | }
|
24 | break;
|
25 |
|
26 | case 3: //Fehleingabe!
|
27 | y=strlen(fehleingabe);
|
28 | for(lauf=0;lauf<=y;lauf++)
|
29 | {
|
30 | SBUF=fehleingabe[lauf];
|
31 | Warte10Us(200);
|
32 | }
|
33 | break;
|
34 |
|
35 | default: //Frequenz in Hz:
|
36 | y=strlen(aufforderung);
|
37 | for(lauf=0;lauf<=y;lauf++)
|
38 | {
|
39 | SBUF=aufforderung[lauf];
|
40 | Warte10Us(200);
|
41 | }
|
42 | }
|
43 | }
|
Das Problem was ich habe, ist das wenn ich jetzt die Funktion mit 0
aufrufe, immer die Fälle default und 2 nacheinander abgerufen werden.
Kommentiere ich Case 2 aus, nimmt er anstelle dessen Case 3.
Case 2 und Case 3 funktionieren hingegen auch einzeln.
Benenne ich default in Case 1 um, und rufe dann mit (1) auf nimmt er
trotzdem Case 2 mit dazu.
Muss ich beim Controller vielleicht noch was beachten?