Bascom Bit's eines Bytes auslesen

muellerjm

Neues Mitglied
28. Juli 2011
12
0
0
61
Sprachen
Hallo,

wie kann ich am besten auf die einzelnen Bits in einem Byte zugreifen. Einzelne Bits setzen geht mit BITS.

Bsp:

Dim A as Byte

A = 127

B= Bits (A, 7)

print B ' ergebnis: 255


Wie kann ich aber die einzelnen Bitwert und deren Position am besten abfragen? Die einzelnen sollen in meinen Programm "Flags" darstellen. Mir fällt da nur das shiften ein.


Wie immer Danke für die Hilfe....
 
Hallo Muellerjm!

Das Manipulieren oder Abfragen einzelner Bits in einem Byte ist einfacher, als du vielleicht denkst. :wink:


Manipulieren kannst du es folgendermaßen:
Code:
Dim Test_byte As Byte


Set Test_byte.1       
Reset Test_byte.1

#oder z.B. auch:
Test_byte.1 = 1
Test_byte.2 = 1
Test_byte.4 = 1
Test_byte.7 = 1
Test_byte.1 = 0



Das Abfragen funktioniert genauso.....
Code:
If Test_byte.1 = 1 Then
   NOP
Else
   NOP
End If



Ich nutze diese Varianten auch ganz gern, um z.B. "Steuerungsvariablen" in die Programme einzubauen.
Die einzelnen 8 Bits eines "Steuerungsbytes" nutze ich dann als Flags.

Grundsätzlich arbeitet BASCOM aber intern genauso.
Sobald du ein einzelnes Bit deklarierst.... also "Dim Bit1 As Bit" wird im Speicher durch BASCOM ein sogenannter "Bitcontainer" angelegt.
Dieser Bitcontainer wird solange mit einzelnen Bits ausgefüllt, bis alle 8 Bits "voll" sind.
Erst danach wird die nächste Speicherzelle (ein Byte) als Bitcontainer verwendet!


Beispiel Bitcontainer:
Code:
Dim Bit1 As Bit   'verwendet z.B. Speicherbereich &H0060

Dim Bit2 As Bit   'verwendet z.B. Speicherbereich &H0060
Dim Bit3 As Bit   'verwendet z.B. Speicherbereich &H0060
Dim Bit4 As Bit   'verwendet z.B. Speicherbereich &H0060
Dim Bit5 As Bit   'verwendet z.B. Speicherbereich &H0060
Dim Bit6 As Bit   'verwendet z.B. Speicherbereich &H0060
Dim Bit7 As Bit   'verwendet z.B. Speicherbereich &H0060
Dim Bit8 As Bit   'verwendet z.B. Speicherbereich &H0060


Dim Bit9 As Bit   'verwendet dann z.B. Speicherbereich [B]&H0061[/B]


Je nach Kenntnisstand in Punkto Programmierung kannst du dann sogar noch ein Overlay anwenden, oder sogar die Speicherzelle direkt abfragen.
Ich weiß aber nicht, ob das jetzt für dich interessant ist...... und obendrein nicht doch eher etwas für Fortgeschrittene. :wink:


Grüße,
Cassio :ciao:
 
Auweia, dass ist aber schön ausführlich beschrieben. Vielen Dank dafür. Jetzt wird sicher der ein oder andere Umweg oder Fehler vermieden. Echt prima wenn sich jemand so die Mühe macht - Virtuelleschachtelmercischenk;)

Da ich ein größeres Projekt in der Mache habe, kommen da bestimmt noch ein paar Fragen.
Gruß
Joachim
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)