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:
... und dann die Version DCF77_soft.bas für die Softclock OHNE 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
Demo-Progs evtl. auf Anfrage, falls es bei dir nicht so läuft!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
Gruß Dirk







Zitieren

Lesezeichen