Danke für die schnelle Rückmeldung!
Dieser "Codeschnipsel" ist eigentlich schon das ganze Programm bzw. Teilprogramm für den Alarm.
Vom Uhrenprogramm wird nur die aktuelle Zeitinformation übernommen (_hour, _min) und mit der eingestellten Zeit verglichen.
Das ist das Ganze:
Code:
$regfile = "m8def.dat"
$crystal = 9830400
$hwstack = 60
$swstack = 32
$framesize = 64
$include "INIT_LCD20x4.bas" 'LCD an Port D
Pinb = &B11000000 'B 0,1 = Enc; 2,3,4,5 = Taster
Portb = &B00111111
Dim Al_min As Byte , Al_std As Byte
Enc_a Alias Pinb.0
Enc_b Alias Pinb.1
Ta_std Alias Pinb.2
Ta_min Alias Pinb.3
Ta_stellen Alias Pinb.4
Ta_enc Alias Pinb.5
Locate 4 , 1 : Lcd "Alarm"
'--------------- Taster - Schleife --------------------------------
Do
If Ta_stellen = 0 Then
Waitms 10
While Ta_stellen = 0
NOP ' Debouncing
Nop
Wend
Goto Set_alarm
End If
Locate 4 , 13 : Lcd " Ein "
Loop
'-------------- Stellen - Schleife ------------------------------------------
Set_alarm:
Do
If Ta_min = 0 Then
Al_min = Al_min + 1 'Minute stellen
If Al_min = 60 Then Al_min = 0
Waitms 200
End If
If Ta_std = 0 Then
Al_std = Al_std + 1 'Stunde stellen
If Al_std = 24 Then Al_std = 0
Waitms 200
End If
'-----------------------------------------------------------------------------------------
If Ta_stellen = 0 Then Exit Do
'-----------------------------------------------------------------------------------------
Locate 4 , 13 : Lcd "Stellen"
Locate 4 , 7 : Lcd Al_std ; ":" ; Al_min
Loop
'Return
End
'(
'-------------- LCD rechtsbündige Anzeige ------------------------------------
Locate 4 , 7 ' Anzeige Al_Std
If Al_Std < 10 Then Lcd " " ; Al_Std Else Lcd Al_Std ; " "
Locate 4 , 9 ' Anzeige Al_Min
If Al_Min < 10 Then Lcd ":0" ; Al_Min Else Lcd ":" ; Al_Min
Waitms 50
')
Ich hab den RETURN mal rausgenommen, dann bleibt er wie vorhersehbar bei "Stellen" stehen.
Die Frage ist für mich also: Wie komme ich aus der Stellroutine, ohne den Inhalt von Al_std und Al_min
zu verlieren?
Lesezeichen