www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Nachkomma stelle DS1820


Autor: Kay B. (newbie)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
guten abend

habe mal eine frage, wie wird die nach kommastelle beim ds1820 berechnet
das programm im anhang zeigt ja erstmal nur 3stellen an zb.023 grad
VIELLECHT KANN MIR VON EUCH BITTE EINER WEITERHELFEN

MFG KAY

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Tipp:

Da ist eine Zeile

   ror temp1

da wird das Bit nach rechts rausgeschoben, welches dein halbes Grad 
enthält. Du könntest abhängig von diesem Bit nach der regulären Ausgabe 
einen Text ".0" oder ".5" ans LCD schicken.

Lass diese Großbuchstaben sein.

Autor: Kay B. (newbie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,


> Da ist eine Zeile
>
>    ror temp1
>
> da wird das Bit nach rechts rausgeschoben, welches dein halbes Grad
> enthält.

aber wenn ich  diese zeile ausblende erhalte ich die doppelte 
temperratur oder mache ic da irgenetwas vekehrt.


Du könntest abhängig von diesem Bit nach der regulären Ausgabe
> einen Text ".0" oder ".5" ans LCD schicken.

aber dann verändert sich ja die Nachkommastelle nicht.

wäre nett wenn mir einer von euch ein bischen weiterhelfen könnte

mfg kay

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

Bewertung
0 lesenswert
nicht lesenswert
Kay B. wrote:
> hallo,
>
>
>> Da ist eine Zeile
>>
>>    ror temp1
>>
>> da wird das Bit nach rechts rausgeschoben, welches dein halbes Grad
>> enthält.
>
> aber wenn ich  diese zeile ausblende erhalte ich die doppelte
> temperratur oder mache ic da irgenetwas vekehrt.

Tom sagt ja auch nicht, dass du nicht rausschieben (also durch
2 dividieren) sollst. Aber du kannst dir ja das niederwertigste
Bit vor dem rausschieben ansehen.
Ist es 1, dann lautet deine Kommastelle .5. Ist es 0 dann lautet
die Kommastelle .0.

> wäre nett wenn mir einer von euch ein bischen weiterhelfen könnte

Du denkst im Moment zu kompliziert.
In Pseudocode

   Merker = lowbit( temp1 )
   ror temp1
   temp1 ausgeben

   if Merker == 1
     ".5" ausgeben
   else
     ".0" ausgeben

Die Kommastelle wird nicht wirklich berechnet, sondern einfach
nur abhängig vom niederwertigsten Bit vor dem Verschieben als
.5 oder .0 an die bisherige Ausgabe angehängt.

Autor: Kay B. (newbie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
erstmalö danke für die antworten,
werde es dann mal so machen wie ihr gesagt habt
danke nochmals
mfg kay

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.