hallo ich habe ein problem mit der switch anweisung. wenn ich das folgende programm simuliere, funktioniert alles. übertrage ich das programm jetzt auf den controller gehn nur noch die ersten 2 cases... wenn ich die anderen taster drücke (an pinc) passiert nichts.
1 | /* programnm zur erzeugen verschiedener rechtecksignale. je nachdem welcher taster gedrückt
|
2 | wird, wird ein spezielles rechtecksignal erzeugt.*/
|
3 | |
4 | #include <avr/io.h> |
5 | #include <util/delay.h> |
6 | |
7 | #define summer PORTD
|
8 | #define taster_port PINC
|
9 | |
10 | int main() |
11 | {
|
12 | DDRD = 0xff; |
13 | DDRC = 0x00; |
14 | int i; |
15 | |
16 | while(1) |
17 | {
|
18 | i = taster_port; |
19 | |
20 | switch(i) |
21 | {
|
22 | case 0x01: //wenn bit 0 high führt dies hier ausführen |
23 | |
24 | summer |= (1 << PD7); //setzen und warten |
25 | _delay_us(100); |
26 | |
27 | summer &= ~ (1 << PD7); //löschen und warten |
28 | _delay_us(100); |
29 | |
30 | break; |
31 | |
32 | |
33 | case 0x02: //wenn bit 1 high führt dies hier ausführen |
34 | |
35 | summer |= (1<< PD7); |
36 | _delay_us(90); |
37 | |
38 | summer &= ~(1 << PD7); |
39 | _delay_us(90); |
40 | |
41 | break; |
42 | |
43 | |
44 | case 0x04: //wenn bit 2 high führt dies hier ausführen |
45 | |
46 | summer |= (1 << PD7); |
47 | _delay_us(80); |
48 | |
49 | summer &= ~ (1 << PD7); |
50 | _delay_us(80); |
51 | |
52 | break; |
53 | |
54 | |
55 | case 0x08: //wenn bit 3 high führt dies hier ausführen |
56 | |
57 | summer |= (1 << PD7); |
58 | _delay_us(70); |
59 | |
60 | summer &= ~ (1 << PD7); |
61 | _delay_us(70); |
62 | |
63 | break; |
64 | |
65 | |
66 | case 0x10: //wenn bit 4 high führt dies hier ausführen |
67 | |
68 | summer |= (1 << PD7); |
69 | _delay_us(60); |
70 | |
71 | summer &= ~ (1 << PD7); |
72 | _delay_us(60); |
73 | |
74 | break; |
75 | |
76 | |
77 | |
78 | }
|
79 | |
80 | }
|
81 | }
|