Eingabe einer Zahl per Taster

Gast #22173
Lesenswert?

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
Gast #22176
Lesenswert?

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.
Gast #22177
Lesenswert?

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
Gast #22181
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren