Hallo! Ich bitte Euch um Hilfe bei einem kniffligen Problem für das mir keine Lösung mehr einfällt: Ich habe an einem 2313 einen Taster und ein LCD. Ich brauche nun eine Routine (Assembler) um nun eine 5-stellige Dezimalzahl einzugeben. Wichtig ist dabei das die Routine so klein wie möglich ist. Hab es bisher so, das die 2-byte lange Zahl aus dem EEProm gelesen wird und per relativ raffinierter Division in 5 Dezimalzahlen umgewandelt wird. Jeweils wird eine Variable bis zum Überlauf des Dividenden hoch- oder runtergezählt. Vorher wurde sie noch mit einem Wert initialisiert, so dass am Ende sofort 48 für "0" in der Variablen steht. Das Zeichen wird dann im SRAM gespeichert usw. Eine 1-stellige Zahl lese ich ein, indem ich den Taster gedrückt halte bis die Zahl eingestellt ist. Wenn ich loslasse geht's weiter. So könnte ich auch zur nächsten Stelle springen. Problematisch ist jedoch bei dieser Lösung das zusammensetzen der 5 jeweils bytegroßen Speicherzellen zu einer 2-byte-Variablen. Auch andere Vorschläge sind herzlich willkommen! Danke! Robert
hi, knifflige probleme loest man mit einem flussdiagram. zeichne also deine flowchart auf papier...und wenn die logik stimmt , dann sollte der erfolgreichen programmierung nichts im weg liegen. man kann auch noch eine nacht darueber schlafen ...danach kommt dann 'die' loesung. eine taste...ein glueckspiel?
Das ist ein neuer Auswuchs, den ich auch schon bei Handys gesehen habe. "One-Touch" oder so nennt sich das... Du brauchst eigentlich nur eine Routine, die eine 16-Bit-Zahl mit 10 multiplizieren kann. Die 5 Bytes zunächst des Ascii-Offsets entledigen, dann nimmst Du die höchstwertige Stelle und schreibst sie in die 16-Bit-Zahl hinein. Nun mit 10 multiplizieren. Die nächste Stelle hinzuaddieren - mit 10 multiplizieren, nächste hinzuaddieren....etc. Eine "16-Bit-Zahl *10" Routine könnte optimiert werden, da die "10" nur eine 4-Bit Zahl darstellt.
Hallo! Danke erstmal für die Antworten! Das Gerät sollen Autofahrer bedienen. Es ist die Eingabe für eine Art Bordcomputer. Da im Auto nicht immer wer weiß wie viele Taster so rumliegen wollte ich nur einen einzigen nehmen. Und da man im normalen Betrieb nur die Funktionen durchschaltet reicht ein Taster völlig aus. Die Idee von thkaiser ist auf den ersten Blick sehr gut, vielen Dank! Das war der Denkanstoß auf den ich gehofft habe. Danke! Robert
Wäre in dem Fall ein Dreh-Encoder nicht besser geeignet? Ich stell mir grad vor wie das ding bei 120km/h bedient wird. Gruss Carsten
Voll meine Meinung. Bevor Du die 5. Ziffer eingegeben hast, beendet der Straßengraben, Gegenverkehr oder Baum die Eingabe für immer. Du brauchst mindestens 2 Tasten, eine zum Weiterschalten der Stelle und eine zum Hochzählen der Ziffer. Mit Piep bei Tastendruck ist dann eine Bedienung während der Fahrt möglich. Peter
Jo, mit der einen Taste wird zuerst die 1000er (oder was die höchste stelle sein soll) hochgezählt, dann die 100er, 10er und 1er Stelle. Mit der zweiten Taste wird immer von einer Stelle zur nächsten geschaltet, und bei der letzten wird die zahl übernommen. Gruß Markus
Hallo! Eure Sorge ehrt Euch! Aber ich hatte jetzt in der Kürze nicht die ganze Wahrheit erzählt. Die Eingabe der 5-stelligen Zahl ist eine Art Grundkonfiguration um die Wegstrecke abzugleichen. Dieses Grundeinstellungsmenü ist nur zugänglich wenn man beim Einschalten der Zündung (Schalterstufe 1!!, nicht Motor anlassen!) den Taster gedrückt hält. Im normalen Betrieb werden nur die Anzeigen per Taster durchgeschaltet. Allerdings werde ich sofern ich noch Platz habe (2313: 2kb, ich hab 813 words code) werde ich ne Abfrage machen ob der Motor läuft und sonst die Konfiguration abbrechen! Denn Ihr habt recht, Sicherheit geht vor! Viele Grüße Robert Budde
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.