mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Multiplikation/ Division


Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: edi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Rockstroh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.