02.05.2013 Aufrufe

beginner_de

beginner_de

beginner_de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Avr-Asm-Tutorial S. 110<br />

durch Additionen vervielfacht. Aufwändig daran ist, dass praktisch bei je<strong>de</strong>m Addieren ein Überlauf<br />

<strong>de</strong>nkbar ist und abgefangen wer<strong>de</strong>n muss. Wer keine zu langen Zahlen zulässt o<strong>de</strong>r wem es egal ist,<br />

ob Unsinn rauskommt, kann die Branch-Anweisungen alle rauswerfen und das Verfahren damit etwas<br />

beschleunigen.<br />

13.5 Von binär nach ASCII<br />

Die Wandlung von Binär nach ASCII erfolgt in <strong>de</strong>r Routine Bin2ToAsc5. Das Ergebnis ist generell<br />

fünfstellig. Die eigentliche Umwandlung erfolgt durch Aufruf von Bin2ToBcd5. Wie das funktioniert,<br />

wird weiter unten beschrieben.<br />

Wird statt Bin2ToAsc5 die Routine Bin2ToAsc aufgerufen, kriegt man <strong>de</strong>n Zeiger Z auf die erste<br />

Nicht-Null in <strong>de</strong>r Zahl gesetzt und die Anzahl <strong>de</strong>r Stellen im Register rBin2L zurück. Das ist bequem,<br />

wenn man das Ergebnis über die serielle Schnittstelle sen<strong>de</strong>n will und unnötigen Leerzeichen-Verkehr<br />

vermei<strong>de</strong>n will.<br />

13.6 Von binär nach BCD<br />

Bin2ToBcd5 rechnet die Binärzahl in rBin1H:L in <strong>de</strong>zimal um. Auch dieses Verfahren ist etwas<br />

zeitaufwändig, aber sicher leicht zu verstehen. Die Umwandlung erfolgt durch fortgesetztes Abziehen<br />

immer kleiner wer<strong>de</strong>n<strong>de</strong>r Binärzahlen, die die <strong>de</strong>zimalen Stellen repräsentieren, also 10.000,<br />

1.000, 100 und 10. Nur bei <strong>de</strong>n Einern wird von diesem Schema abgewichen, hi.<br />

13.7 Von binär nach Hex<br />

Die Routine Bin2ToHex4 produziert aus <strong>de</strong>r Binärzahl eine vierstellige Hex-ASCII-Zahl, die etwas<br />

leichter zu lesen ist als das Original in binär. O<strong>de</strong>r mit welcher Wahrscheinlichkeit verschreiben Sie<br />

sich beim Abtippen <strong>de</strong>r Zahl 1011011001011110? Da ist B65E doch etwas bequemer und leichter zu<br />

memorieren, fast so wie 46686 in <strong>de</strong>zimal.<br />

Die Routine produziert die Hex-Ziffern A bis F in Großbuchstaben. Wer es lieber in a .. f mag: bitte<br />

schön, Quelltext än<strong>de</strong>rn.<br />

13.8 Von Hex nach Binär<br />

Mit Hex4ToBin2 geht es <strong>de</strong>n umgekehrten Weg. Da hier das Problem <strong>de</strong>r falschen Ziffern auftreten<br />

kann, ist wie<strong>de</strong>r je<strong>de</strong> Menge Fehlerbehandlungsco<strong>de</strong> zusätzlich nötig.<br />

13.9 Quellco<strong>de</strong><br />

; **************************************************************************************<br />

; * Routinen zur Zahlumwandlung, V 0.1 Januar 2002 , (C)2002 info avr-asm-tutorial.net *<br />

; **************************************************************************************<br />

; Die folgen<strong>de</strong>n Regeln gelten für alle Routinen zur Zahlumwandlung:<br />

; - Fehler während <strong>de</strong>r Umwandlung wer<strong>de</strong>n durch ein gesetztes T-Bit im Status-Register<br />

; signalisiert.<br />

; - Der Z Zeiger zeigt entwe<strong>de</strong>r in das SRAM (Adresse >=$0060) o<strong>de</strong>r auf einen<br />

; Registerbereich (Adressen $0000 bis $001D), die Register R0, R16 und R30/31 dürfen<br />

; nicht in <strong>de</strong>m benutzten Bereich liegen!<br />

; - ASCII- und BCD-kodierte mehrstellige Zahlen sind absteigend geordnet, d.h. Die<br />

; höherwertigen Ziffern haben die niedrigerwertigen Adressen.<br />

; - 16-bit-Binärzahlen sind generell in <strong>de</strong>n Registern rBin1H:rBin1L lokalisiert, bei<br />

; einigen Routinen wird zusätzlich rBin2H:rBin2L verwen<strong>de</strong>t. Diese müssen im<br />

; Hauptprogramm <strong>de</strong>finiert wer<strong>de</strong>n.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!