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);
}
Gast
#1502576
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 '='.
Gast
#1502577
PORTD ist immer 0x00. Was du suchst ist PIN. Ich empfehle dir das Tutorial durchzuarbeiten.
Gast
#1502578
und wenn es wirklich eine Taste ist wird sie prellen und das Programm wird auch nicht wie gewünscht funktionieren ...
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);
}
Gast
#1502612
Wenn tatsächlich der PortAUSGANG untersucht werden soll, ja. Wenn du den EINGANG abfragen willst, wäre - wie schon gesagt - PORTD == 0x01 richtig.
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)
Gast
#1502625
ARGHL... drecks Copy&Paste ... türlich PIND
Hab ja sogar nochmal hochgeblättert zur Zeile
> Was du suchst ist PIN.
und gedacht "jo, stimmt"
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 ;)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.