www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Suche Routine zum Dividieren zweier 16 Bit Zahlen


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich benötige eine Routine zum Teilen zweier 16 Bit Zahlen durcheinander, 
habe bisher mit den Beispielen in der Codesammlung recht wenig anfangen 
können(8Bit)...
Wahrscheinlich ist es gar nicht sonderlich schwer aber irgendwie komme 
ich nicht drauf.

Vorab schon mal Danke für alle helfenden Beiträge

-Hans

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach sollte übrigens in Assembler sein!!!

Autor: Norbert Lieven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Division ist doch eine fortgesetzte Subtraktion.
Statt a:b wird solange b von a subtrahiert bis ein Überlauf entsteht. 
Nach jedem Subtraktionsvorgang musst du einen zuvor auf 0x00-gesetzten 
Zähler um 1 inkrementieren. Entsteht ein Überlauf
(Carrybit gesetzt) war b schon kleiner als a. Also zum Schluß wird b mit 
a addiert und der Zähler um 1 dekrementiert.
Im Zähler steht nun der Quotient aus a:b, und Sumationregister
(von a - b)steht der Rest.

Ein Nachteil dieser Softwaredivision ist erkennbar: Wenn du
65535 : 1 rechnest, dann wird die Summationsschleife 65535mal
durchlaufen. Naja, je nach Clock könne das einige mSek. sein.

Schönen Gruß   Norbert

Autor: Norbert Lieven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, hab'n Fehler in Zeile 4. Dort muß es heißen:
......war a schon kleiner als b.

Norbert

Autor: hammer_c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

die alte Subtraktions-Methode ist derbe langsam...

schau besser mal hier: http://elm-chan.org/column_list_e.html

ciao Christian

Autor: Mike (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

AVR Applikation 200 und 200b sind fertige Routinen.

Mike

Autor: Mike (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch 200b

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Mike:

Hast Du die 16/16 unsigned Routine schon mal ausprobiert??
Bei mir klappt das irgendwie nicht...

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@hammer_c

Vielen Dank, da ist eine brauchbare Routine bei, funktioniert auch 
einwandfrei...

Gruß Hans

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, habe ich, diese Woche, geht.

Ist mit Rest, bei Komma Zahlen mußt Du den Rest mal 10 und wieder 
Dividieren usw..

Mike

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.