Hallo, Ich hoffe mir kann jemand weiterhelfen. Habe folgendes Programm geschrieben. Mit Taster1 schalte ich eine LED an mit Taster2 zwei LED´s an und mit Taster1 und Taster2 alle drei LED´s das funktioniert aber nur dann wenn ich als erstes mit der abfrage if( ! (PIND & (1<<PD2 |1<<PD3))) beginne sonst funktioniert das Programm nicht. Warum?
1 | /* PD2(Taster1) PD3(Tatser2) PB0-PB2(LED´s) */
|
2 | |
3 | DDRB|=(1<<PB0)|(1<<PB1)|(1<<PB2); |
4 | DDRD=0x00; |
5 | PORTD|=(1<<PD2)|(1<<PD3); |
6 | |
7 | |
8 | |
9 | while(1) |
10 | {
|
11 | |
12 | |
13 | |
14 | |
15 | if( ! (PIND & (1<<PD2 | 1<<PD3)) ) |
16 | {
|
17 | |
18 | PORTB|=(1<<PB0)|(1<<PB1)|(1<<PB2); |
19 | |
20 | }
|
21 | |
22 | |
23 | else if(!(PIND & (1<<PD2) ) ) |
24 | {
|
25 | |
26 | |
27 | PORTB|=(1<<PB0); |
28 | PORTB&=~( (1<<PB1)|(1<<PB2) ); |
29 | |
30 | |
31 | }
|
32 | |
33 | else if( ! (PIND & (1<<PD3) )) |
34 | {
|
35 | |
36 | PORTB|=(1<<PB0)|(1<<PB1); |
37 | PORTB&=~(1<<PB2); |
38 | |
39 | |
40 | }
|
41 | |
42 | |
43 | else
|
44 | {
|
45 | |
46 | PORTB&=~( (1<<PB0)|(1<<PB1)|(1<<PB2)); |
47 | |
48 | |
49 | }
|