Ich interessiere mich für die Arbeitsweise eines Taschenrechners, und zwar nur für die Eingabefunktion. Die Eingabe von mehrstelligen bzw. Zahlen mit Kommastellen über die Tastatur müsste nach jeder Ziffer ja einen Shift des gesamten bisherigen blocks nach links bzw. nach rechts zur Folge haben. Solange, bis ein Operator, eine Funktionstaste oder ähnliches gedrückt wird. Gibt es dazu empfehlenswerte Literatur?
"Fantastic Beasts & Where to Find Them" von Newt Scamander
Das wäre aber ein kurzes Buch, mit vielleicht drei Seiten. Was du brauchst, sind Grundlagen in irgendeiner Programmiersprache gepaart mit dem Talent, Aufgaben in Algorithmen zu überführen. Eine Hand voll Ziffern in einem Array zu verschieben ist allerdings Pillepalle:
1 | uint8_t eingabePuffer[12]; |
2 | |
3 | void einfuegen(uint8_t neueZiffer) |
4 | {
|
5 | for (int i=12; i>0; i--) |
6 | {
|
7 | eingabePuffer[i]=eingabePuffer[i-1]; |
8 | }
|
9 | eingabePuffer[0]=neueZiffer; |
10 | }
|
Reich das für ein Kapitel im Buch?
Falls der "Rest" des Taschenrechners doch auch von Interesse sein sollte, gibt's hier einen tollen Artikel von Ken Shirriff, der den sinclair scientific-Taschenrechner von 1974 reverse engineered hat: http://files.righto.com/calculator/sinclair_scientific_simulator.html
Stefan U. schrieb: > Was du brauchst, sind Grundlagen in irgendeiner Programmiersprache Ich dachte eigentlich an die Hardware-technische Umsetzung. Da wird doch sowas wie ein Tastaturcontroller drin sein oder gehen diese Eingaben auch direkt ans Rechenwerk?
> Da wird doch sowas wie ein Tastaturcontroller drin sein Nein sicher nicht. Google mal nach "Tastenmatrix", das ist die übliche Lösung und die wirst du sicher wieder erkennen, wenn du dir die Platine im Taschenrechner genauer anschaust. > oder gehen diese Eingaben auch direkt ans Rechenwerk Der Chip im Taschenrechner ist ein "Mikrocontroller", noch ein Stichwort zum Googeln.
Mike B. schrieb: > Ich dachte eigentlich an die Hardware-technische Umsetzung. Da wird doch > sowas wie ein Tastaturcontroller drin sein oder gehen diese Eingaben > auch direkt ans Rechenwerk? Das machen ein paar Inputs und ein paar outputs, da brachts keinen extra controller: Antikes Beispiel: http://hc-ddr.hucki.net/wiki/doku.php/z1013:literatur:fa-87-04 Also nacheinander die einzelnen Segmente (Spalten oder zeilen, je nach aufbau auswählen und dann an den Outputs anhand der Position der '1'-bits auslesen welche Taste gedrückt wurde. Einfach mal nach Tatstaturmatrix auslesen googeln: http://halvar.at/elektronik/kleiner_bascom_avr_kurs/3x4_tastenfeld/
Mike B. schrieb: > Eingabe von mehrstelligen bzw. Zahlen Was er sucht ist womöglich eher die Umwandlung eines Strings in eine (float) Zahl. Sollte man mit Google finden "string to float" oder so.
Taschenrechner rechnen aber nicht mit float, außer vielleicht die ganz billigen aus dem 1 Euro Shop. Richtige Taschenrechner rechnen mit Dezimalzahlen.
irgendwie hab ich mir das anders vorgestellt nach dem Druck einer Zifferntaste 0..9 wird diese Ziffer in einen Akku mit Wordbreite gepackt. Kommt jetzt ein weiterer druck auf eine Zifferntaste wird zuerst der Akku nach links verschoben (jetzt nur mal ganze Zahlen) und die neue Eingabe an die niedrigste Stelle gespeichert. Dies für die variante eines Tastaturspeichers für Dezimalziffern. Sollte der Controller bereits binär arbeiten müsste die Eingabe aus der Tastatur durch einen 10x4-Coder (0..9, die 0 muss als Stelle der Zahl ja auch gesendet werden) gehend in den Akku gepackt werden werden um bei der nächsten Eingabe den Akku erst nach 1bit links zu schieben und dann die neue binär vorliegende Ziffer dazuzuaddieren. quasi Akku:=shl(Akku)+Puffer Und da dachte ich mir das müsste als simples Addierwerk hardwareseitig vorgesehen sein.
Mike B. schrieb: > Addierwerk Ja vor 50 Jahren mag das noch so gewesen sein. Da haben die Tischrechner auch noch ein paar hundert DM gekostet. Heute hat man halt einen Microcontroller, der jeweils ein Zeichen von der Tastatur empfängt, im RAM ablegt und dann damit weitere Operationen anstellt... Du kannst ja mal nach antiker Literatur suchen. Oder du sagst was Du konkret vorhast bzw. lernen möchtest.
Schau vielleicht mal hier Beitrag "Taschenrechner aus AND- OR- NOT- usw. -Gattern" die Links von Yalu sind sicher gut...
Stefan schrieb: > Mike B. schrieb: >> Addierwerk > > Ja vor 50 Jahren mag das noch so gewesen sein. Da haben die Tischrechner > auch noch ein paar hundert DM gekostet. Heute hat man halt einen > Microcontroller Ok, also wird das heute nur noch softwareseitig gemacht, das beantwortet meine Frage halbwegs. Somit muss ich also in antiker Literatur weitersuchen.
Stefan schrieb: > Schau vielleicht mal hier > > Beitrag "Taschenrechner aus AND- OR- NOT- usw. -Gattern" > > die Links von Yalu sind sicher gut... leider sind die Links von Yalu veraltet
Stefan schrieb: > Mike B. schrieb: >> Eingabe von mehrstelligen bzw. Zahlen > > Was er sucht ist womöglich eher die Umwandlung eines Strings in eine > (float) Zahl. Sollte man mit Google finden "string to float" oder so. Nur daß Taschenrechner nicht mit Strings arbeiten und auch nur seltenst mit float. Mike B. schrieb: > irgendwie hab ich mir das anders vorgestellt Ach! </loriot> > nach dem Druck einer Zifferntaste 0..9 wird diese Ziffer in einen Akku > mit Wordbreite gepackt. > Kommt jetzt ein weiterer druck auf eine Zifferntaste wird zuerst der > Akku nach links verschoben (jetzt nur mal ganze Zahlen) und die neue > Eingabe an die niedrigste Stelle gespeichert. Nichts davon passiert. Aktuelle Taschenrechner sind stinknormale µC mit Tastenmatrix und (speziellem) Display. Der µC kann z.B. ein ARM sein - siehe https://commerce.hpcalc.org/34s.php. Auf solchen Taschenrechnern ist das "Hereinschieben" der eingegebenen Zahlen von rechts ein reiner Showeffekt. Eher traditionelle Taschenrechner sind ein Gatter- und Flipflopgrab. Da sind die zwei (oder mehr) "Register" vermutlich BCD und beim Eintippen einer Zahl wird da eine echte 4-fach Schiebeoperation gemacht. Nicht daß es irgendwie hilfreich wäre, Details zu wissen.
> Eher traditionelle Taschenrechner sind ein Gatter- und Flipflopgrab. Nur wenn ein 4 bit-Prozessor ein reines "Gatter- und Flipflopgrab" waere. Hier mal ein Link von weiter oben: http://files.righto.com/calculator/sinclair_scientific_simulator.html Und das ganze ein wenig traditioneller: http://files.righto.com/calculator/TI_calculator_simulator.html
Axel S. schrieb: > > Eher traditionelle Taschenrechner sind ein Gatter- und Flipflopgrab. Da > sind die zwei (oder mehr) "Register" vermutlich BCD und beim Eintippen > einer Zahl wird da eine echte 4-fach Schiebeoperation gemacht. Nicht daß > es irgendwie hilfreich wäre, Details zu wissen. Funkschau Tischrechner, elektronischer, mit integrierten TTL-Schaltungen 72/1/23, 72/2/57, 72/3/94, 72/9/322 Diese alten Hefte (1972?) wird man nur in einer Bibliothek finden.
Michael Engel schrieb: > gibt's hier einen tollen Artikel von Ken Shirriff, der den > sinclair scientific-Taschenrechner von 1974 reverse engineered hat: > > http://files.righto.com/calculator/sinclair_scientific_simulator.html In der Tat ein genialer Artikel. Unbedingt auch dem Link zu TI's Chip (TMS0800) folgen. Da steht noch mehr zur Architektur und es gibt auch einen Simulator für einen traditionellen (algebraisch statt RPN) Taschenrechner.
Schlaubi Schlumpf schrieb: >> Eher traditionelle Taschenrechner sind ein Gatter- und Flipflopgrab. > > Nur wenn ein 4 bit-Prozessor ein reines "Gatter- und Flipflopgrab" > waere. Genau, wobei die ersten 4bit processoren eher für die "Tisch"-rechner gedacht waren als die "Taschen"-rechner, deren Kleinheit und Batteriebedingten knappen Stromangebot nach einem Integrationsgrad verlangte, was die intel 4004 Chipfamilie eher nicht bot. Da der erste "Rechner mit i4004: https://en.wikipedia.org/wiki/Intel_4004#/media/File:Unicom_141P_Calculator_3.jpg Die nötige Kleinheit bot erst ein 4bit Controller wie der TMS1000 der ROM, RAM und CPU unter einem Gehäuse vereinigte.
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.