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
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
Du hast ne 8*8=16Bit Multiplikation, die kannst Du auf beliebige Bitbreiten erweitern. Das Prinzip entspricht dem der schriftlichen Multiplikation. Peter
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
>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?
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
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.