Moin moin! Ich komme gerade nicht drauf, und bevor ich mist progge wollte ich nochmal nachfragen. while ((EadcBUSY & UCBUSY)==0x01) ist doch genau das gleiche wie while (EadcBUSY & UCBUSY); oder stimmt das nur wenn UCBUSY==0x01 ? LG
Bergie B. schrieb: > Moin moin! > > Ich komme gerade nicht drauf, und bevor ich mist progge wollte ich > nochmal nachfragen. > > while ((EadcBUSY & UCBUSY)==0x01) > > ist doch genau das gleiche wie > > while (EadcBUSY & UCBUSY); > > > > oder stimmt das nur wenn UCBUSY==0x01 ? Wenn UCBUSY nicht 0x01 ist, dann wird das Ergebnis der UND Verknüpfung niemals 0x01 sein können. In diesem Sinne wird bei der ersten Variante von einer impliziten Annahme ausgegangen. Und das kann ins Auge gehen. (Vorausgesetzt, UCBUSY ist eine Maske, mit der genau 1 Bit und nicht mehr extahiert werden soll. Aber davon gehe ich mal aus) Daher ist es besser nicht auf explizit 0x01 abzufragen, sondern entweder while ((EadcBUSY & UCBUSY) != 0) oder while ((EadcBUSY & UCBUSY) == UCBUSY) Aber gerade bei Vergleichen ist man des öfteren in der paradoxen Situation, dass Tipp-Faulheit belohnt wird. while (EadcBUSY & UCBUSY); macht genau dasselbe
Es ist nicht das Gleiche. Zum Testen eines Bits schreibt man eigendlich: while ((EadcBUSY & UCBUSY) != 0) Verkürzen kann man das als: while (EadcBUSY & UCBUSY)
Nein, denn ... while ((0xF8 & 0xF8)==0x01) -> FALSE while (0xF8 & 0xF8); -> 0xF8 -> "TRUE" Philipp
Karl heinz Buchegger schrieb: > Wenn UCBUSY nicht 0x01 ist, dann wird das Ergebnis der UND Verknüpfung > niemals 0x01 sein können. Doch, z.B. wenn UCBUSY == 3 und EadcBUSY == 1
Uhu Uhuhu schrieb: > Karl heinz Buchegger schrieb: >> Wenn UCBUSY nicht 0x01 ist, dann wird das Ergebnis der UND Verknüpfung >> niemals 0x01 sein können. > > Doch, z.B. wenn UCBUSY == 3 und EadcBUSY == 1 Ja, du hast recht. Hatte die Antwort dahingehend schon korrigiert.
Danke euch allen für eure mühen mir etwas bei zu bringen! Werde nun die Kurze Variante versuchen. while ((EadcBUSY & UCBUSY) != 0) { //warten } while (EadcBUSY & UCBUSY); wobei ich bei dieser Variante jedes BIT testen kann egal ob mein UCBUSY nun eine 0x01 == 00000001b ist oder 0x03 == 00000010b und wenn ich in der Schleife warten möchte bis das BIT1 wird würde ich: while (!(EadcBUSY & UCBUSY)); benutzen?
Und wenn UCBUSY == 3 und EadcBUSY == 5?? Solange nicht klar ist, daß das eine davon eine Maske mit genau einem gesetztem Bit ist....
UCBUSY ist bei mir eine Maske mit genau nur einem gesetzten BIT Also kann es die HEX Werte: 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, haben. D a n k e
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.