Forum: Mikrocontroller und Digitale Elektronik BASCOM AVR 2*Byte -> Word


von Werner Just (Gast)


Lesenswert?

Hallo,

wie fasse ich 2 Bytes zu einem Word zusammen?
Word = HighByte * &F100
Word = Word + LowByte

oder mit Shift, oder mit ...

Was ist die eleganteste, was die Speicher sparenste und was die
schnellste Variante?

BASCOM hat für den umgekehrten Weg zwei eigene Funktionen
LowByte  = low(Word)
HighByte = high(Word)

Fürs Zusammenfassen scheint es aber nichts zu geben.

Ciao,
Werner

: Gesperrt durch User
von ThomasB (Gast)


Lesenswert?

hallo werner:
Vieleicht mit MAKEINT(lowbyte,Higebyte)
siehe Helpfile von BascomAVR

mfg ThomasB

von ThomasB (Gast)


Lesenswert?

hallo werner:
Vieleicht mit MAKEINT(lowbyte,Highbyte)(sorry)
siehe Helpfile von BascomAVR

mfg ThomasB

von Werner Just (Gast)


Lesenswert?

Hallo Thomas

Danke!

> siehe Helpfile von BascomAVR
ich konnt nicht ganz glauben, daß es dafür keinen Befehl gibt, aber
gefunden hab ich ihn nicht.

Zur Ehrenrettung, bei MAKEINT ist High und Low verlinkt, aber umgekehrt
nicht. Wenn einem dann nicht MSB & LSB als Suchworte einfallen, läuft
man ins leere.

Ciao und gute Nacht

Werner

P.S. ich nerv jetzt öffter :teufel: ;)

von Werner Just (Gast)


Lesenswert?

Hallo,

irgendwie komm ich mit der BASCOM Hilfe auf Kriegsfuß :-(

Wenn es einen Befehl MAKEINT gibt, dann gibt es bestimmt auch einen,
der aus zwei Wörtern oder 4 Bytes ein Lang macht.

Ich find ihm nicht! :-(((

Ciao,
Werner (blutiger Anfänger)

von ThomasB (Gast)


Lesenswert?

Hallo Werner
Der Befehl "MakeLONG" gibt es bei BascomAVR nicht.
Es gibt die Befehle "MakeINT,MakeBCD und MakeDEC"
Und MakeNIX ;-))

von formtapez (Gast)


Lesenswert?

> Was ist die eleganteste, was die Speicher sparenste und was die
> schnellste Variante?



Dim Bytearray(2) As Byte
Dim Wordvariable As Word At Bytearray Overlay


Bytearray(1) = 25
Bytearray(2) = 17
Print Wordvariable


MfG
formtapez

von Werner Just (Gast)


Lesenswert?

Hallo formtapez,

> Dim Wordvariable As Word At Bytearray Overlay


Ich hatte mich schon gefragt (aber noch nicht gesucht) wo sich die
Pointer in BASCOM verstecken.

Schön ist, das ich auf dem Weg auch elegant die einzelnen Bytes einer
Word- oder Longvariablen manipulieren kann. Kann ich gut gebrauchen
:-))

Ciao,
Werner

von Jens S. (jens_s56)


Lesenswert?

Dim Adresse As Word At $160
Dim Low_adresse As Byte At $160 Overlay
Dim High_adresse As Byte At $161 Overlay

Jetzt kannst Du 16Bit breit Adresse ansprechen und Low_adresse / 
High_adresse die einzelnen Bytes

schreib die Definition ziemlich am Anfang, bevor $160, $161 durch andere 
Variablen belegt ist

von Karl H. (kbuchegg)


Lesenswert?

Jens S. schrieb:

> schreib die Definition ziemlich am Anfang, bevor $160, $161 durch andere
> Variablen belegt ist

Und warum soll er sich dem Risiko von Adresskonflikten aussetzen, wenn 
es auch gänzlich ohne geht.

Ausserdem: wenn er es nach 10 Jahren immer noch nicht raus hat, dann 
sollte er sich besser ein anderes Hobby suchen.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.