2 stellige Zahl zerteilen

Gast #995786
Lesenswert?

Hallo Leute,

ich suche eine Idee um eine 2 stellige Variable (vom DS18S20) zu 
zerteilen und in 2 einzelne Variablen (1stellig) zu speichern.

Ich will von einem DS18S20 die Temperatur lesen (klappt soweit) und sie 
auf ein 2stelliges 7Segment Display jeweils über 2 BCD zu Sieben Segment 
Decoder ausgeben.

Ich hätte mir folgendes überlegt:

Temperatur / 10 = Zehnerstelle

Temperatur - (10*Zehnerstelle) = Einerstelle
#995792
Lesenswert?

Das geht, falls deine Temperatur eine Integer Variable ist.

z.B

int Temperatur =74 ;
int Zehnerstelle;
int Einerstelle;

Zehnerstelle = Temperatur / 10 ;  (Ergebnis = 7, da keine 
Nachkommastellen bei Int. gehen.)

Einerstelle = Temperatur - (10* Zehnerstelle) ;  ( Ergebnis = 4)


oder mit modulo arbeiten
#995795
Lesenswert?

Wenns schon BCD ist, kannst ja auch bisschen maskieren und shiften:

Zehner = (Variable & 0xF0) >> 4;
Einer = Variable & 0x0F;

wenn du übrigens die Einerstelle berechnen willst, kannst du auch den 
Modulo-Operator verwenden:

Einer = Temperatur % 10.

Schönen Gruss

Mist - Johannes, warst schneller :-D
Gast #995801
Lesenswert?

Danke für eure Antworten das Forum hab ich schon durchsucht und auch 
schon einen Thread gefunden wegen einer 4er Stelle.

Da ich vorhin erst nach endlosen Ausprobieren meinen Temperatursensor 
fertig habe und die 7 Segmentdisplays auch werd ich morgen dann erst das 
ganze zusammenfügen.
#995967
Lesenswert?

Patrick wrote:
> k.A. zumind. meine einfachen Rechnungen müssten doch ähnlich sein?
Wieso müssten die das? Ich weiß nicht, ob BASCOM für die 
Modulo-Operation auch den %-Operator verwendet, aber die 
Wahrscheinlichkeit, dass es das nicht tut, ist groß! Und in Assembler 
sieht das sowieso ganz anders aus. Und genau deshalb ist es essentiell 
wichtig, dass man die Programmiersprache angibt!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren