ADC Werte als Prozentwert ausgeben

OP #1228339
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.
Angehängte Dateien:
#1228377
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
#1228410
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 :) ).
#1228451
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.