Hallo zusammen, bin neu hier und unerfahren bezüglich der µC-Programmierung. Ich möchte mit Hilfe eines kapazitiven Tasters 3 Ausgänge ansteuern und zwar nach dem gleichen Prinzip, wie 3 D-Flipflops im Ringregister. Das soll einfach heißen, nach jedem Betätigen des Tasters, schaltet er von einem Ausgang zum anderen durch und der vorherige erlischt. Als Mikrocontroller benutze ich einen ATmega 8. Das Problem befindet sich im Source Code. Wenn ich den Taster drücke, tut sich absolut nichts. Ändere ich aber die if-Anweisung: PD1, PD2 und PD3 vergleichen mit 1, schaltet er bei Betätigung nur einmal durch und bleibt dann auch bei PD2 hängen. Was mache ich hier falsch?
1 | #include <avr/io.h> |
2 | |
3 | int main () { |
4 | DDRD=0x0E; |
5 | PORTD=0x0C; |
6 | while (1){ |
7 | if (PIND & 0x01) { |
8 | if (PD1 == 0) { |
9 | PORTD = 0x0A; |
10 | } else if (PD2 == 0) { |
11 | PORTD = 0x06; |
12 | } else if (PD3 == 0) { |
13 | PORTD = 0x0C; |
14 | }
|
15 | }
|
16 | }
|
17 | return 0; |
18 | }
|