Forum: Mikrocontroller und Digitale Elektronik BASCOM und Long


von Kurt (Gast)


Lesenswert?

Hallo Leute,

BASCOM AVR  holt mit
 Var_W = Highw(Var_l)
die zwei oberen Bytes raus.

Wie komm ich an die beiden unteren Bytes

loww geht nicht.

Wer stupst mich drauf.

Gruss Kurt

von Karl H. (kbuchegg)


Lesenswert?

Kurt schrieb:

> Wie komm ich an die beiden unteren Bytes
>
> loww geht nicht.

Ich kenn zwar BASCOM nicht, weiß daher nicht ob das so geht, aber:

einfach zuweisen und darauf vertrauen, das es auch in BASCOM so ist, 
dass das vorne überzählige (also das High-Word) dabei weggeschmissen 
wird.

von MWS (Gast)


Lesenswert?

1
Dim Var_l as Long
2
Dim Var_LW As Word At Var_l Overlay
3
Dim Var_HW As Word At Var_l +2 Overlay

Nichts zu danken :D

von H.Joachim S. (crazyhorse)


Lesenswert?

Ich denke auch, dass die einfache Zuweisung funktionieren wird.
Auf jeden Fall sollte mod 256 funktionieren.
Die Lösung von MWS wird so eine Art union wie in C sein? Wenns 
funktioniert, wohl die beste Lösung.

von neanderthaler (Gast)


Lesenswert?

Guckstdu das Manual:
-----
There is no LowW() function. This because when you assign a Long to a 
word or integer, only the lower part is assigned. For this reason you do 
not need a Loww() function. W=L will do the same.
-----

mit Höhlengruß,

von müC (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> einfach zuweisen und darauf vertrauen, das es auch in BASCOM so ist,
>
> dass das vorne überzählige (also das High-Word) dabei weggeschmissen
>
> wird.

Genau so isses.

@Kurt: Steht übrigens auch in der Hilfe zu HighW explizit drin.
Alternativ geht noch ohne Zuweisungsaufwand:

Dim Var_l as Long
Dim Var_lw As Word at Var_l Overlay
Dim Var_hw As Word at Var_l+2 Overlay

Jede Zuweisung an Var_l führt automatisch dazu, dass low und high word 
über Var_lw und Var_hw zugreifbar sind.

von Kurt (Gast)


Lesenswert?

Hallo Leute,
danke für die guten/hilfreichen Tips.

Var_w = Var_l

werd ich benutzen.
Das passt am besten.
Das andere/höherwertige Wort liefert Highw.


Gruss Kurt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.