Archiv verlassen und diese Seite im Standarddesign anzeigen : Byte umkehren
Hallo, ich habe folgendes Problem:
Ich empfange eine Bitfolge bei der das minderwertige Bit zuerst empfangen wird. Um mit dieser Bitfolge weiter zu rechnen müsste ich die Bitfolge umkehren, so das aus der Bitfolge z.B. 1000 = 8 die Folge 0001 = 1 (es soll nämlich eine 1 sein) rauskommt.
Kann mir jemand einen Tip geben wie ich das hinbekomme?
Gruß Nordi
zumgwadrad
10.07.2007, 19:52
Hi,
gibt es in Bascom Arays, also Felder?
Dann lies des Byte Bit für Bit in eines ein, Invertiere es mit ner einfachen if und Speicher des in nem Ausgangsarray!
Nicht schön aber einfach!
Hi,
kann man in Bascom die einzelnen Bits net direkt ansprechen?
Ich dachte in etwa so: (byte1 = empfangenes Byte)
Byte2.1 = Byte1.4
Byte2.2 = Byte1.3
usw.
MfG
@coCo ja das geht
Y = 0
For X = 7 To 0 Step -1
Byte2.x = Byte1.y
Incr Y
Next X
kolisson
21.07.2007, 01:21
versuchts doch mal mit dem rotate befehl:
'The ROTATE statement preserves all the bits
'so for a byte when set to 128, after a ROTATE, LEFT , the value will
'be 1
stefan_Z
21.07.2007, 15:19
versuchts doch mal mit dem rotate befehl:
'The ROTATE statement preserves all the bits
'so for a byte when set to 128, after a ROTATE, LEFT , the value will
'be 1
Ja, das ist doof geschrieben in der Hilfe... Bei 128/1 klapps natürlich. Aber mit 11010000 kommt dann z.B. 10100001 raus!
ROTATE verschiebt die Bits einfach (cool für Lauflichter ;- ) )
Was du machen willst ist ein logisches NOT.
Versuche mal Variable1 = NOT Variable1
Wenn die Aufgabe lautet
B.0 = A.7
B.1 = A.6
B.2 = A.5
...
B.7 = A.0
geht das am besten mit kurzem Inline-Assembler, weil du da ganz einfach über das Carry-Bit arbeiten kannst, was Bascom so nicht zuläßt
$asm
LDS r24, {A}
LDS r25, {B}
;------------------ 8 mal --------------
ROL R24
ROR R25
;------------------------
STS {B}, R25
$end asm
Ob 8-mal hintereinander oder eine Schleife, hängt davon ab, ob du Platz oder lieber Zeit sparen willst.
Hallo Nordi,
wenn du eine serielle Bitfolge empfängst, brauchst du doch kein Byte umzukehren, sondern nur die einzelnen empfangenen Bits in der richtigen Reihenfolge in das Byte hineinschieben.
Wenn bei dir das LSB zuerst ankommt, must du halt nach rechts (von links nach rechts) hineinschieben. Das LSB ist dann nach 8x schieben auch am LSB des Bytes angekommen.
Gruß Dirk
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.