Code:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Lcdbus = 4
Cursor Off
Ddrb = &B11111111
Ddrd = &B00000000
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
Portd.5 = 1
Portd.6 = 1
Portd.7 = 1
Enable Interrupts
Config Clock = Soft
Declare Sub Stunde
Declare Sub Minute
Declare Sub Menue
Declare Sub Stundew
Declare Sub Minutew
Declare Sub Onoff
Declare Sub Licht
Declare Sub Stellenmenue
Dim Modus As Byte
Dim Stellenstunde As Byte
Dim Stellenminute As Byte
Dim Konfiguration As Byte
Dim Anaus As Byte
Cls
Time$ = "00:00:00"
Do
Locate 1 , 1
Lcd Time$ ; " " ;
Locate 1 , 12
Lcd Stellenstunde ; ":" ; Stellenminute
Debounce Pind.2 , 0 , Menue , Sub
Debounce Pind.3 , 0 , Stellenmenue , Sub
If Konfiguration = 1 Then 'Wecker stellen
Debounce Pind.4 , 0 , Stundew , Sub
Debounce Pind.5 , 0 , Minutew , Sub
End If
If Konfiguration = 2 Then 'Uhr stellen
Debounce Pind.4 , 0 , Stunde , Sub
Debounce Pind.5 , 0 , Minute , Sub
End If
If Konfiguration = 0 Then 'Wecker an/aus
Debounce Pind.6 , 0 , Onoff , Sub
End If
If Stellenstunde = _hour And Stellenminute = _min And Anaus = 1 Then
Portb.5 = 1
Else
Portb.5 = 0
End If
Debounce Pind.7 , 0 , Licht , Sub
Loop
'Stellenmenü 'Menü zum einstellen Wecker/Uhr
Sub Stellenmenue
Incr Konfiguration
If Konfiguration = 3 Then Konfiguration = 0
Locate 2 , 11
If Konfiguration = 0 Then
Locate 2 , 11
Wait 1
Lcd " "
End If
If Konfiguration = 1 Then
Locate 2 , 11
Wait 1
Lcd "Wecker"
End If
If Konfiguration = 2 Then
Locate 2 , 11
Wait 1
Lcd " Uhr"
End If
End Sub
Return
'Menü 'Menü MP3, Radio, Aux
Menue:
Incr Modus
If Modus = 4 Then Modus = 0
Locate 2 , 1
If Modus = 0 Then
Locate 2 , 1
Wait 1
Lcd "Aus "
End If
If Modus = 1 Then
Locate 2 , 1
Wait 1
Lcd "MP3 "
Portb.0 = 1
Else
Portb.0 = 0
End If
If Modus = 2 Then
Locate 2 , 1
Wait 1
Lcd "Radio"
Portb.1 = 1
Else
Portb.1 = 0
End If
If Modus = 3 Then
Locate 2 , 1
Wait 1
Lcd "AUX "
Portb.2 = 1
Else
Portb.2 = 0
End If
Return
'Stunde 'Hier wird die Stunde der Uhr hochgezählt
Sub Stunde
Incr _hour
If _hour > 23 Then
_hour = 00
End If
End Sub
'Minute 'Hier wird die Minute der Uhr hochgezählt
Sub Minute
Incr _min
If _min > 59 Then
_min = 00
End If
End Sub
Return
'MinuteW 'Hier wird die Minute des Weckers hochgezählt
Sub Minutew
Incr Stellenminute
If Stellenminute > 59 Then
Stellenminute = 0
End If
End Sub
Return
'Stundew 'Hier wird die Stunde des Weckers hochgezählt
Sub Stundew
Incr Stellenstunde
If Stellenstunde > 23 Then
Stellenstunde = 0
End If
End Sub
Return
'onoff 'Hier wird der Wecker ein- und ausgeschaltet
Sub Onoff
Incr Anaus
If Anaus = 2 Then Anaus = 0
Locate 2 , 13
If Anaus = 0 Then
Locate 2 , 14
Wait 1
Lcd "aus"
End If
If Anaus = 1 Then
Locate 2 , 14
Wait 1
Lcd " an"
End If
End Sub
Return
'Licht 'Hier wird das Licht für 4 Sekunden eingeschaltet
Sub Licht
Portc.5 = 1
Wait 4
End Sub
Return
Lesezeichen