Zahlen in typischen Mikrocontrollern haben überhaupt keine Dezimalstellen. Sie sind binäre ganze Zahlen. In der Maschine wird keine Dezimalstelle verwendet. Mit dem Compiler oder Assembler können Sie möglicherweise Konstanten auf diese Weise angeben, diese werden jedoch in Binärdateien konvertiert, bevor der Computer sie sieht.
Sie können jedoch für die ganzzahligen Werte entscheiden, welche Einheiten Sie möchten. Angenommen, Sie möchten Dollars in einem Mikro darstellen. Es kann nicht von Haus aus 3,21 Dollar machen, aber es könnte 321 Cent machen. Das Mikro arbeitet nur mit dem Wert 321, aber Sie wissen, dass es Einheiten von 1/100 Dollar darstellt.
Dies ist nur ein Beispiel, um das Konzept beliebiger Einheiten zu veranschaulichen. Oft werden Zahlen mit mehreren binären Bruchbits dargestellt. Das ist gleichbedeutend damit jede Zählung mit einem Wert von 2 für -N , wobei N die Anzahl der Teilbit ist. Diese Darstellung wird als "Festpunkt" bezeichnet. Sie entscheiden im Voraus, wie viel Auflösung Sie benötigen, und tun so, als ob sich rechts vom imaginären Binärpunkt genügend Bits befinden, um diese Auflösung zu unterstützen. Angenommen, Sie müssen etwas mit einer Auflösung von mindestens 1/100 darstellen. In diesem Fall würden Sie mindestens 7 Bruchbits verwenden, da 2 7 = 128. Das ergibt tatsächlich eine Auflösung von 1/128.
Die Maschine hat keine Ahnung, dass dies geschieht. Diese Zahlen werden als normale Ganzzahlen addiert und subtrahiert, aber alles funktioniert immer noch. Es wird etwas schwierig, wenn Sie Festpunktwerte multiplizieren und dividieren. Das Produkt zweier Festpunktwerte mit N Bruchbits hat 2N Bruchbits. Manchmal behalten Sie einfach die Tatsache im Auge, dass die neue Zahl 2N Bruchbits enthält, oder manchmal verschieben Sie sie um N Bits nach rechts, um zur gleichen Darstellung wie zuvor zurückzukehren.
Gleitkomma ist dasselbe, aber die Anzahl der Bruchbits wird zusammen mit dem ganzzahligen Teil gespeichert, damit diese Anpassung zur Laufzeit vorgenommen werden kann. Das Ausführen von mathematischen Operationen an Gleitkommazahlen kann eine Reihe von Zyklen dauern. Gleitkomma-Hardware erledigt dies alles für Sie, damit die Vorgänge schnell abgeschlossen werden. Die gleichen Manipulationen können jedoch auch in der Software durchgeführt werden. Es gibt keinen Grund, warum Sie keine Unterroutine schreiben können, um zwei Gleitkommazahlen hinzuzufügen, nur dass dies viel länger dauern würde als dedizierte Hardware, die dasselbe tut.
Ich habe ein 3-Byte-Gleitkommaformat für 8-Bit-PICs definiert und eine Reihe von Routinen geschrieben, um sie zu bearbeiten. Mikrocontroller verarbeiten normalerweise reale Werte mit einer Genauigkeit von höchstens 10 oder 12 Bit. Mein Gleitkommaformat verwendet 16 Bit Genauigkeit, was für mehrere Zwischenberechnungen ausreicht.
Ich habe auch ein 32-Bit-Format für die 16-Bit-PICs. Dies verwendet ein 16-Bit-Wort für die Mantisse, was die Berechnungen beschleunigt, da diese PICs jeweils mit 16 Bit arbeiten können.
Diese Routinen sind in meiner Version PIC Development Tools enthalten . Überprüfen Sie nach der Installation Dateien mit dem Namen "fp24" im Verzeichnis SOURCE> PIC und "fp32f" im Verzeichnis SOURCE> DSPIC.