Hallo, Ich habe heute Versuch eine Prozentanzeige für den ADC Wert zu schreiben. Ich hab nach langem ausprobieren und durch lesen den Code geschrieben der im Anhang ist. Die Prozentberechnung habe ich im Forum gefunden. Leider verstehe ich nicht ganz wie das funktioniert besonders diese lsr,ror,lsr,ror Abfolge. Es wäre nett wenn mir das jemand erklären könnte. Außerdem würde ich mich sehr über Verbesserungsvorschläge freuen. MFG Daniel L.
Daniel L. wrote: > Hallo, > > Ich habe heute Versuch eine Prozentanzeige für den ADC Wert zu > schreiben. Ich hab nach langem ausprobieren und durch lesen den Code > geschrieben der im Anhang ist. > > Die Prozentberechnung habe ich im Forum gefunden. Leider verstehe ich > nicht ganz wie das funktioniert besonders diese lsr,ror,lsr,ror Abfolge. Die Sequenz
1 | lsr adhigh |
2 | ror adlow |
schiebt alle Bits im gedachten 16 Bit Register adhigh/adlow um 1 Stelle nach links. Effektiv ist das eine Division durch 2
1 | lsr adhigh |
2 | ror adlow |
3 | lsr adhigh |
4 | ror adlow |
ist also effektiv eine Division durch 4. Das Ergebnis der Multiplikation * 100 findet sich in den Registern ergebnis3/ergebnis2/ergebnis1 als 24 Bit Zahl wieder. Dadurch, dass nur ergebnis3/ergebnis2 weiterverwendet werden, wird das Ergebnis schon mal durch 256 dividiert. Eine weitere anschliessende Division durch 4 ergibt daher eine Division durch 4*256 = 1024
Karl heinz Buchegger wrote: > Die Sequenz > >
1 | > lsr adhigh |
2 | > ror adlow |
3 | > |
> > schiebt alle Bits im gedachten 16 Bit Register adhigh/adlow um 1 Stelle > nach links. Effektiv ist das eine Division durch 2 Es verschiebt die Bits nach rechts nicht links. Wahr wohl ein Schlampigkeitsfehler denn sonst passts (und Moderator :) ).
Christopher G. wrote: > Karl heinz Buchegger wrote: >> Die Sequenz >> >>
1 | >> lsr adhigh |
2 | >> ror adlow |
3 | >> |
>> >> schiebt alle Bits im gedachten 16 Bit Register adhigh/adlow um 1 Stelle >> nach links. Effektiv ist das eine Division durch 2 > > Es verschiebt die Bits nach rechts nicht links. Ooops. Danke für die Korrektur.
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.