Forum: Mikrocontroller und Digitale Elektronik Frage zur Syntax (C)


von PIC N. (eigo) Benutzerseite


Lesenswert?

Hallo zusammen,
kann ich folgendes schreiben:
1
  unsigned char Wert=0;
2
  unsigned char i;  
3
4
  // 8 Bits hintereinander einlesen, LSB zuerst
5
  for(i=0; i<8; i++)
6
  {
7
    if (OW_R_Bit()) Wert|=0x01<<i;
8
  }

um damit dies zu erreichen:

Die Funktion soll (1-Wire Bus) ein Byte einlesen und mit dem LSB 
anfangen. Der Ausgangswert von der Variable "Wert" ist 0. Wenn ein Bit 
mit High eingelesen wird soll Bit 0 von "Wert" gesetzt werden. Durch das 
inkrementieren von "i", wird dann immer das entsprechende Bit gesetzt. 
Kann ich das im MCC18 Compiler so schreiben?

LG Nico

Nachtrag:

Bzw. wäre:
1
Wert|=0x01<<i;
gleichzusetzen mit:
1
Wert=Wert|(0x01<<i);

von Sam .. (sam1994)


Lesenswert?

Nicolas M. schrieb:
> Kann ich das im MCC18 Compiler so schreiben?

Vom Compiler her weiß ich das nicht, aber das sollte eigentlich schon 
funktionieren.
Nicolas M. schrieb:
> Nachtrag:
>
> Bzw. wäre:Wert|=0x01<<i;gleichzusetzen mit:Wert=Wert|(0x01<<i);

ja

von Remo@ T. (remo)


Lesenswert?

du glaubst ja garnicht was man durch ausprobieren so alles lernt.
Also mach eine main() Funktion um deinen Code rum und nudle die for 
Schleife im Debugger 8 mal durch. Dabei schaust du dir an, wie sich die 
Variablen bei jederm Durchlauf verändern,
und dann kennst du die Antwort(en) auf deine Frage(n).

viel Spass dabei
Remo

von PIC N. (eigo) Benutzerseite


Lesenswert?

Danke!

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.