Hallo liebe Forengemeinde,
habe ein Problem, welches sich wie folgt darstellt:
Bei der Initialisierungsroutine geschehen Dinge die ich echt nicht
nachvollziehen kann.
Dort werden Variablen gesetzt die ich vorher mit dem Wert 0 deklariert
habe. Dadurch wird meine while Schleife quasi garnicht mehr beachtet.
Hier kurz der mainloop:
1 | main()
|
2 | {
|
3 | Init();
|
4 | t=0;
|
5 | z=0;
|
6 | y=0;
|
7 | code[0]=5; // Code Stelle 1
|
8 | code[1]=8; // Code Stelle 2
|
9 | code[2]=3; // Code Stelle 3
|
10 | code[3]=4; // Code Stelle 4
|
11 |
|
12 |
|
13 |
|
14 | while (1)
|
15 | {
|
16 |
|
17 | while( t==0 && z==0); // Wiederhole für 4 Durchläufe
|
18 | {
|
19 | Tastenlesen(); // Unterprogramm Tasteneinlesen
|
20 | if(value>0)
|
21 | {
|
22 | Fall();
|
23 | // Unterprogramm Fallunterscheidung
|
24 | if (code[i] == code1[i]) // Feldvariablen der Arrays gleich?
|
25 | {
|
26 | if(i==0)
|
27 | {
|
28 | zahl1ok=1;
|
29 | x++;
|
30 | }
|
31 | if(i==1)
|
32 | {
|
33 | zahl2ok=1;
|
34 | x++;
|
35 | }
|
36 |
|
37 |
|
38 | if(zahl1ok==1 && zahl2ok==1)
|
39 | {
|
40 | PORTB=0x02; //PB1
|
41 | z=1;
|
42 | x=0;
|
43 | }
|
44 | i++;
|
45 | }
|
46 | else //wenn nicht
|
47 | {
|
48 | x++;
|
49 | } // Erhöhe Alarmvariable um 1
|
50 |
|
51 | if(x>=2)
|
52 | {
|
53 | y++;
|
54 | PORTB=0x01;
|
55 | _delay_ms(1000);
|
56 | PORTB=0x00;
|
57 | i=0;
|
58 | x=0;
|
59 | }
|
60 | if (y>=3) // Alarmvariable kleine als 3?
|
61 | {
|
62 | test();
|
63 | t=1;
|
64 | }
|
65 | value=0;
|
66 | }
|
67 |
|
68 | }
|
69 |
|
70 |
|
71 | }
|
72 |
|
73 | }
|
im Anhang befindet sich der kompltte Code.
Wäre echt nett, wenn mir jemand helfen könnte und mir sagt wo ich den
Bock geschossen habe. Sitze da jetzt echt schon fast den halben Tag dran
rum und sehe den Fehler einfach nicht.
Danke.