-         

Ergebnis 1 bis 8 von 8

Thema: Byte umkehren

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.06.2006
    Beiträge
    6

    Byte umkehren

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.07.2004
    Ort
    Nürnberg
    Alter
    36
    Beiträge
    186
    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!
    Ich bin keine Signatur ich mach hier nur sauber

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485
    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

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687
    @coCo ja das geht

    Code:
    Y = 0
    For X = 7 To 0 Step -1
      Byte2.x = Byte1.y
      Incr Y
    Next X

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    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

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Zitat Zitat von kolisson
    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

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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
    Code:
    $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.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •