mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Werte als Prozentwert ausgeben


Autor: Daniel L. (grorkef)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
  lsr adhigh
  ror adlow

schiebt alle Bits im gedachten 16 Bit Register adhigh/adlow um 1 Stelle 
nach links. Effektiv ist das eine Division durch 2
  lsr adhigh
  ror adlow
  lsr adhigh
  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

Autor: Christopher G. (cbg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:
> Die Sequenz
>
>
>   lsr adhigh
>   ror adlow
> 
>
> 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 :) ).

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christopher G. wrote:
> Karl heinz Buchegger wrote:
>> Die Sequenz
>>
>>
>>   lsr adhigh
>>   ror adlow
>> 
>>
>> 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.