Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Demoprogramm: Countdown mittels Zustandsautomat Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 30.08.2020 15:56)
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini Station
' ===========================================================================
' Demoprogramm: Einfacher Countdown mittels Zustandsautomat
' In OCBASIC 1.11a für Open-Maxi von Dietmar Harlos am 29. August 2020
' ===========================================================================

' Hier wird erklärt, was ein Zustandsautomat (Statemachine) ist:

' https://www.mikrocontroller.net/articles/Statemachine

' Auf der offiziellen Infosite der OM-Mikrocontroller gibt es das Beispiel
' "Kleine Pizza-Uhr auf der Open-Macro". Das dortige kleine Beispielprogramm
' demonstriert, wie Tasten des PE-Boards abgefragt und daraufhin Signale
' erzeugt werden. Auch bei einem Sekundenwechsel wird ein Signal erzeugt.
' Ausgewertet werden die Signale in einem sogenannten Zustandsautomaten.
' Die Ausgabe findet auf dem an BYTEPORT[2] angeschlossenen I2C-LCD von
' Conrad Electronic (Bestellnr. 198330) statt. Darüber hinaus wird gezeigt,
' wie auf dem LCD komfortabel Strings (also Texte) ausgegeben werden können.
' Als Bonus gibt es zwei weitere Programme, die ebenfalls I2C-LCDs nutzen.

' An dieser Stelle möchte ich mich bei Norbert Klein und bei Dirk von "das
' |_ Team" für ihre Unterstützung bedanken.

' --- Definitionen ----------------------------------------------------------

INCLUDE "omax.def"                   'Definitionen für die Open-Maxi

DIM bitarray BYTE
DIM signalsekunde BIT[1] OF bitarray 'Signal

DIM zustand BYTE                     'Variablen
DIM temp BYTE
DIM sekundealt BYTE
DIM anzsekunden INT

DEFINE zuscountdown 1                'Zustände des Zustandsautomaten
DEFINE zusalarm 2

' --- Hauptprogramm ---------------------------------------------------------

PRINT "Countdown auf der Open-Maxi"

anzsekunden=1*60+30                  'Zeit: 1 Minute und 30 Sekunden
showrestzeit

init

' Schleife des Hauptprogramms

WHILE TRUE
  uhrabfrage
  zustandsautomat
WEND

END

' --- Subroutinen und Funktionen --------------------------------------------

' Verschiedene Initialisierungen

PROCEDURE init
  signalsekunde=OFF
  zustand=zuscountdown
  RETURN
END PROCEDURE

' Uhr abfragen und Signal signalsekunde erzeugen

PROCEDURE uhrabfrage
  temp=SECOND
  IF temp<>sekundealt THEN           'Uhr wurde weitergezählt?
    sekundealt=temp
    signalsekunde=ON
  END IF

  RETURN
END PROCEDURE

' Zustandsautomat

PROCEDURE zustandsautomat

  IF zustand=zuscountdown THEN       'Zustand "Count Down"

    IF signalsekunde THEN
      signalsekunde=OFF
      SUB anzsekunden,1
      showrestzeit
    END IF

    IF anzsekunden=0 THEN
      zustand=zusalarm
    END IF

  ELSEIF zustand=zusalarm THEN       'Zustand "Alarm"

    IF signalsekunde THEN
      signalsekunde=OFF
      PRINT "ALARM!"
      BEEP 710,5,0
    END IF

  END IF

  RETURN
END PROCEDURE

' Die "anzsekunden" in Minuten im Format 00:00 anzeigen

PROCEDURE showrestzeit
  PUT (((anzsekunden/60)/10)+ASC("0"))
  PUT (((anzsekunden/60) MOD 10)+ASC("0"))
  PUT ASC(":")
  PUT (((anzsekunden MOD 60)/10)+ASC("0"))
  PUT (((anzsekunden MOD 60) MOD 10)+ASC("0"))
  PUT 13
  RETURN
END PROCEDURE

' --- Programmende ---------------------------------------------------------


Passender Link: Infosite zu den OM-Mikrocontrollern

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten:

Re: Demoprogramm: Countdown mittels Zustandsautomat (von Karl-Heinz - 2.09.2020 17:34)
    Strom sparen (von Dietmar - 2.09.2020 17:58)
        Stromaufnahme verschiedener µController (reale Meßwerte) (von das |_ Team - 3.09.2020 23:37)
            Re: Stromaufnahme verschiedener µController (reale Meßwerte) (von Dietmar - 4.09.2020 0:16)
                Re: Stromaufnahme verschiedener µController (reale Meßwerte) (von das |_ Team - 4.09.2020 10:25)
Re: Demoprogramm: Countdown mittels Zustandsautomat (von das |_ Team - 30.08.2020 20:49)
    Re: Demoprogramm: Countdown mittels Zustandsautomat (von Dietmar - 30.08.2020 21:23)
        Re: Demoprogramm: Countdown mittels Zustandsautomat (von Joachim - 31.08.2020 17:59)
            Definitionsdatei (von Dietmar - 31.08.2020 19:00)