Hallo Zusammen,
ich versuche zu Verstehen, warum mein Programm nicht funbktioniert.
Ich möchte den Eingangszustand von PINB3 in eine Variable abspeichern
und diese dann als if-Abrage nutzen.Dafür nutze ich einen Atmega8.
Jedoch denkt das Programm gar nicht darüber nach, das zu tun was ich
gerne möchte. Hier mein Programm:
1 | #include <avr/io.h>
|
2 | #define F_CPU 1200000
|
3 | #include <util/delay.h>
|
4 |
|
5 |
|
6 | int main(void)
|
7 | {
|
8 |
|
9 | DDRB= (1<<0); //PB0 als Ausgang
|
10 | DDRB &=~(1<<3); //PB3 als Eingang
|
11 | PORTB &=~(1<<3); //PullUp PB3 deaktivieren
|
12 | PORTB &=~ (1<<0); //PB0 auf Low setzen
|
13 |
|
14 | int state = 0;
|
15 | int laststate = 0;
|
16 |
|
17 | while (1)
|
18 | {
|
19 | //state = (PORTB & (1<<3)) == (1<<3);
|
20 | state = PINB & (1<<3); //Eingang in state schieben
|
21 |
|
22 | if (laststate==0 && state==1)
|
23 | {
|
24 | PORTB |= (1<<0); //Auf High setzen
|
25 | }
|
26 | else
|
27 | {
|
28 | PORTB &=~ (1<<0); //Auf Low setzen
|
29 | }
|
30 | }
|
31 | }
|
Könnte mir bitte jemand, auch gerne unsanft :-) , erklären wo ich den
Fehler gemacht habe? Das ist bestimmt wieder was richtig blödes.
Vielen Dank und schöne Grüße