Hallo, der Teil meines Programmcodes um den des mir geht sieht so aus: while ( bit_is_set(PORTE, PINE7) || bit_is_set(PORTE, PINE4)) printf("PORTE %02x\n\n ", PORTE); ; Die Ausgabe lautet: PORTE 10 d.h. das PE5 gesetzt ist und die Schleife doch einfach abbrechen müsste, oder?? Aber mein Programm kommt einfach nicht aus der Schleife raus. Was verwechsel ich da??
Bits werden von 0..7 getählt. d.h. Wenn Bit 4 gesetzt wird ergibt es 0x10, weil es das das fünfte Bit ist. PE5 wäre 0x20 Klar?
Hallo, warum sollte er aus der Schleife gehen, wenn PE5 immernoch gesetzt ist? Ist schließlich eine while() Schleife und keine if() Anweisung. Gruß
10 dezimal = 1010 binär niederwertigstes Bit ist normal Bit 0
So wie es aussieht, soll er ja in der Schleife bleiben, solange einer der beiden Pins gesetzt ist. BTW: Bist Du sicher, dass Du PORTE abfragen willst und nicht PINE?
Der fehlenden Reaktion nach zu urteilen hat die Dame entweder aufgegeben oder es durch Eure Hilfe selbst bemerkt. Die Antwort braucht also nicht nochmal wiederholt werden ;-)
Danke, für euere Antworten! Tja wie Andre richtig bemerkt hat, hab ich meinen Fehler selbst bemerkt: Diese Zeile war bei mir in der Initialisierung PORTE = _BV(PE4); ... und als sie weg war, funktionierte alles ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.