Hi Urs,
... noch vergessen ...
Hier die beiden include-Dateien für die LIB V2.50. Kann man einfach ins eigene Prog mit $include "DCF77.bas" einbinden:
Zuerst die DCF77.bas für den Betrieb MIT Uhrenquarz:
Code:
'###########################################################################
'Programmname: DCF77.BAS
'Aufgabe:
'Include-Programm für die DCF77.lib
'
'Hardware:
'M32 mit 8 MHz
'Es ist ein DCF-Empfänger (CONRAD 641138) an Portd.3 angeschlossen
'und ein Uhrenquarz 32768Hz an Pinc.6/Pinc.7 (TOSC1/2).
'###########################################################################
Config Date = Dmy , Separator = . 'deutsches Datumsformat
Config Clock = Soft 'Softclock aktivieren
' (läuft mit Timer2!)
$lib "dcf77.lib" 'LIB für DCF77
$external Dcf77
Declare Sub Dcf77
Config Timer0 = Timer , Prescale = 1024 'Timer 40Hz
Const Startwert = 61 'Für 8MHz
Timer0 = Startwert
On Timer0 Tim0_isr 'Überlauf 40x/s
Enable Interrupts
Disable Timer0 'zunächst ausschalten
'---------------------- Pin für DCF Eingang definieren ---------------------
'Jeder Portpin kann benutzt werden.
'Auch in der "Dcf77.lib" entsprechend anpassen !!!
Config Pind.3 = Input 'DCF77 Eingang
Set Portd.3 'Pullup ein
'--------------------- Variablen der DCF77.lib -----------------------------
Dim _dayofweek As Byte , Dcfstatus As Byte , Dcfflags As Byte
'_dayofweek -> 1..7 (Mo..So)
'Dcfstatus -> Bit0: intern Bit4: Stundenparität OK
' Bit1: intern Bit5: Uhr nach DCF gestellt
' Bit2: 58 Impulse empfangen Bit6: Datum nach DCF gestellt
' Bit3: Parität OK Bit7: Uhr nach DCF stellen
' ACHTUNG: Bits 0..4 NUR LESEN!!!
'Dcfflags -> Bit0 (R) : Reserve-Antenne des DCF77-Senders
' Bit1 (A1): Ankündigung des Wechsels MEZ <-> MESZ
' Bit2 (Z1): \__ Z1/Z2: 10 = MESZ, 01 = MEZ
' Bit3 (Z2): /
' Bit4 (A2): Ankündigung einer Schaltsekunde
' Bit5 (S) : Startbit f. Zeitinformationen (immer 1)
'Interne Variablen der DCF77.lib:
Dim Dcfcounter As Byte , Dcfbuffer As Byte , Dcfimpulse As Byte
Dim Dcfparity As Byte , Dcfhsec As Byte , Dcftemp(7) As Byte
Dim Dcfpau As Byte , Dcfimp As Byte 'Nur für Debug!
'---------------------------------------------------------------------------
Dcfstatus.7 = 0 'Uhr nach DCF stellen: AUS
Dcfstatus.5 = 0 'Uhrzeit inaktuell
Dcfstatus.6 = 0 'Datum inaktuell
... und dann die Version DCF77_soft.bas für die Softclock OHNE Uhrenquarz:
Code:
'###########################################################################
'Programmname: DCF77_soft.BAS
'Aufgabe:
'Include-Programm für die DCF77.lib
'
'Hardware:
'M32 mit 8 MHz
'Es ist ein DCF-Empfänger (CONRAD 641138) an Portd.3 angeschlossen.
'###########################################################################
Config Date = Dmy , Separator = . 'deutsches Datumsformat
Config Clock = User 'Softclock aktivieren
$lib "dcf77.lib" 'LIB für DCF77
$external Dcf77_soft
Declare Sub Dcf77_soft
Config Timer2 = Timer , Prescale = 1024 'Timer 40Hz
Const Startwert = 61 'Für 8MHz
Timer2 = Startwert
On Timer2 Tim2_isr 'Überlauf 40x/s
Enable Interrupts
Enable Timer2
'---------------------- Pin für DCF Eingang definieren ---------------------
'Jeder Portpin kann benutzt werden.
'Auch in der "Dcf77.lib" entsprechend anpassen !!!
Config Pind.3 = Input 'DCF77 Eingang
Set Portd.3 'Pullup ein
'--------------------- Variablen der DCF77.lib -----------------------------
Dim _dayofweek As Byte , Dcfstatus As Byte , Dcfflags As Byte
'_dayofweek -> 1..7 (Mo..So)
'Dcfstatus -> Bit0: intern Bit4: Stundenparität OK
' Bit1: intern Bit5: Uhr nach DCF gestellt
' Bit2: 58 Impulse empfangen Bit6: Datum nach DCF gestellt
' Bit3: Parität OK Bit7: Uhr nach DCF stellen
' ACHTUNG: Bits 0..4 NUR LESEN!!!
'Dcfflags -> Bit0 (R) : Reserve-Antenne des DCF77-Senders
' Bit1 (A1): Ankündigung des Wechsels MEZ <-> MESZ
' Bit2 (Z1): \__ Z1/Z2: 10 = MESZ, 01 = MEZ
' Bit3 (Z2): /
' Bit4 (A2): Ankündigung einer Schaltsekunde
' Bit5 (S) : Startbit f. Zeitinformationen (immer 1)
'Interne Variablen der DCF77.lib:
Dim Dcfcounter As Byte , Dcfbuffer As Byte , Dcfimpulse As Byte
Dim Dcfparity As Byte , Dcfhsec As Byte , Dcftemp(7) As Byte
Dim Dcfpau As Byte , Dcfimp As Byte 'Nur für Debug!
'---------------------------------------------------------------------------
Dcfstatus.7 = 0 'Uhr nach DCF stellen: AUS
Dcfstatus.5 = 0 'Uhrzeit inaktuell
Dcfstatus.6 = 0 'Datum inaktuell
Demo-Progs evtl. auf Anfrage, falls es bei dir nicht so läuft!
Gruß Dirk
Lesezeichen