Guten Tag Ich habe die Aufgabe mit zwei Lichtschranken eine Geschwindigkeit (z.B. von einem Ball) zu berechnen, in Assembler. Den Abstand der beiden Lichtschranken kann ich selber bestimmen, dachte da an etwa 200mm! Meine Frage ist ob mir jemand helfen kann bei der Funktion für die Berechnung der Geschwindigkeit? (v=s/t) Gruss und Danke Heinz
>Ich habe die Aufgabe ...
In welche Klasse gehst Du denn?
Ich bin jetzt im 2. Lehrjahr. Habe aber die Aufgabe von meinen Lehrmeister bekommen!
Hi In Assembler macht man das wie in anderen Programmiersprachen auch: Zeit messen - Formel abarbeiten - Ergebnis anzeigen. Was ich eigentlich sagen will: Ohne konkrete Angaben, wie: Controller,verfügbare Hard- und Software wirst du nur lapidare Antworten bekommen. MfG Spess
Hallo! ich nehme mal folgendes an: du willst ne translation messen, die als übliche SI-Einheit dargestellt werden soll. Wenn du die zeit gemessen hast brauchst du nur noch wie du schon gesagt hast, v = s/t also musst du für ergebnis in m/s die gemessene Zeit in MILI-Sekunden haben! Du teilst dann den Wert des Weges in mm!! durch die gemessene Zeit in ms. Die "mili" kürzen sich dann weg. c code: char t,v; . . . v = 200/t; ASM-Code: // in main wird die rechnung v=s/t vollzogen(t in ms und s ist 200mm) processor 16F689 radix DEC Carry EQU 0 RP0 EQU 5 RP1 EQU 6 t EQU 0x24 v EQU 0x25 C1cnt EQU 0x20 C2tmp EQU 0x21 C3rem EQU 0x23 GOTO main main MOVLW .200 BCF 0x03,RP0 BCF 0x03,RP1 MOVWF C2tmp CLRF C3rem MOVLW .8 MOVWF C1cnt m001 BCF 0x03,RP0 BCF 0x03,RP1 RLF C2tmp,1 RLF C3rem,1 MOVF t,W SUBWF C3rem,W BTFSS 0x03,Carry GOTO m002 BCF 0x03,RP0 BCF 0x03,RP1 MOVF t,W SUBWF C3rem,1 BSF 0x03,Carry m002 BCF 0x03,RP0 BCF 0x03,RP1 RLF v,1 DECFSZ C1cnt,1 GOTO m001 SLEEP GOTO main END
Ich programmiere das Ganze mit der Umgebung uVision2 auf dem MESA. (C509)
warum fragst du? ich kenne den befehlssatz von deiner MCU nicht. ich denke da wird es nicht viel anders sein. Welche Befehle kennt der denn nicht?
>Hast du diesen Quellcode auch für Mikrocontroller (C509), programmieren >keinen PIC!=) direkt gesagt: Du wirst hier niemanden finden, der Dir Deine Arbeit abnimmt. Zeige, was Du selbst gemacht hast, und frage, wo Du nicht weiterkommst. Im 2. Lehrjahr (wovon auch immer) solltest Du lernen, Aufgaben zu lösen und nicht abzuschreiben.
Heinz wrote: > Ich programmiere das Ganze mit der Umgebung uVision2 auf dem MESA. > (C509) Wow, schon im 6.Posting rückst Du mit dem wichtigsten raus. Wozu auch die Postingregeln lesen (3. Punkt). Der C509 ist ein 8051 mit einigen Siemens typischen Gemeinheiten (Abweichungen zum Standard-8051). Eine Capture-Unit sollte er aber haben. Du legst die beiden Lichtschranken auf 2 Capture-Eingänge und wählst den Abstand so, daß bei der langsamsten zu messenden Geschwindigkeit die 16Bit ausreichen. Beide Capturewerte subtrahieren und schon hast Du die Zeitdifferenz. Dann noch v = s/t rechnen. Peter
Mein Problem ist, die Geschwindigkeit einigermassen genau zu berechnen, ich kann ja in Assembler nicht die Geschwindigkeit in m/s mit 3.6 multiplizieren, sondern nur mit ganzen zahlen. kann mir da jemand helfen? gruss
Tja, Assembler für C509 ist nicht mein Gebiet, aber ganz unabhängig von der Programmiersprache solltest Du mal mit grundlegender Mathematik überlegen, ob man eine Multiplikation mit 3,6 nicht vielleicht durch andere Operationen mit ganzen Zahlen ersetzen könnte. 3,6 ist schließlich nichts anderes als 36/10, also sollte das ganze ziemlich unproblematisch sein...
ja, an das mit 36/10 hab ich auch schon gedacht, aber da gibt es ja ziemlich oft eine zahl welche 2 Bytes beträgt.. und da weiss ich au nicht mehr so wirklich weiter.
Ich denke das Schulsystem in der Bundesrepublik ist dem in der ehemaligen DDR so überlegen - und da lernt man kein Englisch? Gruß Matthias
>gibts diese seite nur in englisch?
Wozu gibt es Babelfish und so?
STK500-Besitzer wrote: >>gibts diese seite nur in englisch? > > Wozu gibt es Babelfish und so? Falls man das Original noch verstehen konnte, nach einmal Babelfish ist es völlig vergurkt - siehe untenstehenden Satz. Ist zwar die falsche Übersetzungsrichtung aber trotzdem symptomatisch. Es geht um das Überschwingen einer Heizung bei schlecht eingestellten Regler-Parametern und eventuell daraus folgendem Schaden. With systems, as for example the metal block described above easily an overshooting of several 100 degrees can occur and lead if necessary to damage.
ja, aber es geht ja hier eigentlich au nicht um babelfish..!
Enweder einen Übersetzer wie Babelfish oder so (gibt ja auch noch andere...) oder man setzt sich mit dem englischen Text auseinander. Da es sich um Fachenglisch handelt, ist der Wortschatz recht begrenzt. Das sollte man mit einem Wörterbuch schaffen...
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.