Forum: Mikrocontroller und Digitale Elektronik Taster für 1 LED Ansteuerung Problem


von Joey N. (joey)


Lesenswert?

Hi, vielleicht kann jemand helfen. Bin Anfänger.
Wollte auf dem STK500 eine LED (LED0) über einen Taster (SW0) ansteuern.
das funktioniert auch, allerdings auch bei jedem anderem Schalter sowie 
die dazugehörige LED.

Hat jemand eine Idee? Die anderen Taster und LEDs sollen bei Betätigung 
aus bleiben.

Danke
gruss aus HH


ldi r16, 0x01    ;den Wert 0x01 (entspricht 0b00000001) in das Register 
r16
out DDRB, r16    ;Ausagbe das Registers r16 in das  IO Register DDRB

ldi r16, 0x00
out DDRD, r16    ;Alle Pins am Port D durch Ausgabe von 0x00 ins
                    ;Richtungsregister DDRD als Eingang konfigurieren


ldi r16, 0x01       ;An allen Pins vom Port D die Pullup-Widerstände
out PORTD, r16     ;aktivieren. Dies geht deshalb durch eine Ausgabe
                    ;nach PORTD, da ja der Port auf Eingang gestellt 
ist.


loop:
    in r16, PIND  ;Anliegende Werte über Taster nach r16 einlesen
    out PORTB, r16
    rjmp loop

von Hubert G. (hubertg)


Lesenswert?

Du hast nur PB0 als Ausgang konfiguriert. Der Rest ist Eingang, wenn du 
in einen Eingang eine 1 schreibst, aktivierst du den PullUp. Dieser 
genügt um die Led leuchten zu lassen.

von sam (Gast)


Lesenswert?

hubert hat wohl kein stk500.

bei dem stk500 leuchten die LED's bei einer 0 am ausgang und sind bei 
einer 1 aus.
auch bedeutet ein betätigter taster eine 0 und unbetätigt 1.

d.h. ausgänge mit 0 leuchten; evtl leuchten auch eingänge ohne 
aktivierte pull-ups (kann ich gerade nicht genau sagen.

d.h.
1
ldi r16, 0xFF   
2
r16
3
out DDRB, r16 
4
   
5
ldi r16, 0x00
6
out DDRD, r16
7
8
ldi r16, 0xFF       ;An allen Pins vom Port D die Pullup-Widerstände
9
out PORTD, r16 
10
11
loop:
12
    in r16, PIND  ;Anliegende Werte über Taster nach r16 einlesen
13
    out PORTB, r16
14
    rjmp loop

da nun alle angeschlossenen LED's tatsächlich auch ein richtiger ausgang 
sind und alle nicht betätigten taster der korrespondierenden LED eine 1 
liefern sollten die alle aus sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.