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
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_programmierung_9.php?PHPSESSID=db2d7f1f95587e25907e94229afd6c59#5 Gruss Toni
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
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
Der Link ist nicht gut, der ist super! Ein Online-C-Buch von Anfang an. Stefan
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
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++; }
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.