mikrocontroller.net

Forum: Compiler & IDEs 1 Byte unterteilen


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

da ich erst mit C angefangen habe komme ich bei dem Problem nicht
weiter. Ich moechte 1 Byte unterteilen in upper nibble und lower nibble
. Danach wollte ich das upper nibble + "0000" aendern.
Leider haenge ich an der Bitmanipulation :/

Waere nett wenn mir jemand das kurz erklaeren koennte.


Mfg

Dirk

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lower = byte % 16;
upper = byte / 16;


Peter

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk

Vielleicht hilft Dir das weiter !

Link zum OpenBook "C von A bis Z" Kapitel 9.5 Bit-Operationen.

http://pronix.de/modules/C/openbook/c_programmieru...


Gruss

Toni

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ganz verstehe ich deine Frage nicht, vielleicht hilft das weiter:

char wert;  // das ursprüngliche Byte
char ln;    // low nibble
char hn;    // high nibble

ln = wert & 0x0F;  // die oberen vier Bit löschen
hn = wert >> 4;    // oberen vier Bit nach rechts schieben
hn = wert & 0x0F;  // und die oberen zur Sicherheit löschen
hn = hn + 0;

wobei mir nicht klar ist wozu du 0 dazuzählen willst, ändert ja nichts
am Wert, aber vielleicht war die Frage ja ganz anders gemeint?

grüsse leo9

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich danke euch .... der link ist gut... Ich muss zur seriallen
Kommunikation den Wert in 2 x 4 Bit aufsplitten und mit jeweils 4 Bit
Dummy zusaetzlich ausgeben.

MFg

Dirk

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Link ist nicht gut, der ist super! Ein Online-C-Buch von Anfang an.

Stefan

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@leo9 ich habe deine variante genutzt. Simuliert sowas Avr Studio 4.08
soetwas nicht?
Gebe ich die Variable als Watch an sagt er "not in scope" und wenn
ich die Zeilen einzeln durchlaufe ueberspringt er die Befehle.

unsigned char ln;  // low nibble
unsigned char hn;  // high nibble
unsigned char wert;  // das ursprüngliche Byte
wert = 0x1F;
ln = wert & 0x0F;  // die oberen vier Bit löschen
hn = wert << 4;    // oberen vier Bit nach links schieben
hn = hn + 0;          // + binaer 0000

Kann mir jemand erklaeren was ich falsch mache? oder liegt dieses an
AVR Studio?


Mfg

Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich hatte diese Sachen in einer Funktion komischerweise uebernimmt AVR
Studio 4.08 nicht die Deklaration der Variablen und ueberspringt somit
den komplettn C Syntax. Richte ich die Variablen noch vor der Main
Funktion ein geht es. Eigentlich sollte es doch auch funktionieren,
wenn ich die Variablen in der Funktion dimensoniere.
AVR Studio zeigt in diesen Fall auch die Variablen im Watch Window
nicht an (not in scope).



include <avr/io.h>
#include <inttypes.h>

//unsigned int c;
unsigned char ln;  // low nibble
unsigned char hn;  // high nibble
unsigned char wert;  // das ursprüngliche Byte
// unsigned char rs;    // hiermit funktioniert die Simulierung

int main(void)
{
wert = 0x1F;
ln = ln + hn;
writecmd(0x03);
while(1);
}


void writecmd(unsigned char data)
{
unsigned char rs;  // hiermit geht es nicht
  data++;
  rs++;
}

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.