PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 10bit hochzählen



Torben22
14.03.2009, 23:40
Hallo!

Ich möchte gerne 10 bit hochzählen

also..:

0000000000
0000000001
0000000010
usw..

und anschließend jeden ziffer als einzelnes Bit haben..!

Hat jemand eine Ahnung wie das gehen könnte??


mfG Torben

Danke für jede Hilfe!

Vitis
14.03.2009, 23:47
dim temp_word as word at &hd0
dim low_byte as byte at &hd0 overlay
dim high_byte as byte at &hd1 overlay
dim bit_0 as bit
dim bit_1 as bit
etc. bis
dim bit_10 as bit

do
incr temp_word
if temp_word >1023 then temp_word=0

bit_0 = low_byte.0
bit_1 = low_byte.1
etc. bis
bit_10 = high_byte.1
loop

BlueNature
15.03.2009, 02:52
Servus,

ich hoffe das von mir eben geschreieben Beispiel hilft dir weiter, ich teste einfach aufgrund der Byte-Position und der Bit-Position in einem Array die relevante Zahl.



Dim Output(128) As Byte
Dim InWert As Word
Dim BitWert As Byte
Dim ByteWert As Byte
Dim TmpByte As Byte
Dim n As Byte

InWert = {DeinWert}

BitWert = InWert Mod 8
ByteWert = Int(InWert) + 1

For n = 1 To 128
If n = ByteWert Then
TmpByte.BitWert = 1
Output(n) = TmpByte
Else
Output(n) = &h00
End If
Next n


Danach steht dir jedes Bit als Ergebniss in Byte und Bit in der Form:

Zustand 0: If Output(1).0 = 1 Then ...
...
Zustand 1023: If Output(128).7 = 1 Then ...

zur Verfügung.

Grüße Wolfgang

for_ro
15.03.2009, 10:38
Ich möchte gerne 10 bit hochzählen

Also hast du eine Word-Variable, die du hochzählst.



und anschließend jeden ziffer als einzelnes Bit haben..!


Jedes bit kannst du über
MyVariable.MyBit adressieren.
MyBit kann bei einer Word oder Integer Variablen von 0 bis 15 gehen.
Das geht auch mit Long, dann kann MyBit von 0-31 sein.

Wofür du da ein Array brauchen solltest mit 1024 If-Abfragen oder ein Overlay (besonders mit festen Adressen) sehe ich nicht.

Gruß

Rolf

BlueNature
15.03.2009, 11:26
Wofür du da ein Array brauchen solltest mit 1024 If-Abfragen oder ein Overlay (besonders mit festen Adressen) sehe ich nicht.
...
Jedes bit kannst du über
MyVariable.MyBit
adressieren.


Ist sehr gut möglich das er das meint was du beschreibst und will wirklich nur die 10 Bits im Word einzeln zugreifen. Ist nicht so eindeutig geschrieben was "Ziffer" sein soll. Dann ist Dein Ansatz natürlich der korrekte in dem Fall. Ich habe eben ohne Overlay den Code entworfen, weil Overlays schnell das Chaos auslösen wenn man nicht wirklich fit ist.

Grüße Wolfgang