Hallo, ich bin gerade dabei den Mikrocontroller Cypress CY8C29466 (mit PSoC-Designer) mit Assembler zu programmieren. Ich habe eine Reihe von Temperatursensoren, die ihre Daten per CAN übertragen. Diese Werte sind in einer Tabelle als Hexzahlen dargestellt. Ich soll nun diese in Dezimalzahlen umwandeln, ohne ein externes Programm dafür zu verwenden. Das heißt, man bekommt eine Tabelle mit Dezimalzahlen, womit auch Laien etwas anfangen können. Habt ihr vielleicht eine Idee wie das möglich wäre? ich hoffe ihr habt die Problemstellung verstanden ;) Grüße Ben
:
Bearbeitet durch User
Ben Bambule schrieb: > Habt ihr vielleicht eine Idee wie das möglich wäre? zunächst mal gibt es im Computer keine UNterscheidung zwischen Hex und Dezimal. Alles sind erst mal nur Zahlen, dargestellt durch Bits die 0 oder 1 sein können. Ob in dieser Tabelle dann Hex-Zahlen oder Dezimalzahlen aufscheinen, ist eine reine Frage der Schreibweise, aber die Zahlen sind nach wie vor dieselben. D.h. dein Weg ist also: du kriegst die Werte von den Sensoren. Wie geht es weiter? Wie kommen die in die Tabelle? Was ist das überhaupt für eine Tabelle? Was passiert mit der? Wie kann ein Benutzer diese Tabelle ansehen? Speziell der letzte Punkt könnte der wichtige sein. Denn wenn die Tabelle die Werte als Bytes vom Sensor speichert, dann liegt genau beim letzten Punkt dein Angriffspunkt. Anstatt die Werte als Hex-Zahlen auszugeben, werden sie eben als Dezimalzahlen ausgegeben. Ich nehme mal an, dass es sich um 1 Byte Werte handelt. D.h. die Messwerte können nur im Bereich 0 bis 255 liegen. Dann zieht man eben solange 100 ab, bis man einen Unterlauf hat und zählt mit, wie oft das ging. Diese ANzahl ist die 100-er Stelle, die auszugeben ist. Danach bleibt nur noch eine Zahl im Bereich 0 bis 99 übrig. Selbes Spiel: solange 10 abziehen, bis man einen Unterlauf hat und dabei mitzählen wie oft man das machen konnte. Diese Anzahl ist die 10-er Stelle, die auszugeben ist. Und dann bleiben noch die Einer übrig. Die können direkt ausgegeben werden.
:
Bearbeitet durch User
Bitte werd dir erstmal über den Unterschied zwischen Zahlenwerten und Zahlendarstellung klar. Und deine Darstellung des Sachverhalts ist eine Katastrophe. Bitte denk dran, WIR kennen deine Aufgabe nicht. Die paar Brocken erklären gar nichts. > Diese Werte sind in einer Tabelle als Hexzahlen dargestellt. Grade wurden sie noch per CAN übertragen und jetzt stehen sie in einer Tabelle? Wie das? Ist da ein Display dran oder wie? >Ich soll nun diese in > Dezimalzahlen umwandeln, ohne ein externes Programm dafür zu verwenden. Also du hast erstmal ZAHLENWERTE in deinem Controller vorliegen. Die haben erstmal keine Darstellung als HEX, BIN oder DEZ (ausser die liegen dir als String vor, dann muss man den String vorher zu einem Wert machen). Jetzt sollst du diese Werte dezimal ausgeben? Also in einen String umwandeln und dann z.B. auf einem Display ausgeben? Dazu kann man sich z.B. die ITOA Funktionen von C anschauen und dort abgucken wie das gemacht wird, und dann in ASM nachprogrammieren. Oder du suchst nach einer fertigen ASM Routine die eine Zahl in einen String umwandelt. gruß cyblord
Vielleicht hilft Dir auch die application note AN204, von atmel, weiter. Da ist eine AVR-Assemblerroutine beschrieben, mit der man binär- bzw. hex-Zahlen in BCD-Form umwandelt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.