-
-
Moderator
Robotik Visionär
Hallo
"if ((wert & 0x00000001) == 0x00000001) bits32 = 1;"
Das niederwertigste Bit heißt 32? Das würde ich überdenken.
Nicht berauschend kompakt, dafür aber noch halbwegs übersichtlich geht's mit vordefinierten Arrays mit den Wertigkeiten:
uint32_t wertigkeit[32]={1,2,4,8,16,32, .... ,2^30,2^31} // *gg
Das kann man dann in einer Schleife abklappern:
for(i=0; i<32; i++) if(wert & wertigkeit[31-i]) senden(1); else senden(0); // MSB zuerst senden.
... sendet so das MSB zuerst. Empfangen könnte man dann etwa so:
aktion=0;
for(i=0; i<8; i++) if(wert & wertigkeit[31-i]) aktion+=wertigkeit[31-i]; // Bits 24-31
empf=0;
for(i=0; i<24; i++) if(wert & wertigkeit[23-i]) empf+=wertigkeit[23-i]; // Bits 0-23
Ich bin nicht sicher ob das so auf Anhieb funktioniert wegen der MSB/LSBs. Zusätzlich weiß ich auch nicht ob ich das Thema nicht völlig verfehlt habe.
erzeugt die Codebox.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen