Gast
#28686
Das folgende Problem hatte ich schoneinmal in diesem Forum angesprochen.
Damals konnte mir geholfen werden, es ging um die Zusammenstellung von 4
x 8-Bit Variablen zu einer 32-Bit-Variable.(für einen mega128).
Jetzt habe ich das gleiche Problem für einen 16-Bit-Controller(XC161CJ).
Der Unterschied ist, daß eine Variable 16-Bit groß ist.
Hier das Beispiel:
unsigned byte vLow = 21; 8-Bit-Variable
unsigned word vMid = 6543; 16-Bit-Variable
unsigned byte vHigh = 78; 8-Bit-Variable
unsigned long vErgebniss; soll das 32-Bit-Ergebniss enthalten
vErgebniss = ((unsigned byte)vLow |
(unsigned word)vMid<<16 |
(unsigned byte)vHigh<<24);
Als Ergebniss möchte ich: vErgebniss = 87654321, erhalten.
Mein C166-Compiler liefert jedoch nur Müll.
Was mach' ich da falsch?
Schönen Gruß Norbert