Frage zur Syntax (C)

OP Persönliche Seite #2148809
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);
#2148821
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.