Forum: Mikrocontroller und Digitale Elektronik Uhr-Stellroutine


von Uwe H. (uwe1981)


Lesenswert?

Hallo zusammen :-)
Ich schreib grad ne Stellroutine für meine RTC und hab mal ne Frage 
dazu:
Nehmen wir mal an, die Uhr startet mit einem Default-Wert von 
01.01.2010. Jetzt rufe ich die Stellvariable fürs Datum auf, und die 
zeigt mir dann den Default-Wert, beim Tag z.B. "1". Jetzt die Frage: Wie 
bekomme ich es hin, dass mir die Stellvariable "01" anzeigt? Ist zwar ne 
rein optische Frage, aber vielleicht weiß ja jemand Rat :-)

von Karl H. (kbuchegg)


Lesenswert?

Indem du deiner Ausgaberoutine beibringst, dass sie 2 Stellen anzeigen 
soll und du gerne führende 0-en hättest.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

printf("%02d", sekunden);

von Uwe H. (uwe1981)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Indem du deiner Ausgaberoutine beibringst, dass sie 2 Stellen anzeigen
> soll und du gerne führende 0-en hättest.

Was Du nicht sagst :-) Da wär ich nich drauf gekommen :-))) Und wie geht 
das? (Ausgabe auf LCD-Display

von Karl H. (kbuchegg)


Lesenswert?

Uwe Heydemann schrieb:
> Karl Heinz Buchegger schrieb:
>> Indem du deiner Ausgaberoutine beibringst, dass sie 2 Stellen anzeigen
>> soll und du gerne führende 0-en hättest.
>
> Was Du nicht sagst :-) Da wär ich nich drauf gekommen :-)))

Du Schlauberger du.
Sieh dir doch mal deine Frage an.
Bis jetzt steht ja noch nicht einmal fest, welche Programmiersprache es 
sein soll!
Von Information darüber, wie deine jetzige Ausgabe funktioniert reden 
wir erst mal gar nicht.

von Uwe H. (uwe1981)


Lesenswert?

Nils S. schrieb:
> printf("%02d", sekunden);

Das ist C oder? Ich schreibe in Bascom :-) Tschudigung, hatte ich 
vergessen zu erwähnen :-)

von Karl H. (kbuchegg)


Lesenswert?

Schau dir in der Hilfe den FORMAT Befehl an.

> Tschudigung, hatte ich vergessen zu erwähnen :-)

Ausnahmsweise entschuldigt. Aber nächstes mal gleich im 
Eröffnungsposting. Dann gibts auch keine dummen Meldungen. Und wenn du 
dann noch ein wenig Code zeigst, sind alle happy.
Und noch happier sind alle, wenn du vorab in deiner Hilfe einfach mal 
alle Befehle abklapperst und untersuchst, welcher es eventuell sein 
könnte. So viele gibts ja dnn in BASCOM auch wieder nicht.

von Gugelhupf (Gast)


Lesenswert?

Uwe Heydemann schrieb:
> Nils S. schrieb:
>> printf("%02d", sekunden);
>
> Das ist C oder?
Ja.

 Ich schreibe in Bascom :-) Tschudigung, hatte ich
> vergessen zu erwähnen :-)

Da wird es wohl ein Handbuch mit den passenden Funktionen geben. Oder 
"neudeutsch": RTFM.

von Uwe H. (uwe1981)


Lesenswert?

> Du Schlauberger du.
> Sieh dir doch mal deine Frage an.
> Bis jetzt steht ja noch nicht einmal fest, welche Programmiersprache es
> sein soll!
> Von Information darüber, wie deine jetzige Ausgabe funktioniert reden
> wir erst mal gar nicht.

Verstehen wir hier keinen Spaß mehr...?

von Karl H. (kbuchegg)


Lesenswert?

Uwe Heydemann schrieb:
>> Du Schlauberger du.
>> Sieh dir doch mal deine Frage an.
>> Bis jetzt steht ja noch nicht einmal fest, welche Programmiersprache es
>> sein soll!
>> Von Information darüber, wie deine jetzige Ausgabe funktioniert reden
>> wir erst mal gar nicht.
>
> Verstehen wir hier keinen Spaß mehr...?

