- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 21

Thema: Uhrzeit h:m:s in BASCOM auf LCD darstellen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Hallo Hans,

    noch eine Anmerkung:

    Code:
     If Minuten = 60 Then
          Minuten = 0
          Incr Stunden
      End If
    Ist schlechter Programmierstil und unsicher!

    Stell dir vor, Minuten hat den Wert 61.
    So etwas kann immer mal durch eine Störung auftreten.
    Wird jetzt noch eine 32-Bit Datentyp verwendet, dauert es Jahrhunderte bis zum Overflow auf 0.

    Man sollte also immer
    Code:
     If Minuten => 60 Then
          Minuten = 0
          Incr Stunden
      End If
    oder
    Code:
     If Minuten > 59 Then
          Minuten = 0
          Incr Stunden
      End If
    verwenden!

    Wie ich gesehen habe, wurde es in den anderen Code-Beispielen richtig gemacht.

    Solche Details machen den Unterschied zwischen stabilen Programmen und den anderen, mit unerklärlichen Abstürzen aus.
    Man sollte immer damit rechnen, dass auch einmal Störungen auftreten können oder das ein Modul mit falschen, ungültigen Parametern aufgerufen wird. In solchen Fällen sollte das Programm nicht gleich abstürzen, sondern irgendwie wieder auf die Füsse fallen!

    Hier ein sehr bekanntes Beispiel, welches die Ursache darin hatte, dass man bewährte Software verwendet hat:
    http://www4.in.tum.de/lehre/seminare...g-27-11-02.pdf

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  2. #2
    Unregistriert
    Gast

    Mal ein Uhr Programm

    $regfile = "m8def.dat"
    $crystal = 16000000
    $hwstack = 100
    $swstack = 100
    $framesize = 100


    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcd = 16 * 2

    $baud = 9600
    $regfile "m8def.dat"
    $crystal = 16000000
    Config Lcd = 16 * 2
    Dim Sekunde As Word
    Dim Minute As Word
    Dim Stunde As Word
    Dim S1 As String * 2
    Dim S2 As String * 2
    Dim S3 As String * 2

    'Minuten Einstellen
    Config Pinb.4 = Input
    Portb.4 = 1
    Taster0 Alias Pinb.4

    'Stunden Einstellen
    Config Pinb.5 = Input
    Portb.5 = 1
    Taster1 Alias Pinb.5


    Config Timer1 = Timer , Prescale = 64

    Enable Timer1
    On Timer1 Test
    Enable Interrupts
    Timer1 = 240

    Cls
    Cursor Off Noblink
    '------------ Uhr Voreinstellung ----------------------------------------------
    Sekunde = 0
    Minute = 0
    Stunde = 0

    Do

    '-------------------- Formatkonvertierung für Uhrzeit -------------------------
    S1 = Str(stunde)
    S1 = Format(s1 , "00")
    '----------------------------------
    S2 = Str(minute)
    S2 = Format(s2 , "00")
    '------------------------------------
    S3 = Str(sekunde)
    S3 = Format(s3 , "00")
    '--------------------------------------
    ' S1 ist nun die Variable für Stunde
    ' S2 ist nun die Variable für Minuten
    ' S3 ist nun die Variable für Sekunden

    '----------- Anzeige Stunden , Minuten, Sekunden auf Display ------------------

    Locate 2 , 13
    Lcd S3
    Locate 2 , 11
    Lcd ":"
    Locate 2 , 8
    Lcd S2
    Locate 2 , 6
    Lcd ":"
    Locate 2 , 3
    Lcd S1
    Locate 1 , 1
    Lcd "Aktuelle Uhrzeit"
    Waitms 50


    If Sekunde > 59 Then Minute = Minute + 1
    If Sekunde > 59 Then Sekunde = 0
    If Minute > 59 Then Stunde = Stunde + 1
    If Minute > 59 Then Minute = 0
    If Stunde > 23 Then Stunde = 0

    '--------------Uhr einstellen Minute ------------------------------------------
    If Taster0 = 0 Then
    Waitms 50
    Incr Stunde
    End If
    '--------------Uhr einstellen Stunde -----------------------------------------
    If Taster1 = 0 Then
    Waitms 50
    Incr Minute
    End If
    '--------Uhr komplett auf Null stellen ----------------------------------------
    If Taster0 = 0 And Taster1 = 0 Then
    Sekunde = 0
    Minute = 0
    Stunde = 0
    Waitms 50
    End If
    '------------------------------------------------------------------------------
    Loop

    End

    Test:
    Incr Sekunde


    Return


    Es läuft eigentlich Gut Tasten kann man Minute und Stunde einstellen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress