Hallo zusammen,
um das Auslesen eines Pins zu testen, habe ich folgenden C-Code für
einen atmega8 geschrieben:
1 | #include <avr/io.h>
|
2 |
|
3 | int main(){
|
4 |
|
5 | DDRD = 0xff; //DDRD outputs
|
6 | DDRB = 0x00; //DDRB inputs
|
7 | PORTD = 0x08; //PORTD = 0b00001000 => D3 HIGH
|
8 | PORTB = 0x00;
|
9 |
|
10 | while(1){
|
11 |
|
12 | if((PORTB & 0x80) == 0x80){ //if B7 HIGH, then D3 LOW
|
13 | PORTD &= ~(1<<3);
|
14 | }
|
15 | if((PORTB & 0x80) == 0x00){ //if B7 LOW, then D3 HIGH
|
16 | PORTD |= (1<<3);
|
17 | }
|
18 | }
|
19 |
|
20 | return 0;
|
21 |
|
22 | }
|
Die LED, die ich an D3 angeschlossen habe, leuchtet, auch wenn ich B7 an
+5V lege. Habe ich einen Fehler im Code gemacht?
Sorry für die triviale Frage, habe heute erst mit der AVR-Programmierung
angefangen und hadere noch etwas mit dem Syntax.
Würde mich sehr Freuen, wenn mir jemand weiterhelfen könnte.
Gruß