xbgamer
25.06.2010, 22:46
Servus ich bin gerade drann einen Funkwecker mit einem DCF77 zu bauen.
Die Hardware steht soweit. Es fehlt somit nur die Software. Jedoch weiß ich nicht so recht wie das ganze nun weiter geht.
Ich habe bereits dies erstellt:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 ,
Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Lcdbus = 4
Cursor Off
Config Pinb.1 = Output
Config Pinb.4 = Output
Config Pinb.5 = Output
Config Pinb.3 = Input
Config Pind.4 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.3 = Input
Portd = &B00011111
Enable Interrupts
Config Clock = Soft
Declare Sub Stundew
Declare Sub Minutew
Declare Sub Onoff
Declare Sub Licht
Dim Stellenstunde As Byte
Dim Stellenminute As Byte
Dim Anaus As Byte
Cls
Time$ = "00:00:00"
Date$ = "01:01: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
Locate 2 , 1
Lcd Date$ ; " " ;
Debounce Pind.2 , 0 , Stundew , Sub 'Wecker
Stellen
Debounce Pind.3 , 0 , Minutew , Sub
Debounce Pind.1 , 0 , Onoff , Sub
If Anaus = 0 Then 'Wecker
an/aus
Locate 2 , 11
Lcd " aus"
End If
If Anaus = 1 Then
Locate 2 , 11
Lcd " an"
End If
Debounce Pind.4 , 0 , Licht , Sub
Loop
'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:
Portb.5 = 1
Wait 4
Portb.5 = 0
Return
jedoch sind hier schon Sachen die ich nicht hinbekomme. Und zwar wird mir das Datum nicht richtig angezeigt die Doppelpunkte sind nicht richtig.
Und ich habe eigentlich vor das Licht von 8-20Uhr einzuschalten und in der Nacht soll es mit einem Tastendruck 4 Sekunden eingeschaltet werden können.
Mein Ansatz war:
If _hour <20 and _hour >8 or pind.4 = 1 then
portb.5 = 0
else
portb.5 = 1
end if
Jedoch tut sich so nix.
Kann mir jemand hierbei helfen und mir vielleicht auch erklären wie ich hier nun das DCF77 Signal einarbeite?
Die Hardware steht soweit. Es fehlt somit nur die Software. Jedoch weiß ich nicht so recht wie das ganze nun weiter geht.
Ich habe bereits dies erstellt:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 ,
Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Lcdbus = 4
Cursor Off
Config Pinb.1 = Output
Config Pinb.4 = Output
Config Pinb.5 = Output
Config Pinb.3 = Input
Config Pind.4 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.3 = Input
Portd = &B00011111
Enable Interrupts
Config Clock = Soft
Declare Sub Stundew
Declare Sub Minutew
Declare Sub Onoff
Declare Sub Licht
Dim Stellenstunde As Byte
Dim Stellenminute As Byte
Dim Anaus As Byte
Cls
Time$ = "00:00:00"
Date$ = "01:01: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
Locate 2 , 1
Lcd Date$ ; " " ;
Debounce Pind.2 , 0 , Stundew , Sub 'Wecker
Stellen
Debounce Pind.3 , 0 , Minutew , Sub
Debounce Pind.1 , 0 , Onoff , Sub
If Anaus = 0 Then 'Wecker
an/aus
Locate 2 , 11
Lcd " aus"
End If
If Anaus = 1 Then
Locate 2 , 11
Lcd " an"
End If
Debounce Pind.4 , 0 , Licht , Sub
Loop
'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:
Portb.5 = 1
Wait 4
Portb.5 = 0
Return
jedoch sind hier schon Sachen die ich nicht hinbekomme. Und zwar wird mir das Datum nicht richtig angezeigt die Doppelpunkte sind nicht richtig.
Und ich habe eigentlich vor das Licht von 8-20Uhr einzuschalten und in der Nacht soll es mit einem Tastendruck 4 Sekunden eingeschaltet werden können.
Mein Ansatz war:
If _hour <20 and _hour >8 or pind.4 = 1 then
portb.5 = 0
else
portb.5 = 1
end if
Jedoch tut sich so nix.
Kann mir jemand hierbei helfen und mir vielleicht auch erklären wie ich hier nun das DCF77 Signal einarbeite?