ich möchte eine unsigned variable von 12 bit in zwei Variablen teilen: die erste von 8 Bit und die zweite von 4 Bit. wie kann ich es mit C programmieren? übrigens es geht um Microcontroller Programmierung:ATmega
Ich nehme jetzt einfach mal an, dass Du einmal die unteren 8bit und zum anderen die oberen 4bit der 12bit variablen meinst ?! In diesem Fall: unsigned int 12bit_var unsigned char lower; unsigned char upper; lower = (unsigned char)(12bit_var & 0x00FF); upper = (unsigned char)(12bit_var & 0x0F00);
eher so:
1 | unsigned uint16_t v12bit_var |
2 | unsigned uint8_t lower; |
3 | unsigned uint8_t upper; |
4 | |
5 | lower = (uint8_t) ( v12bit_var & 0x00FF); |
6 | upper = (uint8_t) ( (v12bit_var & 0x0F00) >> 8 ); |
@Stefan hast bei upper das shiften vergessen ;)
1 | upper = (unsigned char)((12bit_var & 0x0F00) >> 8); |
Danke Matthias, das wollt ich grad auch anmerken, dass das net so einfach ist, wie Stefan das beschrieben hat
junfes,ich bin durch einander gekommen. könnt ihr mir bitte jede Zeile erklären? danke.
>übrigens die 16 Bit Variable ist schon in 2Byte terlegt!!!!
Achso. Ja, wie hast denn das gemacht, poste das doch mal
Wenn du die 16-Bit Variable schon in zwei einzelne Bytes zerlegt hast wo ist dann das Problem? Wie oben schon geschrieben wurde gibt es keine 4-Bit Datentypen.
Mathe Fan wrote:
> übrigens die 16 Bit Variable ist schon in 2Byte zerlegt!!!!
Ach je, der Mathe Fan wieder. Bitte kauf Dir endlich ein C-Buch! Und
lies es auch. Dann erkennst Du vielleicht auch, dass Du die Variable,
wenn sie denn schon in zwei Byte-Variablen aufgeteilt ist, nicht weiter
aufteilen kannst. Ein Byte ist die kleinste unter C auf einem
8-Bit-System ansprechbare Einheit.
nein,ich habe sie nicht zerlegt,das ist der Timer1 und ist schon in 2 Bytes zerlegt. und ich hab eine Variable mit 12 Bits,die ich in 2 Teile zerlegen muss:8 und 4 Bits.und so kann ich den Inhalt des Timers in der 2 Teilen kopieren.
Mathe Fan wrote: > nein,ich habe sie nicht zerlegt,das ist der Timer1 und ist schon in 2 > Bytes zerlegt. > und ich hab eine Variable mit 12 Bits,die ich in 2 Teile zerlegen muss:8 > und 4 Bits.und so kann ich den Inhalt des Timers in der 2 Teilen > kopieren. In C kannst Du auf 16-Bit-I/O-Register (bis auf wenige Ausnahmen) direkt als solche zugreifen. Dafür brauchst Du die Variable nicht zu zerlegen. Und ein Tiomer-I/O-Register ist KEINE Variable, sondern ein I/O-Register. EDIT: Und versuch bitte mal, Deine Anfragen so zu formulieren, dass es für andere auch ohne tausend Rückfragen verständlich ist. Wenn Du erst schreibst, Du weißt nicht, wie Du eine Variable aufteilen kannst, und dann sagst, die Variable sei schon aufgeteilt, dann macht das wenig Sinn.
hey du johnny-m ich weiß es schon und deine verdammte scheiße Hilfe brauche ich auch nicht. ein arrogante mensch wie du hab ich niemamls begegnet. ich bin anfänger und motiviert Microcontroller zu programmieren. eins muss dir klar sein,ich lass mich nicht so schnell von jemandem wie du demotivieren!!!!!!!!
Mathe Fan wrote: > hey du johnny-m ich weiß es schon und deine verdammte scheiße Hilfe > brauche ich auch nicht. > ein arrogante mensch wie du hab ich niemamls begegnet. > ich bin anfänger und motiviert Microcontroller zu programmieren. > eins muss dir klar sein,ich lass mich nicht so schnell von jemandem wie > du demotivieren!!!!!!!! OK, damit ist alles gesagt!
ich formuliere meine Frage: ich will ersten 12 Bit eines 16 Bit Timers in 12 Bit Variable kopieren. wie soll ich es machen?
Sorry aber ich muss Johannes voll zustimmen. Erwarte bei solchen Reaktionen bitte nächstes mal keine Hilfe mehr. kopfschüttel
@ Mathe Fan (bob37) >hey du johnny-m ich weiß es schon und deine verdammte scheiße Hilfe >brauche ich auch nicht. >ein arrogante mensch wie du hab ich niemamls begegnet. >ich bin anfänger und motiviert Microcontroller zu programmieren. >eins muss dir klar sein,ich lass mich nicht so schnell von jemandem wie >du demotivieren!!!!!!!! http://www.duden.de http://www.amazon.de/Dativ-ist-dem-Genitiv-sein/dp/3462034480/ref=pd_bbs_sr_1/302-0447979-4536062?ie=UTF8&s=books&qid=1187255560&sr=8-1 SCNR ;-) MfG Falk
@Mathe Fan: Johnny ist immer hart im Ton, aber er hat recht. DU musst dein Problem so formulieren, dass wir (andere) es nachvollziehen können. Also kannst du nicht erst schreiben: >>ich möchte eine unsigned variable von 12 bit in zwei Variablen teilen und dann: >>übrigens die 16 Bit Variable ist schon in 2Byte zerlegt!!!! Also Was denn nun??? Und die vielen Ausrufezeichen suggerieren, dass du jemand versucht was zu sagen, aber DU Hilfe haben MÖCHTEST... Also Poste doch mal die Deklaration, sowie den Code, wo die 16/12bit-Variable (was nun??) "befüllt" wird... Und dann nochmal, was genau soll gemacht werden..
danke Matthias du hast schon recht. ich möchte ein 12 bit Variable in zwei Teile zerlegen.
>ein 12 bit Variable in Es gibt keine 12bit Variablen (in C). vielleicht ja in Bascom ;-)) POSTE MAL: >>Also Poste doch mal die Deklaration, sowie den Code, wo die >>16/12bit-Variable (was nun??) "befüllt" wird... !!
@Matthias:
> Johnny ist immer hart im Ton,...
Nicht immer. Nur, wenn sich ein Fragensteller sichtbar absolut keine
Mühe bei der Formulierung seiner Frage gibt und vorher schon in mehreren
Threads mit Stilblüten unterschiedlicher Art geglänzt hat (s.a. dezenter
Hinweis von "Hmmm...").
Ich hab auch keine Probleme damit, wenn jemand kein perfektes Deutsch
hinlegt und ich spare mir daher auch i.d.R. Hinweise auf grammatische
Fehler. Bei manchen bringt es auch was, wenn man deutlich darauf
hinweist, dass mit einer solchen Fragestellung niemand wirklich konkret
was anfangen kann. Wenn derjenige dann aber ausfällig wird und mit
Kraftausdrücken um sich wirft, dann ist eben H&M verloren...
>H&M
Wobei das lieber in eine Brauerei sollte...
;-)
Ich merk schon, das Thema driftet ab..
Gegenfrage: Wenn du schon mit einem Word den timer register auslesen kannst, wieso willst Du den dann zerlegen?? Falls du wirklich die einzelnen Byte haben willst dann ließ sie doch schon per inline asm aus,..(meine meinung, geht schneller und expliziter, ist ja aber bekanntlich geschmackssache),... Also nochmal zum mitschreiben: Es ist bekannt was du machen willst, aber wieso?? (Auß dieser Fragestellung ergaben sich schon so manches mal eine neue herangehensweise,..) grüüüüüße p.s.: ich liebe senf
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.