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:
Code:$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?







Zitieren

Lesezeichen