mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik char und bit addieren?


Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

spricht irgendwas dagegen, das zu tun? Funktioniert mit der momentanen
Compilerversion.

unsigned char send_byte=0x30;  //"0"
putchar (send_byte+D0_in);     //sendet Ascii 0 wenn I/Obit=0
                               //oder Ascii 1 wenn I/Obit=1

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da es im ANSI-C keinen Bit-Typ gibt, gibt es auch keine Regel zur
Addition.

Besser ist daher:

putchar( D0_in ? '1' : '0' );


Peter

Autor: Oryx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
da ein Bit (auch wenn du in C++ ein bool nimmst) immer ein Byte lang
ist. Sehe ich kein Problem. Ein gewisses Problem tritt auf, wenn in
deinem "Bit" z.B. eine 10 drinsteht. Diese 10 wird auch als eins
gewertet. Aber deine Ausgabe macht halt irgendwas.

Peters Schreibweise ist mit Sicherheit portabler. Auch wenn die
Schreibweise mit dem ? für mich immer wieder blöde zu lesen ist.

Oryx

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei mir (CodeVision) gibts aber den Bit-Typ, und der belegt auch
wirklich nur ein Bit. Ich muss noch ein paar (16) Bytes
Programmspeicher schinden, die 3.Erweiterung von Kundenseite bringt
mich jetzt langsam in Nöte, also bin ich scharf auf jedes Byte.
Peters Lösungs braucht 6 word, (kannte ich noch gar nicht),
die "klassische" Variante
if (d1_in) putchar (0x31);
   else putchar (0x30);
ist mit 7 word dabei,
putchar (0x30+d1_in) braucht nur 5 word, also lasse ich dass jetzt
erstmal so. Falls ich genug Luft finde, kommts wieder raus.

Besten Dank.

Autor: Marcus Maul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

in C++ gibts tatsächlich eine Möglichkeit genau ein Bit zu benutzen für
eine bool Variable. Die meisten (zumindest gcc) C - Compiler
unterstützen diese Typen ebenfalls.

Versucht mal:

// bool b :1;

Gruß Marcus

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.