so hier der code.
vermute allerdings dass es mit dem set befehl was zu tun hat da ich eine 0 zum einschalten des lichts brauche und set macht ja ne 1. habe aber auch schon versucht set und reset zu tauschen hat aber nix gebracht.
Code:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 ,
Db7 = Portb.4 , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 2
Config Lcdbus = 4
Cursor Off
Config Portb.0 = Output
Config Portb.5 = Output
Config Portb.1 = Output
Config Pind.0 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.3 = Input
Config Pinc.0 = Input
Const Adc_multi = 0.00244140625
Config Adc = Single , Prescaler = Auto
Start Adc
Portd.0 = 1
Portd.1 = 1
Portd.2 = 1
Portd.3 = 1
Enable Interrupts
Config Clock = Soft
Config Date = Mdy , Separator = /
Declare Sub Stunde
Declare Sub Minute
Declare Sub Stundew
Declare Sub Minutew
Declare Sub Onoff
Declare Sub Licht
Declare Sub Stellenmenue
Dim Stellenstunde As Byte
Dim Stellenminute As Byte
Dim Konfiguration As Byte
Dim Anaus As Byte
Dim Messung As Word
dim Lichtzeit as byte
Licht alias portb.5
Cls
Time$ = "00:00:00"
Date$ = "01/01/00"
Do
If Konfiguration = 1 Then
Locate 1 , 1
If Stellenstunde < 10 Then Lcd "0"
Lcd Stellenstunde ; ":"
If Stellenminute < 10 Then Lcd "0"
Lcd Stellenminute
End If
Locate 2 , 9
Lcd Date$
Debounce Pind.0 , 0 , Stellenmenue , Sub
If Konfiguration = 0 Or Konfiguration = 2 Or Konfiguration = 3 Then
Locate 1 , 1
Lcd Time$
End If
If Konfiguration = 1 Then 'Wecker
stellen
Debounce Pind.1 , 0 , Stundew , Sub
Debounce Pind.2 , 0 , Minutew , Sub
End If
If Konfiguration = 2 Then 'Uhr stellen
Debounce Pind.1 , 0 , Stunde , Sub
Debounce Pind.2 , 0 , Minute , Sub
End If
Debounce Pind.3 , 0 , Onoff , Sub
If Konfiguration = 0 And Anaus = 0 Then 'Wecker
an/aus
Locate 2 , 1
Lcd "aus "
End If
If Konfiguration = 0 And Anaus = 1 Then
Locate 2 , 1
Lcd "an "
End If
If Stellenstunde = _hour And Stellenminute = _min And Anaus = 1 Then
Portb.1 = 1
Else
Portb.1 = 0
End If
Messung = Getadc (0)
If _hour > 20 or _hour < 8 then
Portb.5 = 1
If Messung > 300 then
lichtzeit = 5
set licht
end if
else
Portb.5 = 0
End If
Loop
'Stellenmenü 'Menü zum
einstellen Wecker/Uhr/Datum
Stellenmenue:
Incr Konfiguration
If Konfiguration = 4 Then Konfiguration = 0
If Konfiguration = 1 Then
Locate 2 , 1
Lcd "Wecker"
End If
If Konfiguration = 2 Then
Locate 2 , 1
Lcd "Uhr "
End If
If Konfiguration = 3 Then
Locate 2 , 1
Lcd "Datum "
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
sectic:
if lichtzeit>0 then
decr lichtzeit
end if
if lichtzeit=0 then reset licht
return
Lesezeichen