Forum: Compiler & IDEs do-schleife in c umwandeln


von anfänger (Gast)


Lesenswert?

hallo, wie kann ich diese do-schleife in c schreiben:

Do
     Twi_control = Twcr And &H80
Loop While Twi_control <> &H80

danke.

mfg

von Peter (Gast)


Lesenswert?

Do {
     Twi_control = Twcr & &H80
} While( Twi_control <> &H80 )

weiss jetzt aber nicht was es mit den &H80 auf sich hat

von Karl H. (kbuchegg)


Lesenswert?

1
  do {
2
    Twi_control = Twcr & 0x80;
3
  } while( Twi_control != 0x80 );

von anfänger (Gast)


Lesenswert?

&H80 ist eine hex-zahl.

hier bekomme ich eine fehlermeldung:
expected expression before ">" token
While( Twi_control <> &H80 )

"!= " ist diese abfrage genuso wie "<>" ?

danke.

von Klaus (Gast)


Lesenswert?

mach es so, wie kbuchegg geschrieben hat. So isses nämlich richtig :)

von Peter (Gast)


Lesenswert?

oh, das <> hatte ich übersehen. Sorry

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

1
  do {
2
    Twi_control = Twcr & 0x80;
3
  } while( Twi_control != 0x80 );

Das geht kürzer:
1
while (!(Twcr & 0x80));

denn es ist anzunehmen, daß "Twi_control" hier nicht wirklich gebraucht 
wird.
Beim Verlassen der Schleife hat es immer den Wert 0x80, so daß man bei 
nachfolgendem Gebrauch auch einfach diesen konstanten Wert verwenden 
kann.

von Rolf Magnus (Gast)


Lesenswert?

> denn es ist anzunehmen, daß "Twi_control" hier nicht wirklich gebraucht
> wird.

Also ich hätte jetzt angenommen, daß es sich bei einer der beiden 
Variblen um ein I/O-Register handelt und der Zugriff daher nötig ist.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rolf Magnus wrote:

> Also ich hätte jetzt angenommen, daß es sich bei einer der beiden
> Variblen um ein I/O-Register handelt und der Zugriff daher nötig ist.

Ja, Twcr, und das wird sich in C wohl TWCR schreiben (two-wire
control register), also:
1
while (!(Twcr & 0x80));

oder vielleicht besser:
1
while ((TWCR & (1 << TWINT)) != 0)
2
        /* wait for transaction to complete */ ;

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.