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 | |
2 | |
schiebt alle Bits im gedachten 16 Bit Register adhigh/adlow um 1 Stelle nach links. Effektiv ist das eine Division durch 2
1 | |
2 | |
3 | |
4 | |
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 | |
2 | |
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 | |
2 | |
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.