Natürlcih verstehen wir Spass. Wenn man ihn uns erklärt :-)

von Uwe H. (uwe1981)


Lesenswert?

Gugelhupf schrieb:
> Uwe Heydemann schrieb:
>> Nils S. schrieb:
>>> printf("%02d", sekunden);
>>
>> Das ist C oder?
> Ja.
>
>  Ich schreibe in Bascom :-) Tschudigung, hatte ich
>> vergessen zu erwähnen :-)
>
> Da wird es wohl ein Handbuch mit den passenden Funktionen geben. Oder
> "neudeutsch": RTFM.

Für die Ausgabe der Uhrzeit gibts sowas, ja. Nur gehts mir hier 
expliziet um die Stellvariable. Oder einfacher formuliert: Wie zeigt man 
eine Byte-Variable zweistellig an.

RTFM hab ich nicht, ich hab LBDUWNKDN: Learning by doing und wenns nicht 
klappt dann nachfragen :-)

von Gugelhupf (Gast)


Lesenswert?

> RTFM hab ich nicht, ich hab LBDUWNKDN: Learning by doing und wenns nicht
> klappt dann nachfragen :-)

Leute die keine Handbücher lesen gehören gesperrt. Wer meint das Forum 
mit Fragen zuzuspammen die Google oder ein Manual beantwortet hat hier 
nichts verloren (nur so allgemein).

von Uwe H. (uwe1981)


Lesenswert?

Gugelhupf schrieb:
>> RTFM hab ich nicht, ich hab LBDUWNKDN: Learning by doing und wenns nicht
>> klappt dann nachfragen :-)
>
> Leute die keine Handbücher lesen gehören gesperrt. Wer meint das Forum
> mit Fragen zuzuspammen die Google oder ein Manual beantwortet hat hier
> nichts verloren (nur so allgemein).

Ich hab ein Handbuch, ein sehr gutes sogar. Nur steht da auch nicht 
alles drin. Gegoogelt hab ich auch :-)

von Karl H. (kbuchegg)


Lesenswert?

Dann scroll etwas zurück. Da steht der Name des Befehls den du brauchst.

von Uwe H. (uwe1981)


Lesenswert?

Ok, ich zerleg die Zahl in Einer und Zehner. Das war bisher die 
einfachste Lösung, die ich gegoogelt habe. Wenn hier niemand eine 
bessere Idee hat...

Schönen Abend noch zusammen

von Karl H. (kbuchegg)


Lesenswert?

Wenn du deine Bücher auch so aufmerksam liest, wie hier deine Antworten, 
wundert mich gar nichts mehr.

von Jürgen C (Gast)


Lesenswert?

Hallo,

ich mache es so:

Die verwendeten Variablen müssen natürlich vorher noch definiert und
initialisiert werden.

Sub Uhreinstellen_lcd()

 Locate 1 , 1
 If _uhreinstellen_hour < 10 Then Lcd "0"
 Lcd _uhreinstellen_hour
 Lcd ":"
 If _uhreinstellen_min < 10 Then Lcd "0"
 Lcd _uhreinstellen_min
 Lcd ":"
 If _uhreinstellen_sec < 10 Then Lcd "0"
 Lcd _uhreinstellen_sec

 Locate 2 , 1
 If _uhreinstellen_day < 10 Then Lcd "0"
 Lcd _uhreinstellen_day
 Lcd "."
 If _uhreinstellen_month < 10 Then Lcd "0"
 Lcd _uhreinstellen_month
 Lcd "."
 If _uhreinstellen_year < 10 Then Lcd "0"
 Lcd _uhreinstellen_year


 If _uhreinstellen = 1 Then Locate 1 , 2
 If _uhreinstellen = 2 Then Locate 1 , 5
 If _uhreinstellen = 3 Then Locate 1 , 8

 If _uhreinstellen = 4 Then Locate 2 , 2
 If _uhreinstellen = 5 Then Locate 2 , 5
 If _uhreinstellen = 6 Then Locate 2 , 8

 If _uhreinstellen = 0 Then Cursor Off Else Cursor Blink

 End Sub

von Uwe H. (uwe1981)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Wenn du deine Bücher auch so aufmerksam liest, wie hier deine Antworten,
> wundert mich gar nichts mehr.

Ich habs gelesen. Der Format-Befehl ist nicht für Byte-Variablen 
geeignet, sondern für Strings. Genauso wie Fusing für Dezimal, sprich 
Single. Ohne Dich anzugreifen zu wollen, aber: Das steht sehr deutlich 
in der Bascom-Hilfe und auch im Manual. Soviel zum Thema lesen...

von Karl H. (kbuchegg)


Lesenswert?

Uwe Heydemann schrieb:
> Karl Heinz Buchegger schrieb:
>> Wenn du deine Bücher auch so aufmerksam liest, wie hier deine Antworten,
>> wundert mich gar nichts mehr.
>
> Ich habs gelesen. Der Format-Befehl ist nicht für Byte-Variablen
> geeignet, sondern für Strings.

Kein Problem. Dafür wiederrum gibts die Funktion Str

In der Hilfe ist sogar beim FORMAT ein Beispiel

Res as Long
Res = ....
Dim S1 as string * 16 : s1 = Str(Res)
Print Format(s1,"000.00")

Und, wars so schwer, die Hilfe vollständig zu lesen?

von Uwe H. (uwe1981)


Lesenswert?

Jürgen C schrieb:
> Hallo,
>
> ich mache es so:

>.....

Danke Jürgen, endlich jemand der Ahnung von der Materie hat und hilft, 
statt gleich Streit zu suchen. Ich habs etwas umgeschrieben. Das 
Beispiel ist für die Datumseinstellung gedacht:


  Set_day = 01    ----I
  Set_month = 01      I---- Startwert (Default)
  Set_year = 10   ----I

Do
    For I = 1 To 3
       Select Case I
        Case 1:
         Max_value = 31
          Set_day = Value_counter
           Select Case Value_counter
            Case 1 To 9 :
             Lcd "0" ; Set_day ; ".0" ; Set_month ; ".20" ; Set_year
            Case 10 To 31 :
             Lcd Set_day ; ".0" ; Set_month ; ".20" ; Set_year
            End Select

           Case 2:
            Max_value = 12
            Set_month = Value_counter
         Select Case Value_counter
          Case 1 To 9 :
           Lcd Set_day ; ".0" ; Set_month ; ".20" ; Set_year
          Case 10 To 12 :
           Lcd Set_day ; Set_month ; ".20" ; Set_year
         End Select
        Case 3:
         Max_line = 99
         Set_year = Menu_counter
          Lcd Set_day ; Set_month ; ".20" ; Set_year
        End Select

Grüße und einen schönen Abend noch

von Uwe H. (uwe1981)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Uwe Heydemann schrieb:
>> Karl Heinz Buchegger schrieb:
>>> Wenn du deine Bücher auch so aufmerksam liest, wie hier deine Antworten,
>>> wundert mich gar nichts mehr.
>>
>> Ich habs gelesen. Der Format-Befehl ist nicht für Byte-Variablen
>> geeignet, sondern für Strings.
>
> Kein Problem. Dafür wiederrum gibts die Funktion Str
>
> In der Hilfe ist sogar beim FORMAT ein Beispiel
>
> Res as Long
> Res = ....
> Dim S1 as string * 16 : s1 = Str(Res)
> Print Format(s1,"000.00")
>
> Und, wars so schwer, die Hilfe vollständig zu lesen?
 Nee, aber offensichtlich verstehst Du meine Frage immer noch nicht.

Nochmal: Die Hilfe habe ich auch vorher gelesen und genau dieses 
Hickhack mit Umwandlung wollte ich umgehen. Deshalb meine bescheidene 
Frage, ob man die Bytevariablen auch ohne zig Formatierungen direkt 
zweistellig anzeigen lassen kann. Mehr nicht. Weil manchmal gibts da 
Möglichkeiten, die nicht immer im Handbuch stehen.

von Karl H. (kbuchegg)


Lesenswert?

