Hallo Community, ich verwende für mein erstes Project einen ATmega32P. Die Taster(3 an der Zahl) sollen bei GND das 1-Signal geben(PORTB). Am Ausgang ist der PORTA(jeweils 8 LED´s) belegt. Ich habe folgendes Problem mit der Switch & Case Variante im Programm. Wenn ich den Taster(S2) am PINB1 betätige springt er nicht im 2 Case. Ich weiss nicht wieso. Er bleibt immer im 1 Case. Könntet ihr mir vielleicht weiter helfen ?
1 | #include <stdio.h> |
2 | #include <stdint.h> |
3 | #include <avr/io.h> |
4 | #include <util/delay.h> |
5 | #define F_CPU 16000000UL /* 16 Mhz-Takt; hier richtigen Wert eintragen */ |
6 | |
7 | int main(void) |
8 | {
|
9 | |
10 | DDRA = 0xFF; /*Ausgänge*/ |
11 | PORTA = 0x00; |
12 | DDRB = 0x00; /*Eingänge*/ |
13 | PORTB = 0xFF; |
14 | |
15 | uint8_t a; |
16 | uint8_t x; |
17 | uint8_t y; |
18 | int z=0; |
19 | |
20 | while(1) |
21 | {
|
22 | |
23 | for (y=z; y < 10; y++){ |
24 | |
25 | |
26 | DDRA = (1 << DDA0) | (1 << DDA1) | (1 << DDA2) | (1 << DDA3) | (1 << DDA4) | (1 << DDA5) | (1 << DDA6) | (1 << DDA7); |
27 | PORTA = DDRA; |
28 | _delay_ms(850.0); |
29 | DDRA = (0 << DDA0) | (0 << DDA1) | (0 << DDA2) | (0 << DDA3) | (0 << DDA4) | (0 << DDA5) | (0 << DDA6) | (0 << DDA7); |
30 | PORTA = DDRA; |
31 | _delay_ms(600.0); |
32 | DDRA = (1 << DDA0) | (1 << DDA1) | (1 << DDA2) | (1 << DDA3) | (1 << DDA4) | (1 << DDA5) | (1 << DDA6) | (1 << DDA7); |
33 | PORTA = DDRA; |
34 | _delay_ms(850.0); |
35 | z = z+2; |
36 | }
|
37 | |
38 | a=PORTB; |
39 | |
40 | if(a==0xFF) |
41 | |
42 | x = 1; |
43 | |
44 | if(a==0xFE) |
45 | |
46 | x = 2; |
47 | |
48 | if(a==0xFD) |
49 | |
50 | x = 3; |
51 | |
52 | if(a==0xFB) |
53 | |
54 | x = 4; |
55 | |
56 | switch(x){ |
57 | |
58 | case 1: |
59 | DDRA = (1 << DDA0) | (1 << DDA2) | (1 << DDA4) | (1 << DDA6) ; |
60 | PORTA = DDRA; |
61 | _delay_ms(100.0); |
62 | DDRA = (1 << DDA1) | (1 << DDA3) | (1 << DDA5) | (1 << DDA7) ; |
63 | PORTA = DDRA; |
64 | _delay_ms(100.0); |
65 | break; |
66 | |
67 | case 2: |
68 | DDRA = (1 << DDA0); |
69 | PORTA = DDRA; |
70 | _delay_ms(100.0); |
71 | DDRA = (1 << DDA1); |
72 | PORTA = DDRA; |
73 | _delay_ms(100.0); |
74 | DDRA = (1 << DDA2); |
75 | PORTA = DDRA; |
76 | _delay_ms(100.0); |
77 | DDRA = (1 << DDA3); |
78 | PORTA = DDRA; |
79 | _delay_ms(100.0); |
80 | DDRA = (1 << DDA4); |
81 | PORTA = DDRA; |
82 | _delay_ms(100.0); |
83 | DDRA = (1 << DDA5); |
84 | PORTA = DDRA; |
85 | _delay_ms(100.0); |
86 | DDRA = (1 << DDA6); |
87 | PORTA = DDRA; |
88 | _delay_ms(100.0); |
89 | DDRA = (1 << DDA7); |
90 | PORTA = DDRA; |
91 | _delay_ms(100.0); |
92 | break; |
93 | |
94 | case 3: |
95 | .
|
96 | .
|
97 | .
|
98 | break; |
99 | |
100 | case 4: |
101 | .
|
102 | .
|
103 | .
|
104 | break; } |
105 | |
106 | }
|
107 | }
|