- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 5 von 5

Thema: Jeweils 2 Bit mit einem byte "verknüpfen"

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.02.2005
    Ort
    Südtirol
    Beiträge
    283

    Jeweils 2 Bit mit einem byte "verknüpfen"

    Anzeige

    Praxistest und DIY Projekte
    Hi, jetzt hab ich schon wider ein problem:

    ich muß den wert 00,01 oder 10 mit in ein Byte schreiben und das an die entsprechende stelle also auf bit 1und 2 , 3und 4 , 5und 6 oder 7und 8
    wobei die jeweils anderen Bits nicht verändert werden dürfen. in einer Variable steht die stelle an die die 2 Bits kommen und in ner anderen der Wert, beide sind vom typ Byte

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Hi,

    Du kannst in einer Byte-Variable die einzelnen Bits ansprechen:
    Code:
    Dim Bytevar as byte
    Dim Deinevar as byte
    Dim Stelle_1 as byte
    Dim Stelle_2 as byte
    
    ....
    
    Stelle_2 = Stelle_1 +1
    
    Bytevar.Stelle_1 = Deinevar.0
    Bytevar.Stelle_2 = DeineVar.1
    
    ....
    Ist nur mal so in der Rohfassung runtergetippt, vielleicht hilft es Dir ja auf die Schiene...

    Bei den Port-Registern ist es eigentlich ähnlich, z. B. PortB.4=1.
    Da bin ich mir jetzt aber nicht sicher, ob man das Bit per Variable angeben kann. Ich meine, bei Ports funzt das nicht mit Bascom...

    Grüße

    Torsten

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Ich würde es z.B. so machen

    Code:
    Dim bPos As Byte
    Dim bWert As Byte
    Dim bErgebnis As Byte
    Dim bPos_wert As Byte
    Dim bEndergebnis As Byte
    
    bPos = 3
    bWert = &B11
    bErgebnis = &B11000001
    
    bPos_wert = bWert
    Shift bPos_wert , Left , bPos
    bEndergebnis = bErgebnis Or bPos_wert
    
    End
    In bEndergebnis steht dann &B11011001

    Gruß

    Rolf

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.02.2005
    Ort
    Südtirol
    Beiträge
    283
    hi, danke für die hilfe!

    ich habs grad mal versucht, aber mit der Lösung von Rolf funzt es nur teilweise.
    Wenn so ein Bitpaar zB &B01 hat, und dann auf &B10 gesetzt wird, dann steht im Byte &B00000011 was aber nicht sein darf, die Zustände dürfen nur &B01 oder &B10 oder &B00 haben

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    ne, du musst natürlich beide bit neu schreiben. bei der or function ist klar dass es dann 11 ist.

    entweder das ganze vorher komplett löschen und dann mit OR neu schreiben, oder direkt setzen oder je nach 0 oder 1 mit AND/OR arbeiten. Aber rotate und die finctions sind schon eine gute kombination
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad