Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > Schade: Es handelt hier nicht um Long variabelen; es geht um Single . > > > > Am moment arbeite ich an eine Lösung (gültig für alle Dezimale) mit alle Ziffern in vier Bytes, und der Position > > der Komma und das Zeichen in ein fünfter Byte. > > Bespiel: > > Zahl: -123456,8877 > > Long: 1234568877 > > 5er Byte: Zeichen=-, Ziffern vor der Komma=6 > > > > > Bisschen schwer zu verstehen, was du eigentlich willst. Jetzt verstehe ich das so, dass du in Basic > eine SINGLE variable ins EEPROM schreiben und dann auch wieder lesen willst. Dazu gibt es die > beiden Funktionen, die du in der Hilfe findest: > > Sub EEPROM_WriteFloat(pos As Word,val As Single) > Sub EEPROM_ReadFloat(pos As Word) As Single > > Alles ganz einfach... > > > > > > > > > > > Ich wolle Singles (32 bits = 4 bytes) in vier auffolgende Adresse in EEPROM speichern. > > > > > > > > > > > > Wie kann ich eine Single in vier Bytes aufteilen? (Biteshift ">>" functioniert nicht am Single) > > > > > > Oder gibt es vielleicht eine andere Lösung? > > > > > > > > > > Ich würde die Single in 2 Word aufteilen. Die oberen 16 Bit durch 0xFFFF Dividieren. > > > > > Die Division braucht ohnehin etwa die gleiche Zeit wie Shift Befehle und funktioniert bei Single. > > > > > Gruß > > > > > Ernst H. > > > > Irrtum - ich dachte an ULong - bei Single .. keine Ahnung > > > > > > egal ob long, dword oder unsigned long kannst du folgende Routinen verwenden - nur den > > > Datentyp entspr. anpassen! > > > Gruss Ulrich > > > > > > void EEPROM_WriteLong(word pos, long val){ > > > EEPROM_WriteWord(pos, val); > > > EEPROM_WriteWord(pos+2, val>>16); > > > } > > > long EEPROM_ReadLong(word pos){ > > > long l; > > > l=EEPROM_ReadWord(pos+2); > > > l=(l<<16) + EEPROM_ReadWord(pos); > > > return l; > > > }