www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hex zu decimal / ASM


Autor: Elektronik Thomas (et-thomas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

ich habe mir eine Funktion geschrieben, die mir den Wert eines
Registers (AVR-8BIT) in Decimaldarstellung wandelt.
Maximaler Wert von 8 bit decimal wären 255; als Ausgabe erhalte ich
drei Register, Inhalt: R1=2; R2=5; R3=5;
Das ganze habe ich noch so erweitert, dass ich der Funktion auch ein
Word übergeben kann, als Ergebnis erhalte ich fünf Register.

Das Teil läuft...Da liegt mein Problem; es läuft und läuft und läuft -
und hört 200ms später wieder aus. Funktion gegeben, setzen, sechs ;-)

Der Ablauf im groben:
Register vergleich auf 10; wenn größer dann subtrahieren 10 und zähle
einer/zehner/hunderter (je nach Stand einer/zehner/hunderter) rauf.

VIelleicht hat jemand noch einen wirklich Super-Trick auf Lager ;-)

Vielen Dank

Autor: Klaus...(Norad) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI

Nun ob es ein Super Trick ist weiss ich nicht aber beim 8051 Befehlsatz
gibts dafür den Befehl DA.

Steht für Dezimalkorrektur vielleicht gibts ja ein Equivalent in AVR.


Gruß Klaus

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nunja, ich kenne deine Routine nicht...

Aber schau dir mal das hier an:

http://www.mikrocontroller.net/forum/read-1-262112...

Das schreibt das Ergebnis zwar nicht in Register oder SRAM, sondern
gibt es gleich an das LCD aus.

Du musst es ja nicht unbesehen übernehmen, aber es schadet sicher
nicht, sich das mal etwas genauer anzusehen oder auch mal im Simulator
laufen zu lassen. Denn so lange dauert die Berechnung nichtmal.

Die Routinensammlung "lcdprint.inc" ist im Laufe der Zeit entstanden
und wird gelegentlich an neue Erfordernisse angepasst. In znduhr01.asm
siehst du, wie die Routinen genutzt werden.

Weitere Tipps findest du auch in der Codesammlung.

...

Autor: ichbins (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch mal auf der Seite nach:

http://www.avr-asm-tutorial.net/avr_de/index.html

Hab da selbst schon manche hilfreiche Infos her.

Autor: Gerald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

ganz einfach und funktioniert, Atmel HP aufrufen und die Applicatin
Note AVR204 runterladen....fertig.
In dieser Schrift ist alles verständlich beschrieben.


Gruss

Gerald

Autor: Bob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,
alos falls du eine Hochsprache einsetzt, löst sich das Problem fast von
alleine:
Z.B. mit dem CodeVision:
Ausgabe ans Terminal: printf(" %d ",value); //mit char value
Ausgabe auf LCD:
Verwende da meist die stdlib.h und konvertiere den Char in int und lass
ihn dann ausgeben, hört sich kompliziert an, sind aber nur wenige Zeilen
in Hochsprache:
char value, *string;
int abc;

abc=atoi(value);   //atoi aus stdlib: ascii to integer
itoa(abc,string);  //itoa integer to ascii (string)
lcd_puts(string);  //Ausgabe des Stings, hier dein char value als
dezimalzahl

Gruß Bob

Autor: Christoph Kessler (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich habe mal meine Version angehängt, die 10er-Division stammt aus dem
Trampert-Buch zum AVR
73
Christoph

Autor: Elektronik Thomas (et-thomas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Vielen Dank für eure Antworten.
Werde mir alles ansehen, ausser die Hochsprache.

@Gerald: Das ist eine Möglichkeit, die ich allerdings nicht nutze ;-)
Bzw. erst im Notfall; aber die Frustration, es nicht selber geschafft
zu haben, wäre einfach zu stark...Da ist mein Ehrgeiz einfach zu massiv
;)

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Appnotes von ATMEL würde ich aber nicht "verschmähen".
Man muss sie ja nicht unbesehen einsetzen, aber ein Blick ("wie haben
die es denn gelöst") lohnt sich immer...

Bit- & Bytebruch...
...HanneS...

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.