Anfängerproblem mit PullUp Widerstand

Gast #1148935
Lesenswert?
• ▲
▼
Hallo,
ich habe ein kleines Problem mit einem Schalter, dieser ist über einen 
PullUp-Widerstand an die MCU geschaltet. Also für Bit = 0 gedrückt. Dann 
soll ein anderer Pin an dem sich eine Diode gegen Vcc befindet auf 
Ausgang "low" geschaltet werden. Irgendwie komm ich da nicht wirklich 
weiter ich weiß nicht warum die Led nicht aus geht wenn ich die Taste 
betätige, vielleicht kann mir ja jemand weiterhelfen. PORTC soll Ausgang 
und PORTD Eingang sein.
Danke.
Hier der Code:
         ldi r16, 0xFF
         out DDRC, r16
     out PORTD,r16

         ldi r16, 0x00
         out DDRD, r16
     sbi PINC,2

main:   sbic PIND,2
     rjmp main
     cbi PINC,2
     rjmp main
Persönliche Seite #1148966
Lesenswert?
• ▲
▼
Zur Hardware/Schaltung mag ich nichts sagen, weil mir der Schaltplan 
oder eine Skizze fehlt. Zur Software:
1
     ; Port C als Ausgang einrichten
2
     ldi r16, 0xFF
3
     out DDRC, r16 ; 0xff => alle Pins an Port C auf Ausgang
4

5
     ; Port D als Eingang einrichten
6
     out PORTD,r16 ; Port D ist noch vom Reset her Eingang, 
7
     ; diese Zeile schaltet also die internen Pullups ein
8
     ; möglicherweise Schreibfehler sinnvoller z.B.
9
     out PORTC,r16 ; alle Pins an Port C HIGH
10

11
     ldi r16, 0x00 
12
     out DDRD, r16 ; 0x00 Port D auf Eingang 
13

14
     sbi PINC,2    ; ??? Sinnvoll könnte sein sbi PORTC,2
15
     ; um Ausgang PC2 HIGH zu setzen
16

17
main:   
18
     sbic PIND,2   ; PD2 abfragen, wenn LOW, dann nächsten
19
     ; Befehl überspringen
20
     rjmp main
21
     cbi PINC,2    ; ??? Sinnvoll könnte sein cbi PORTC,2
22
     ; um Ausgang PC2 LOW zu setzen
23
     rjmp main
24

25
; Alternative:
26
main:   
27
     sbis PIND,2   ; PD2 abfragen, wenn HIGH, dann 
28
     cbi PORTC,2   ; diese Zeile überspringen
29
     rjmp main
#1148970
Lesenswert?
• ▲
▼
Hallo Phil,

sortiere doch ersteinmal deinen Code, dann wird das ganze vllt auch 
etwas leichter zu lesen

Versuch es einmal mit diesem Code und du wirst mehr erfolg haben:

         ldi r16, 0xFF
         out DDRC, r16

         ldi r16, 0x00
         out DDRD, r16

main:
     sbic PIND,2
     rjmp main
an:
     ldi r16, 0xff
     out PORTC,r16
     sbis PIND,2
     rjmp an
aus:
     sbic PIND,2
     rjmp aus
     ldi r16, 0x00
     out PORTC,r16
loop:
     sbis PIND,2
     rjmp loop
     rjmp main


mit dieser Version solltest du mehr Erfolg haben

Gruß

Dennis
Gast #1148986
Lesenswert?
• ▲
▼
Vielen Dank für die schnellen Antworten. Hat so weit geklappt, glaube 
auch dass ich das mit der Zuweisung der Ports jetzt begriffen habe, wird 
sich noch zeigen ;-).
Kann mich nur nochmal bedanken ;-)

Gruß Phil

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