Hey, ok vielleicht ist es auch nur mal Zeit für eine Pause aber ich habe folgendes Problem! habe auf nem AVR-Controller eine Variable uint16_t test dann möchte ich bit 0 bis 5 an PORTC und bit 6 bis 11 an PORTD ausgeben..... die restlichen Bits sind erstmal egal. irgendwie XOR und NOR ich mir einen zurecht! PORTD = (test) << PD0 | (test>>1) << PD1 ......... etc. klappt nicht... hmmh?
Rumfreund schrieb: > ok vielleicht ist es auch nur mal Zeit für eine Pause aber ich habe > folgendes Problem! Pausen sind immer gut. :-) Hast du dir schon mal diese tolle Seite durchgelesen? Bitmanipulation Da findest du wahrscheinlich alles, was du brauchst.
Hallo, du kannst die benötigten Bits mit einer Maske und einem binären UND "ausschneiden" und dann mit shiften auf die richtige Position bringen und dann einfach ausgeben. Gruß Kai
Rumfreund schrieb: > Hey, > ok vielleicht ist es auch nur mal Zeit für eine Pause aber ich habe > folgendes Problem! > > habe auf nem AVR-Controller > eine Variable > uint16_t test > > dann möchte ich bit 0 bis 5 an PORTC und > bit 6 bis 11 an PORTD ausgeben..... > > die restlichen Bits sind erstmal egal. > > irgendwie XOR und NOR ich mir einen zurecht! > > PORTD = (test) << PD0 | (test>>1) << PD1 ......... etc. > > klappt nicht... hmmh? den Kot versteht ja auch kein Schwein. Schon gar nicht der Compiler.
1 | PORTC = (uint_8)(test & 0x3F); |
2 | PORTD = (uint_8)((test >> 6) & 0x3F); |
Freu dich nicht zu früh. Du erklärst jetzt, für jeden verständlich, warum das so funktioniert. Das sind die absoluten Basics. Das musst du im Schlaf beherrschen. mfg.
Juups stimmt hatte die Maske vergessen.... nem Freund des Rums kann das schon mal an einem Freitagabend passieren.... das ist schlimmer als Schlaf ;)
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.