mikrocontroller.net

Forum: Projekte & Code Im AVR mit Kommazahlen rechnen?


Autor: Carsten H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ihr erfahrenen Programmierer,

es ist mir ja schon fast peinlich diese Frage zu stellen. Aber ich weiß 
ehrlichnicht mehr weiter.
Bin ein Anfänger in diesem Gebiet und arbeite erst seit einer Woche mit 
dem AT90S8535 und CODEVISION. Jetzt möchte ich einen kleinen 
Bord-Computer für mein Motorrad basteln und dazu muß ich aber im 
Programm eine Zahl durch 7,14644 teilen und möchte diese neue Zahl als 
Kommazahl im Display stehen haben.

Meine Frage:

Wie definiere ich eine Kommazahl in CodeVision? (short?)
Wie kann ich diese auf dem Display ausgeben?

Das Display läuft auch so weit, hab sogar schon "char"'s angezeigt.

Falls mir irgendjemand behilflich sein kann, bin ich im jetzt schon 
tausendmal dankbar.

Viele Grüße

Carsten

Autor: UBoot-Stocki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich kenne Codevision nicht, denke aber, daß folgende zwei Ansätz 
Zielführend sind:

1.) Mit "float"-Zahlen kommst Du weiter!. Die Darstellung auf das 
Display bekommst Du, indem Du die float-Zahl in einen String wandelst. 
Dieser String kann dann zeichenweise (char) ausgegeben werden ...

2.) Mit Int,Short,char etc. geht es auch ! Su musst Dir Deine eigene 
Divisionsroutine schreiben. Das ist nicht so kompliziert wie es sich im 
ersten Moment anhört, da Du ja immer durch die selbe Zahl dividieren 
willst. Da Du als Ergebnis dann schon mehrere chars hast, kannst Du das 
direkt zeichenweise auf das Display geben...

Gruß

UBoot-Stocki

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Oder du benutzt bascomAVR, damit würde sich das auf folgenden code 
beschränken

Dim A As Single
A = Deine Zahl / 7,14644
Lcd A


Ergebnis von a wird dann auf dem LCD angezeigt.
Vielleicht interessiert dich bascom ja jetzt, dann schaue auf 
http://www.mcselec.com/.

Autor: Sandro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Carsten,

Ich weiß ja nicht wieviel Zahlen du Dividieren willst aber sei damit 
vorsichtig, diese Dividierroutinen mit Kommazahlen ist sehr 
Speicherplatzschluckend.

ach ja, so wird es übrigens in C gemacht,

#include "stdio.h"

char *DeinText;
float DeineZahl = 7,558;
sprintf( DeinText, "Zahl: %f", DeineZahl ); // So konvertierst
                                            // du deine Zahl
                                            // in einen String

jetzt brauchst du nur noch den Text 'DeinText' ausgeben.

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CodeVision kann in der aktuellen Version(1.23.6) den 
Konvertierungs-Spezifizierer %f nicht unterstützen.

Wenn du aber registriertet User von CodeVision bist, und du dein
Problem dem Support schilderst, bekommst du mit eMail die Version 1.23.7 
prelimanary).
Diese Version unterstützt %f.

Autor: BAB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wird das auch vom imagecraft compiler unterstützt?

Autor: Gerät Gerät (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dud's jetzt?

Autor: Beeblebrox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Norbert
fast.. glaube nicht das C was mit 7,nochwas anfangen kann. Das sollte
schon 7.nochwas sein :)

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Beeblebrox: was erzählst Du mir das? Bin ganz Deiner Meinung.

Autor: Beeblebrox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups, sorry Norbert.. meinte @Sandro !

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.