Hallo, ich muss zu Beginn sagen, dass ich nicht wirklich gut vertraut mit Assemblerprogrammierung bin, da ich mich mit den Mechanismen im allgemeinen noch nicht recht identifizieren kann. Um auf den Punkt zu kommen: Ich arbeite mit zwei anderen an einem Projekt, welches ein Reaktionstest reagiert, was bedeutet, dass eine Taste erscheint (auf einen LCD Display) diese sehr schnell gedrückt werden muss und die Reaktionszeit wird im Endeffekt ausgegeben. Leider ist das Projekt doch recht schwierig zu realisieren, wie sich rausgestellt hat und uns fehlen eigentlich nur noch zwei Knackpunkte, um unsere Projekt fertigzustellen. Eigentlich bin ich dagegen in Foren zu fragen, aber wenn man in einem Projekt nicht sonderlich weiterkommt und Assembler ja nun nicht mehr so präsent ist, wie C++/C# etc. gestaltet es sich auch recht schwierig im Internet das zu finden, was man sucht. Suchmaschinen sind zwar eine gute Allzweckwaffe, aber für manche Dinge wissen selbst diese keinen vernümpftigen Rat, wie ich leider die letzten Tage vestellen musste. Die Punkte wo es harpert: Ich zähle, wärend ich einen Timer in kleinen Zeitabständen hochzähle (10-100ms), ein Register hoch, damit ich im Endeffekt die Zahl des Registers mit der Anzahl der Millisekunden multiplizieren kann um die Reaktionszeit rauszubekommen. Problem hierbei ist allerdings, dass ich es nicht schaffe den Wert des Registers vernümpftig auf dem LCD-Display (vorerst ohne Multiplikation -nur zum Test-) ausgeben kann. Jetzt weiss ich leider nicht, ob das bei jedem Mikrocontroller gleich ist, deswegen nenne ich einfach erstmal den Mikrocontroller den wir zur Verfügung haben: Dallas DS87C520 (ein 8051er inwieweit das relevant sein sollte) Ich habe die Adresse im DPTR gespeichert (die Adr. des LCD-Diisplays) um ggf. darauf zugreifen zu können, Strings kann ich ausgeben, jedoch weiss ich nicht weiter bei dem Wert eines Registers. Der zweite Punkt: Meiner Meinung nach der schwierigere der es für mich in sich hat, denn auch in CPP war dies nicht gerade einfach zu lösen :-) Ich muss einige Zufallszahlen aus einen LAUFENDEN Timer rauslesen um zufällige Zahlen, bzw. zufällige Buttonpositionen zu erstellen. Ich kann die Werte in 4 Registern speichern, dass ist nicht das Thema, mein Problem ist eben das aus einen laufenden Timer rauszulesen. Mein Timer: ----------------------------------------- delay: mov r0, #100d mov tmod, #01h ; Timer Mode 1 (16bit) loop: mov th0, #0beh ; Nachladewerte mov tl0, #0e5h ; für 10 ms setb tr0 ; Start Timer wait: jnb tf0, wait ; Warte auf Timer clr tr0 clr tf0 ; Timer rücksetzen djnz r0, loop ; 100 x ausführen ret ----------------------------------------- Schön und gut, dass ich den habe, ich bin schon Stolz auf mich, dass der seine Arbeit verrichtet, aber im laufenden Timer da irgendwie was rauszulesen ist meine derzeitige Grenze :-)) Ich hoffe ihr könnt mir da etwas weiterhelfen, damit ich da wieder etwas Land sehe :-) Würde mich jedenfalls über diese freuen! Liebe Grüße, Danny.
>, ich bin schon Stolz auf mich kannst DU auch sein ... (Du kennst einen der der lesen kann) http://www.mikrocontroller.net/articles/AVR-Tutorial:_Uhr
Die Zahlen aus einem laufenden Timer werden nicht besonders zufällig sein... Es gibt bessere Mechanismen um Pseudo-Zufallszahlen zu erzeugen: http://en.wikipedia.org/wiki/Linear_feedback_shift_register Den Seed kannst du ja aus dem Timer beim ersten Tastendruck beziehen.
Tim R. wrote: > Die Zahlen aus einem laufenden Timer werden nicht besonders zufällig > sein... > Es gibt bessere Mechanismen um Pseudo-Zufallszahlen zu erzeugen: > > http://en.wikipedia.org/wiki/Linear_feedback_shift_register > > Den Seed kannst du ja aus dem Timer beim ersten Tastendruck beziehen. oder http://en.wikipedia.org/wiki/Linear_congruential_generator
schuldigung ich war frech wenn Du den Timer auf max Freq laufen lässt, (Startwert = "Kleinste Zahl" ; Endwert = "Größte Zahl") .. sollte keiner mehr in der Lage sein eine bestimmte Zahl (Wert) zutreffen ...
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.