Uwe Heydemann schrieb:
> Karl Heinz Buchegger schrieb:
>> Uwe Heydemann schrieb:
>>> Karl Heinz Buchegger schrieb:
>>>> Wenn du deine Bücher auch so aufmerksam liest, wie hier deine Antworten,
>>>> wundert mich gar nichts mehr.
>>>
>>> Ich habs gelesen. Der Format-Befehl ist nicht für Byte-Variablen
>>> geeignet, sondern für Strings.
>>
>> Kein Problem. Dafür wiederrum gibts die Funktion Str
>>
>> In der Hilfe ist sogar beim FORMAT ein Beispiel
>>
>> Res as Long
>> Res = ....
>> Dim S1 as string * 16 : s1 = Str(Res)
>> Print Format(s1,"000.00")
>>
>> Und, wars so schwer, die Hilfe vollständig zu lesen?
>  Nee, aber offensichtlich verstehst Du meine Frage immer noch nicht.
>
> Nochmal: Die Hilfe habe ich auch vorher gelesen und genau dieses
> Hickhack mit Umwandlung wollte ich umgehen. Deshalb meine bescheidene
> Frage, ob man die Bytevariablen auch ohne zig Formatierungen direkt
> zweistellig anzeigen lassen kann. Mehr nicht. Weil manchmal gibts da
> Möglichkeiten, die nicht immer im Handbuch stehen.

Du meinst sowas wie

   if  wert < 10
     lcd "0"
   lcd wert


ja du hast recht. Das steht wirklich nicht im Handbuch

von Uwe H. (uwe1981)


Lesenswert?

> Du meinst sowas wie
>
>    if  wert < 10
>      lcd "0"
>    lcd wert
>
>
> ja du hast recht. Das steht wirklich nicht im Handbuch

Siehst Du, schon hast Du was dazugelernt :-) Ich übrigens auch: Wenn 
Leute sich profilieren wollen oder einfach nur Streit suchen, dann ist 
jedes vernünftige Wort vergebens. Wenn Du meinen letzten Beitrag auch 
nur zu 50% verstanden hast, dann wäre Dir dieser blödsinnige Kommentar 
garnicht erst in den Sinn gekommen. Deshalb nochmal für Dich:

Hier geht es um eine rein OPTISCHE Frage in einer winzigen besch....enen 
Stellroutine und nicht darum, das Ganze

Keine Ahnung warum Du Dich Moderator nennen darfst. Wegen deiner 
überragenden Diplomatie sicherlich nicht. Hast wohl das Handbuch 
auswendig gekonnt, was? :-) Ich lern meins auch auswendig und noch ein 
zweites dazu. Dann werd ich Präsident von mikrocontroller.net und feuer 
Dich wegen mangelnder Kompetenz.

von a no nym (Gast)


Lesenswert?

Uwe Heydemann schrieb:
> Keine Ahnung warum Du Dich Moderator nennen darfst. Wegen deiner
> überragenden Diplomatie sicherlich nicht. Hast wohl das Handbuch
> auswendig gekonnt, was? :-) Ich lern meins auch auswendig und noch ein
> zweites dazu. Dann werd ich Präsident von mikrocontroller.net und feuer
> Dich wegen mangelnder Kompetenz.

Oh Mann, schmeißt diesen arroganten Großkotz raus.

von Reinhard Kern (Gast)


Lesenswert?

Uwe Heydemann schrieb:
> Keine Ahnung warum Du Dich Moderator nennen darfst.

Warum paart sich eigentlich immer Null Ahnung mit grosser Klappe? Ist 
doch unlogisch, eigentlich sollten eher Leute was zu sagen haben, die 
sich wirklich auskennen...

Gruss Reinhard

von Jupp (Gast)


Lesenswert?

"Mann" versucht zu helfen... er verstehts nicht .. und die Reaktionen 
sind so

Da hier keine körperlich Gewalt zum Zuge kommen kann - eben so.

Das ist Abwehrstrategie. Bestätigt dir jeder Verhaltensforscher.


Das sind meist die Personen die sonst auch nicht sonderlich weit kommen.

Allerdings schätze ich unser "Uwe Heydemann (uwe1981)" nicht auf ein 
Alter von 30 Jahren.

Meist hat man da mehr Grips und Anstand. Eher so 16-20.

So ein Nachpubertierendes Verhalten legt meist diese Altersgruppe an den 
Tag.



Jupp

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.