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
If Stellenstunde < 10 Then Lcd "0"
Lcd Stellenstunde ; ":"
If Stellenminute < 10 Then Lcd "0"
Lcd 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
Debounce Pind.6 , 0 , Onoff , Sub
If Konfiguration = 0 Then 'Wecker an/aus
If Anaus = 0 Then
Locate 2 , 11
Wait 1
Lcd " aus"
End If
If Anaus = 1 Then
Locate 2 , 11
Wait 1
Lcd " an"
End If
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
Stellenmenue:
Incr Konfiguration
If Konfiguration = 3 Then Konfiguration = 0
Locate 2 , 11
If Konfiguration = 0 Then
Locate 2 , 11
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
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
Stunde:
Incr _hour
If _hour > 23 Then
_hour = 00
End If
Return
'Minute 'Hier wird die Minute der Uhr hochgezählt
Minute:
Incr _min
If _min > 59 Then
_min = 00
End If
Return
'MinuteW 'Hier wird die Minute des Weckers hochgezählt
Minutew:
Incr Stellenminute
If Stellenminute > 59 Then
Stellenminute = 0
End If
Return
'Stundew 'Hier wird die Stunde des Weckers hochgezählt
Stundew:
Incr Stellenstunde
If Stellenstunde > 23 Then
Stellenstunde = 0
End If
Return
'onoff 'Hier wird der Wecker ein- und ausgeschaltet
Onoff:
Incr Anaus
If Anaus = 2 Then Anaus = 0
Return
'Licht 'Hier wird das Licht für 4 Sekunden eingeschaltet
Licht:
Portc.5 = 1
Wait 4
Return
Lesezeichen