1. Wandle die Binärzahl in eine BCD Zahl um.
2. Addiere 30 zu jeder einzelnen Ziffer.
3. Gib die einzelnen Zeichen aus.
Grüße,
Hanni
Hallo,
Ich brauchte mal einen Tipp, wie ich Zahlen aus 2 Registern auf einem LCD-Display (einzeilig - 16 Zeichen) anzeigen lassen kann.
Wenn ich z.B Impulse an einem Eingang zähle, nehmen wir an, ich verwende 2 Register, so incrementiere ich das 1. Register. Tritt ein Überlauf auf, so incrementiere ich das 2. Register.
Wenn ich jetzt aber z.B 259 Impulse gezählt habe, Steht in Register1 eine 1
und in Register2 eine 3 (00000001-00000011).
Wenn ich diese 2 Register nun an mein LCD-Display übertragen würde (2.
Register ab Adresse0 und 1. Register ab Adresse H40, so sähe ich im Display die Zahl 1003.
Ich brauchte also eine Routine, welche mir das Ganze umrechnet. Hat jemand einen einfachen Tipp für mich?
Ich hoffe, ich konnte mein Problem anschaulich schildern.
MfG LotharK
1. Wandle die Binärzahl in eine BCD Zahl um.
2. Addiere 30 zu jeder einzelnen Ziffer.
3. Gib die einzelnen Zeichen aus.
Grüße,
Hanni
Grundregeln des Forenpostings:
1. Nutze niemals die Suchfunktion!
2. Überprüfe niemals die Topics nach Ähnlichkeiten!
3. Schreibe alles in hellgelb!
Hi,
Danke erst mal für den Tipp.
Na ja, so lange mache ich das hier noch nicht. (Einige Wochen) Wie wandle ich eine Binärzahl in eine BCD-Zahl?
MfG LotharL
Hi Lothar,
sieh Dich mal auf den Seiten hier um ->> http://www.avr-asm-tutorial.net/avr_...onversion.html
greetz Rajko
Hallo,
diese Seite habe ich mir schon angesehen. Das Ganze war mir ehrlich gesaht zu komplex und zu kompliziert. Gibt es vielleicht was einfacheres?
MfG LotharK
1. MöglichkeitGibt es vielleicht was einfacheres?
subtrahieren Methode :
als erstes prüfen, ob Deine Zahl > 10000 ist, wenn ja solange 10000 subtrahieren bis sie kleiner wird und Anzahl der Schritte mitzählen.
Zum Schluß Anzahl der schritte mit 0x30 verodern und ausgeben.
Weiter mit 1000 100 10 , die Einer nicht mehr subtrahieren sondern direkt verodern, fertig.
2. Möglichkeit
Programmiersprache wechseln z.B. C oder Basic, da ist es nicht mehr komplex und kompliziert...
Gruß Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
Hi,
Danke für die Antwort. Obwohl ich es noch nicht begriffen habe...
Müßte ich nicht immer 256 abziehen?
C oder Basic wollte ich nicht verwenden, da es mir nicht darum geht, was Konkretes zu bauen, sondern Assembler lernen will.
Nein.Zitat von SiDe
BCD = Binär codierte Dezimalzahl.
Das heisst, jede einzelne Stelle deiner 16 Bit Zahl steht nach der Umwandlung in einem extra Register / Variable.
Grundregeln des Forenpostings:
1. Nutze niemals die Suchfunktion!
2. Überprüfe niemals die Topics nach Ähnlichkeiten!
3. Schreibe alles in hellgelb!
Hallo Hanni,
meine Funktion für die Darstellung der Zahlen existiert schon. Solange bei mir weniger als 256 Impulse gezählt werden, kann ich das Register gleich an die Funktion übergeben. Werden mehr als 256 Impulse gezählt, stehen im 2. Register die Anzahl der Überläufe des 1. Registers.
Ich müßte doch nur in einer Schleife die Anzahl des oberen Registers in ein Doppelregister addieren. Also so viel mal 256, wie im oberen Register steht. Zum Schluss wird noch das untere Register zum Doppelregister addiert und fertig. Danach werden die 2 Register ausgegeben.
Wieso sollte ich den Um weg über BNC nehmen?
Das alles sind so meine Überlegungen. Testen werd ich das morgen. Meines Erachtens sollte das funktionieren - oder?
MfG Lo
Hallo,
schau Dir mal mein Programm unter https://www.roboternetz.de/phpBB2/ze...101&highlight= an.
Was Dich interessieren könnte, ist die Routine berechne:
Es wandelt bin->BCD und speichert das Ergebnis im RAM .
Viel Erfolg
Gruß Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
Lesezeichen