Forum: Mikrocontroller und Digitale Elektronik If Anweisung wird übersprungen


von Philipp H. (phil_phil)


Lesenswert?

Hallo Freunde,

Hab momentan ein Problem wo ich nicht weiterkomme. Ich möchte durch 
einen Tastendruck (PORTD) meinen PIN0 an PORTB toggeln. Aber irgendwie 
klappts nich. Er überspringt immer die if Anweisung.

Wär schön, wenn mir einer weiterhelfen könnte.

Hier der Code:

while(1)
  {

DDRB=0xff;
PORTB=0xff;
DDRD=0x00;
PORTD=0x00;

  if (PORTD = 0x01) PORTB ^= (1<<PB0);
  }

von Paul W. (Gast)


Lesenswert?

Hallo,
'=' ist eine Zuweisung... du weist PORTD null zu und anschließend wird 
der Ausdruck überprüft (ob false oder true... gleich null oder ungleich 
null). Du willst vermutlich '==' und nicht '='.

von Gast (Gast)


Lesenswert?

PORTD ist immer 0x00.
Was du suchst ist PIN.

Ich empfehle dir das Tutorial durchzuarbeiten.

von Walter (Gast)


Lesenswert?

und wenn es wirklich eine Taste ist wird sie prellen und das Programm 
wird auch nicht wie gewünscht funktionieren ...

von Philipp H. (phil_phil)


Lesenswert?

Um das Prellen wollt ich mich anschließend kümmern. Aber ihr habt mir 
schonmal nen riesen Schritt weitergeholfen.

Der Code müsste folgendermaßen so aussehen richtig?

while(1)
  {

DDRB=0xff;
PORTB=0xff;
DDRD=0x00;


  if (PORTD == 0x01) PORTB ^= (1<<PB0);
  }

von MeinerEiner (Gast)


Lesenswert?

Wenn tatsächlich der PortAUSGANG untersucht werden soll, ja.
Wenn du den EINGANG abfragen willst, wäre - wie schon gesagt - PORTD == 
0x01 richtig.

von C. H. (_ch_)


Lesenswert?

MeinerEiner schrieb:
> Wenn tatsächlich der PortAUSGANG untersucht werden soll, ja.
> Wenn du den EINGANG abfragen willst, wäre - wie schon gesagt - PORTD ==
> 0x01 richtig.
wenn, dann schon richtig! if (PIND == 0x01)

von MeinerEiner (Gast)


Lesenswert?

ARGHL... drecks Copy&Paste ... türlich PIND
Hab ja sogar nochmal hochgeblättert zur Zeile
> Was du suchst ist PIN.
und gedacht "jo, stimmt"

von C. H. (_ch_)


Lesenswert?

MeinerEiner schrieb:
> ARGHL... drecks Copy&Paste ... türlich PIND
> Hab ja sogar nochmal hochgeblättert zur Zeile
>> Was du suchst ist PIN.
> und gedacht "jo, stimmt"
take it easy ;)

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.