Byte aus einem Wort auslesen

phil122

Active member
Beiträge
26
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo zusammen,

ich hab ein Wort und möchste gern das Low und High Byte aus lesen.

gibt es dazu eine schnell schreibweiße wie bei dem einzeln bits mit variabel.0(bit)

Danke im Voraus
 

thomass5

Well-known member
Beiträge
2.678
Punkte Reaktionen
335
Gelöscht, weil ich nicht lesen konnte...

So, Tapatalk muss ich noch lernen. Hab die Rubrik übersehen

Thomas

Wähle einen Beruf, den du liebst,und du brauchst keinen Tag in deinem Leben mehr zu arbeiten. Konfuzius
 
Zuletzt bearbeitet:

MasterOhh

Well-known member
Beiträge
1.543
Punkte Reaktionen
371
Zuviel Werbung?
->Hier kostenlos registrieren
In TwinCAT (little Endian):

Low Byte
Code:
LowByte := WORD_TO_BYTE(Wort);

High Byte
Code:
HighByte := WORD_TO_BYTE(SHR(Wort,8));

WORD_TO_BYTE sollte immer die 8 niederwertigsten Bits in das Byte kopieren. Der Rest wird einfach abgeschnitten.
Um an die 8 höherwertigen Bits zu kommen, muss man also erstmal vorher alle Bits um 8 Stellen nach rechts schieben (Shift Right).

Hoffe ich habe keinen Mist verzapft, war zu faul zum testen ;)
 
OP
P

phil122

Active member
Beiträge
26
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
irgendwie stand ich gestern auf schlauch ....


natürlich die einfachste form ist es einfach die einzelne Bytes auszugeben:

meinword AT %MW50

highbyte AT %MB51

lowbyte AT %MB50

Aber danke noch für eure Antworten !
 

Oberchefe

Well-known member
Beiträge
2.269
Punkte Reaktionen
363
wenn ich das noch richtig im Kopf habe funktioniert das bei Codesys aber nicht, MW hat die halben Adressen von MB.

also so:

Code:
meinword AT %MW[COLOR=#ff0000]25[/COLOR]

highbyte AT %MB51

lowbyte AT %MB50

oder so:
Code:
meinword AT %MW50

highbyte AT %MB[COLOR=#ff0000]101[/COLOR]

lowbyte AT %MB[COLOR=#ff0000]100[/COLOR]

Ich würde aber die Rechenvariante bevorzugen, absolute Adressen im ganzen Programm verteilt findet später keiner mehr
 
Oben