Forum: Mikrocontroller und Digitale Elektronik Abfrage Portpins mit while(xxx)


von M. G. (ixil96)


Lesenswert?

Hallo,

ich möchte 4 Portpins am PORTC meines ATmega88 abfragen und zwar soll 
der Programmfluss an der Stelle
1
while (!(PINC & 0x0F));    // Warte hier, solange eine Taste noch gedrückt ist...

solange angehalten werden, solange einer der Pins (0...3) auf LOW liegt.

PORTC = HIGH + Pullups aktiviert


Was mache ich hier falsch?

von Felix Adam (Gast)


Lesenswert?

Ohne den Rest des Programms oder eines gleichwertigigen Minimalbeispiels 
kann das keiner beantworten.

von Felix Adam (Gast)


Lesenswert?

Was schreibe ich denn da? Die Abfrage ist falsch.

Müsste lauten :
while ( (PINC & 0x0F) != 0x0F);

von Bitpfriemler (Gast)


Lesenswert?

1
while ( (PINC & 0x0F) != 0x0F);

von M. G. (ixil96)


Lesenswert?

Felix Adam schrieb:
> Was schreibe ich denn da? Die Abfrage ist falsch.
>
> Müsste lauten :
> while ( (PINC & 0x0F) != 0x0F);

Ach du meine Güte :-(
Natürlich ....

Danke!

von fop (Gast)


Lesenswert?

1
while (!(tralala))
durchläuft die Schleife so lange der Ausdruck tralala gleich 0 ist. Alle 
anderen Werte führen zum Beenden der Schleife.

In Deiner Situation bedeutet das, die Schleife wartet so lange alle 
Taster gedrückt sind. Knapp vorbei an Deiner Absicht.

1
while (0x0FU != (PINC & 0x0FU));    // Warte hier, solange eine Taste noch gedrückt ist...
trifft vermutlich eher Deine Absicht. Wobei die U's nur zur allgemeinen 
Verwirrung und dem Seelenfrieden einiger statischer Codecheckprogramme 
dienen.

@Felix : das war doch das perfekte Minimalbeispiel...

von Felix Adam (Gast)


Lesenswert?

Ja, sehe ich im Nachhinein auch so :-).

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.