Hallo Bertl,
der DCF-Empfang (bzw. die Decodierung) in der DCF77.lib erfolgt NUR, wenn du das willst.
Mit Dcfstatus.7 = 0 schaltest du ihn AUS und mit Dcfstatus.7 = 1 EIN.
Das kannst du z.B. jede volle Stunde machen (siehe mein Beitrag hier am 6.9., 20.26 Uhr!). Oder wann du willst.
Die DCF77.lib braucht einen Timer und muss alle 25ms aufgerufen werden. Schau dir die DCF77_soft.bas und DCF77.bas an! In diesen Progs, die du in dein Programm - wie gesagt - mit $include einbinden kannst, wird der Timer dafür definiert. Du brauchst dich darum nicht zu kümmern. Die ISR kannst du auch so übernehmen, wie ich sie gepostet hatte.
Dein Prog sieht also z.B. so aus:
Das Unterprogramm "Anzeige_der_BASCOM_Zeit" muss nur die BASCOM-Variablen für die Zeit, also _hour, _min, _sec, ... auf dem LCD oder mit Print auf der RS232 ausgeben. Das schaffst du locker!Code:'Deine Definitionen $include "DCF77.bas" 'Ein Uhrenquarz vorhanden! Do Gosub Anzeige_der_BASCOM_Zeit 'Selbst schreiben! If _min = 0 And Dcfstatus.7 = 0 Then '1x pro Stunde: Dcfstatus.5 = 0 'Zeit inaktuell Dcfstatus.6 = 0 'Datum inaktuell End If 'Wenn Uhr oder Datum inaktuell, dann nach DCF stellen: 'Timer0 ist nur aktiv, solange DCF-Empfang läuft!!! If Dcfstatus.5 = 0 Or Dcfstatus.6 = 0 Then Dcfstatus.7 = 1 Enable Timer0 Else Dcfstatus.7 = 0 Disable Timer0 End If 'Hier noch andere wichtige Dinge! Loop End 'Nur nötig OHNE Uhrenquarz!!! 'Getdatetime: 'Nicht genutzt! 'Setdate: 'Settime: 'Return 'ISR - Interrupt Routine DCF77 Tim0_isr: Timer0 = Startwert Call Dcf77 Return Anzeige_der_BASCOM_Zeit: 'Anzeige der Zeitvariablen! Return
Wenn du KEINEN Uhrenquarz hast, nimmst du die DCF77_soft.bas anstelle von DCF77.bas, in der ISR machst du aus jeder 0 eine 2. Vor den Befehlen Getdatetime ... machst du 4x das ' weg und entfernst Enable Timer0 und Disable Timer0.
Alles klar?![]()
Muss funktionieren! Sonst: Bau 'mal alles so zusammen, wie du meinst und poste dein Prog dann hier, dann kann man besser was dazu sagen!
Gruß Dirk







Zitieren

Lesezeichen