Forum: Projekte & Code Im AVR mit Kommazahlen rechnen?


von Carsten H. (Gast)


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

von UBoot-Stocki (Gast)


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

von Sven (Gast)


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/.

von Sandro (Gast)


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.

von Norbert (Gast)


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.

von BAB (Gast)


Lesenswert?

wird das auch vom imagecraft compiler unterstützt?

von Gerät Gerät (Gast)


Lesenswert?

dud's jetzt?

von Beeblebrox (Gast)


Lesenswert?

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

von Norbert (Gast)


Lesenswert?

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

von Beeblebrox (Gast)


Lesenswert?

Ups, sorry Norbert.. meinte @Sandro !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.