www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik verstehe C-Code nicht!!!!


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Verstehe folgenden C-Code nicht:

void LCD_PutPixel(unsigned char x, unsigned char y, unsigned char Set)
{
unsigned int XY;
unsigned char bitByte;

  XY=0x200;
  XY=XY+(y*40);
  XY=XY+(x/6);

  LCD_SendData(XY & 0x00FF);
  LCD_SendData(XY>>8);
  LCD_SendCmd(0x24);        //pointer set

  bitByte=5-(x % 6);

  Set? bitByte|=0xF8: bitByte|=0xF0;

  LCD_SendCmd(bitByte);    //0b1111SXXX , s is set/reset, xxx is bit
number xxx
          //(Each memorybyte i six graphics bits (pixels))
}

Was bedeutet diese Zeile: Set? bitByte|=0xF8: bitByte|=0xF0;
Mich iritiert das Fragezeichen! Was soll das?

Autor: Fabian Sollner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fragezeichen == IF-Sequenz

if (0 != Set) {
   bitByte |= 0xF8
} else {
   bitByte|=0xF0;
}

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist eine Fallunterscheidung:
Kannst du auch (umständlich) so schreiben:
if (set)
{
    bitByte|=0xF8;
}
else
{
    bitByte|=0xF0;
}

Gruß

Olli

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hab ich wohl zu langsam getippt ;)

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird oft als "ternärer operator" Bezeichnet.

Autor: Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht in dieser Form aber endcool aus (auch wenn's hinterher nicht
gerade besser lesbar ist). ;-)

MfG, Khani

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, man kann auch ganze Programme in einer Codezeile schreiben...

Prügelstrafen sollten wieder eingeführt werden!

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Info!
Und was bedeutet diese Zeile: bitByte=5-(x % 6);

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
% ist die Modulo-Operation. x % 6 ergbit den Rest der ganzzahligen
Division von x durch 6. Das wird also eine Zahl zwischen 0 und 5 sein.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.