Hallo

Du solltest besser durch 256 dividieren.

Ein 2-Byte-Wert ist 256*highbyte+lowbyte. Bit0 des Highbytes ist auch Bit8 der 16bit-Variablen und hat die Wertigkeit 2^8=256.
Mit 255 funktioniert es nur bei Werten die kleiner als 256*255-1 sind, in eine 16Bit-Variable passen aber 256*256-1=65535 Werte.

Klassisch macht man das wohl so wie bei der Baudratenberechnung:

highbyte = 16bit-Variable >> 8;
lowbyte = (uint8_t) 16bit-Variable;


Und zurückrechnen geht so:

16bit-Variable=256*highbyte+lowbyte;

Gruß

mic