$regfile = "m8def.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 100
Dim Sekunde As Byte 'Uhrzeit - Sekunde
Dim Minute As Byte 'Uhrzeit Minute
Dim Stunde As Byte 'Uhrzeit Stunde
Dim Asekunde As Byte 'Alarm Sekunden
Dim Aminute As Byte 'Alarm Minute
Dim Astunde As Byte 'Alarm Minute
Dim Alarm_flag As Bit 'Alarm an oder aus
Dim Lcd_sekunde As String * 2 'Ausgabe Sekunden
Dim Lcd_minute As String * 2 'Ausgabe Minuten
Dim Lcd_stunde As String * 2 'Ausgabe Sekunden
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , _
Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
Config Lcd = 16 * 2
Cls
Cursor Off
'-----------------------------------------------
'Taster0 Umschalter ,nicht gedrückt Uhr,gedrückt Alarm
Config Pind.2 = Input
Portd.2 = 0
Taster0 Alias Pind.2
'Taster1 Uhr stellen
Config Pind.3 = Input
Portd.3 = 0
Taster1 Alias Pind.3
'Taster2 Minuten stellen
Config Pind.4 = Input
Portd.4 = 0
Taster2 Alias Pind.4
'LED definieren
Config Portd.5 = Output
Led Alias Portd.5
'Buzzer Port
Config Portd.7 = Output
Speaker Alias Portd.7
'-----------------------------------------------
Config Timer1 = Timer , Prescale = 256
Enable Timer1
On Timer1 Takt
Enable Interrupts
Timer1 = 3036
Sekunde = 0
Minute = 0
Stunde = 0
'-----------------------------------------------
Do
'Umschalter zwischen Uhr und Alarm
If Taster0 = 0 Then
Waitms 50
Gosub Uhr
Elseif Taster0 = 1 Then
Waitms 50
Gosub Alarm
End If
'Alarm auslösen
If Minute = Aminute Then 'Vergleich Minuten
If Stunde = Astunde Then 'Vergleich Stunden
Alarm_flag = 1 'Alarm aktiv
End If
End If
If Alarm_flag = 1 Then
Led = 1
Wait 1
Led = 0
Wait 1
Led = 1
Sound Speaker , 50 , 1000 'Länge Tonhöhe
Wait 1
Sound Speaker , 50 , 1000
Wait 1
Sound Speaker , 50 , 1000
Wait 1
Sound Speaker , 50 , 1000
Wait 1
Sound Speaker , 50 , 1000
Wait 1
Sound Speaker , 50 , 1000
Wait 1
Sound Speaker , 100 , 1500
Sound Speaker , 100 , 1000
Sound Speaker , 100 , 1500
Wait 1
Led = 0
Alarm_Flag=0
End If
Loop
End
'Submenu Timer
Takt:
Incr Sekunde
Timer1 = 3036
Return
'Submenu Zeit
'----------- Anzeige Stunden , Minuten, Sekunden auf Display ------------------
Uhr:
Lcd_stunde = Str(stunde)
Lcd_stunde = Format(lcd_stunde , "00")
'----------------------------------
Lcd_minute = Str(minute)
Lcd_minute = Format(lcd_minute , "00")
'------------------------------------
Lcd_sekunde = Str(sekunde)
Lcd_sekunde = Format(lcd_sekunde , "00")
Locate 2 , 13
Lcd Lcd_sekunde
Locate 2 , 11
Lcd ":"
Locate 2 , 8
Lcd Lcd_minute
Locate 2 , 6
Lcd ":"
Locate 2 , 3
Lcd Lcd_stunde
Locate 1 , 1
Lcd "Aktuelle Uhrzeit"
Waitms 50
If Taster1 = 1 Then 'Uhr einstellen Minute
Waitms 50
Incr Minute
End If
If Taster2 = 1 Then 'Uhr einstellen Stunde
Waitms 50
Incr Stunde
End If
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
Return
'Submenu Alarm
Alarm:
Locate 1 , 1
Lcd " Aktuelle Alarm "
LCD_Stunde = Str(astunde)
Lcd_stunde = Format(lcd_stunde , "00")
'----------------------------------
LCD_Minute = Str(aminute)
Lcd_minute = Format(lcd_minute , "00")
'------------------------------------
LCD_sekunde = Str(asekunde)
Lcd_sekunde = Format(lcd_sekunde , "00")
'--------------------------------------
Locate 2 , 13
Lcd Lcd_sekunde
Locate 2 , 11
Lcd ":"
Locate 2 , 8
Lcd Lcd_minute
Locate 2 , 6
Lcd ":"
Locate 2 , 3
Lcd Lcd_stunde
Locate 1 , 1
Cursor Off Noblink
Waitms 50
If Asekunde > 59 Then Aminute = Aminute + 1
If Asekunde > 59 Then Asekunde = 0
If Aminute > 59 Then Astunde = Astunde + 1
If Aminute > 59 Then Aminute = 0
If Astunde > 23 Then Astunde = 0
'--------------Alarm einstellen Stunde -----------------------------------------
If Taster1 = 1 Then
Waitms 50
Incr Astunde
End If
'--------------Alarm einstellen Stunde -----------------------------------------
If Taster2 = 1 Then
Waitms 50
Incr Aminute
End If
Return