autorennbahn zeitmessung FF FF x 16bit multiplikation

Gast #308789
Lesenswert?
• ▲
▼
hallo!

ich arbeite an einem kleinen heimprojekt und stehe jetzt vor einem
problem. ich möchte mit einem lichtschranken rundenzeit momentane
geschwindigkeit und rundenanzahl messen. im moment hänge ich noch bei
der auswertung wo ich FF FF mit 16bit multiplizieren muss.
ich habe anfangs ein progframm geschrieben wo ich FF FF mit 8 bit
multipliziere doch habe erst im nachhinein gesehen dass die zeit mit
8bit zu kurz für die messung ist.
die berechnung bezieht sich auf die rundenzeit.ich möchte nur die
überläufe zählen weil die programmierung dadurch wesentlich einfacher
ist und der fehler nur 1/1000 beträgt. ich bin für jede
anregung,hilfe,bessere idee zur messung dankbar.
ps:programmierung mit 8052kit im asm

mit freundliche grüßen
Angehängte Dateien:
Gast #308790
Lesenswert?
• ▲
▼
Du kannst ja ein Register erhöhen und bei Überlauf wiederum ein anderes
erhöhen und wenn das überläuft wieder ein anderes so kannst du es
beileibig fortsetzen.
a=a+1
if a=255 then b=b+1
if b=255 then c=c+1
if c=255 then d=d+1
if......
goto Anfang
Gast #308792
Lesenswert?
• ▲
▼
hallo

danke für die beiden einträge.beiden haben mir zum erfolg geholfen.
das programm läuft perfekt.
jetzt muss ich das nur noch auf elegante weise abwickeln.als
endergebnis bekomme ich nämlich 4byte(weil 4 speicherplätze für die
teile der endergebnisse)
ich denke dabei an eine stapelung der bytes in richtiger reihenfolge ab
einer bestimmten adresse.
was meint ihr? was ist zu beachten? welche eleganten lösungen gibt es
noch?

mit freundlichen grüßen
Gast #308793
Lesenswert?
• ▲
▼
>im moment hänge ich noch bei
>der auswertung wo ich FF FF mit 16bit multiplizieren muss.

(16bit) ist deine 16bit zahl
Wie wärs mit (10000hex *(16bit))-(16bit)
das ist das gleiche wie 0xFFFF*(16bit)
elegant wird das ganze natürlich erst wenn man die Multiplikation
durch
shiften ersetzt. Oder richtig elegant:
Man greift aufs 3. Byte zu
bsp: (16bit)=8hex
10000hex *8hex=80000hex (noch 8hex subtrahieren)
entspricht einer verschiebung um 2 Bytes. Also kein shift sondern
einfache mov Befehle.

elegant genug?
Gast #308794
Lesenswert?
• ▲
▼
nehm doch einfach das Byte das zuletzt Beschrieben wird. Wenn hier die
Genauigkeit nich reicht und das letzte Byte so ausschaut 00011111 dann
nehm einfach die letzen 5bits und schiebe die höheren 3Bits vom
vorherigen Byte dazu

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