PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Jeweils 2 Bit mit einem byte "verknüpfen"



kalletronic
23.11.2007, 21:47
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

Torsten_G
23.11.2007, 22:30
Hi,

Du kannst in einer Byte-Variable die einzelnen Bits ansprechen:


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

for_ro
23.11.2007, 22:39
Ich würde es z.B. so machen



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

kalletronic
24.11.2007, 15:19
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

T.J.
24.11.2007, 22:00
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