Forum: Mikrocontroller und Digitale Elektronik Multiplikation/ Division


von Wolfgang (Gast)


Lesenswert?

Hallo,

seit längerem suche ich eine Multiplikations- oder Divisionsroutine. Ich 
bin ein relativer Anfänger. Angeblich brauche ich dafür eine 32 bit 
Multiplikation, gefunden habe ich noch keine brauchbare Routine.

Mein Problem, ich lese Werte (Hex) in Speicher (89AT4051 Atmel) ein:

53H (Tausender), 52H (Hunderter), 51H Zehner und 50H (Einer) Werte aber 
leider in Feet. Um daraus Meter zu machen, kann man das Feetergebnis 
entweder mit der festen Zahl 0,308 multiplizieren, oder durch die Zahl 
3,08 dividieren. Die Höhenwerte (Feet) verändern sich teilweise im 
Minutentakt. Die Genauigkeit im Ergebnis soll vor dem Komma enden.

Ich habe schon in Foren nachgefragt und gute Tipps bekommen (Routinen 
Beschreibungen in  englisch, Routinen in anderen Programmiersprachen, 
ich soll bei Google suchen, etc.)  aber eine funktionierende Lösung noch 
nicht.

Kann mir hier jemand helfen?

Gruß

Wolfgang

von crazy horse (Gast)


Lesenswert?

Also daß multiplizieren mit 0,308 dasselbe Ergebnis liefert wie eine 
Division mit 3,08, bezweifle ich erst mal.
Ansonsten solltest du auf jeden Fall erst mal deine Eingangsgröße in 
eine Dualzahl wandeln (mit BCD-Zahlen rechnet es sich nur ganz 
umständlich). Gar kein Problem ist das Ganze, wenn du irgendeinen 
Hochsprachen-Compiler verwenden würdest (C, Basic oder Pascal), dann 
kannst du das ganz bequem mit Gleitkommazahlen verarbeiten.
Mit Assembler geht es auch. Die Zahl wird mit 308 multipliziert, 
anschließend durch 1000 geteilt, schon hast du eine Multiplikation mit 
0,308. Auf jeden Fall mußt du beachten, daß das Zwischenergebnis noch in 
deine Variable passt, also mit long-Variablen arbeiten, 4byte. Die 
entsprechenden Multiplikations/Divisions-Routinen findest du sicher im 
Netz.

von edi (Gast)


Lesenswert?

Wolfgang,

gehe nach   8052.com    und schaue auf der linken Seite nach:
CODE LIBRARY
Dort findest Du  '' Math Routines ''  von Marshal.
Mit dem Material kommst Du an Dein Ziel.

Pass auf ,dass Du dezimal nicht mit binaer verwechselst.
Viel Spass beim Dazulernen !

ed

von Jörg Rockstroh (Gast)


Lesenswert?

Du kannst auch das Tutorial auf 8052.com lesen. Dort sind die einzelnen 
Rechenarten für 16-bit erklärt. Das Ganze auf 32-bit zu erweitern, 
dürfte nicht mehr allzu schwierig sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.