LED leuchtet, wenn Taster nicht gedrückt

Gast #1670391
Lesenswert?

Hallo,

entschuldigt die Frage, aber ich mache gerade die ersten Versuche. Ich 
benutze dieses Board 
(http://shop.myavr.de/Baus%C3%A4tze%20und%20Platinen/myAVR%20Board%20MK2%20USB,%20Bausatz.htm?sp=article.sp.php&artID=41) 
und habe folgenden Code (aus dem AVR-Tutorial) drauf gebrannt:
1
.include "m8def.inc"
2
 
3
         ldi r16, 0xFF
4
         out DDRB, r16
5

6
         ldi r16, 0x00
7
         out DDRD, r16
8

9
loop:
10
         in r16, PIND
11
         out PORTB, r16
12
         rjmp loop

An Port D2 steckt der Taster, an Port B2 die LED. Eigentlich habe ich 
erwartet, wenn ich den Taster drücke, leuchtet die LED.
Leider ist es genau anders herum: Die LED leuchtet, sobald das Board mit 
Strom versorgt ist. Wenn ich den Taster drücke, fließt durch die LED 
kein Strom mehr.

So habe ich den Code verstanden: D ist der Eingang und der aktuelle 
Status von D wird (in der Endlosschleife) an den Ausgang B 
weitergegeben. Also Schalter an -> LED an.

Was läuft da schief?

Vielen Dank schoneinmal,
Nedec
#1670398
Lesenswert?

Ohne das Board zu kennen würde ich mal sagen, dass die Taster auf GND 
schalten. Du bei gedrücktem taster also eine 0 einliest. Und wenn du das 
nict-invertiert ausgibst, dann gibst du eine null aus. Also ist die LED 
aus, wenn der Eingang "aus", also der Kontakt zu GND geschlossen ist.

Abhilfe:
1
.include "m8def.inc"
2
 
3
         ldi r16, 0xFF
4
         out DDRB, r16
5

6
         ldi r16, 0x00
7
         out DDRD, r16
8
  
9
         ldi r17, 0xFF
10

11
loop:
12
         in r16, PIND
13
        
14
         eor r16, r17
15

16
         out PORTB, r16
17
         rjmp loop

Damit verknüpfst du die Eingabe mit 1 bzw. Invertierst. Dann hast du ein 
LED-Leuchten bei Tastendruck.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren