Declare Sub Dcf_uhrzeitlesen()
'$programmer = 12 'MCS
USB (Zeile weglassen wenn anderer Programmer)
'$prog &HFF , &HFF , &HD9 , &HFE 'Fusebits richtig programmieren (Quarz ein,Jtag aus)
$regfile = "m8adef.dat"
'$framesize = 32
'$swstack = 32
'$hwstack = 64
$framesize = 128
$swstack = 128
$hwstack = 128
$crystal = 3686400 'Quarzfrequenz
$baud = 9600 'Baudrate (Übertragungsgeschwindigkeit)
Baud = 9600
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 20x4
Cursor Off Noblink
Cls
Config Pinb.3 = Output 'LED
Led1 Alias Portb.3
'Diese Variablen enthalten nach dem Abruf die Uhrzeit und Datum Informationen
Dim Uhr_sek As Byte
Dim Uhr_min As Byte
Dim Uhr_std As Byte
Dim Uhr_tag As Byte
Dim Uhr_monat As Byte
Dim Uhr_jahr As Byte
Dim Uhr_wochentag As Byte
Dim Uhr_sommerzeit As Byte
Dim Uhr_zeitumschaltung As Byte
Dim Uhr_sync As Byte
Dim Bstart As Byte 'Enthaelt Byte Zeilenanfang immer 126
Dim Bende As Byte 'Enthaelt Byte Zeilenanfang immer 127
Dim Zeitgueltig As Byte
Wait 1
Zeitgueltig = 0
Do
Dcf_uhrzeitlesen
If Zeitgueltig = 1 Then
Locate 1 , 1
Lcd "abgeglichen "
Print "Heute haben wir den: " ; Uhr_tag ; "." ; Uhr_monat ; "." ; Uhr_jahr ; " " ; Uhr_std ; ":" ; Uhr_min ; ":" ; Uhr_sek ; " Wochentag:" ; Uhr_wochentag
Locate 2 , 1
Lcd Uhr_tag ; "." ; Uhr_monat ; "." ; Uhr_jahr
Locate 3 , 1
Lcd Uhr_std ; ":" ; Uhr_min ; ":" ; Uhr_sek ;
Locate 4 , 1
Lcd "Wochentag: " ; Uhr_wochentag
If Uhr_sommerzeit = 1 Then Print "Es gilt Sommerzeit!"
Print "Die Uhr wurde von " ; Uhr_sync ; " Minuten per Funk abgeglichen"
Print
Else
Locate 1 , 1
Lcd "nicht abgeglichen"
End If
Wait 3
Toggle Led1
Loop
'Hilfsfunktionen
'Diese Funktion ruft der Zeit im binären Modus ab
'und uerbergibt diese den globalen Uhr Variablen
Sub Dcf_uhrzeitlesen()
Config Pinb.2 = Input
If Pinb.2 = 1 Then 'DCF Uhrzeit bereits vorhanden?
'Kurz auf GND setzen um DCF Decoderzeit ausgeben zu lassen
Config Portb.2 = Output
Portb.2 = 0
Waitus 1
Config Pinb.2 = Input
Open "comB.2:2400,8,n,1" For Input As #1
Inputbin #1 , Bstart , Uhr_tag , Uhr_monat , Uhr_jahr , Uhr_std , Uhr_min , Uhr_sek , Uhr_wochentag , Uhr_sommerzeit , Uhr_zeitumschaltung , Uhr_sync , Bende
Close #1
Config Pinb.2 = Input
Uhr_tag = Uhr_tag - 65
Uhr_monat = Uhr_monat - 65
Uhr_jahr = Uhr_jahr - 65
Uhr_std = Uhr_std - 65
Uhr_min = Uhr_min - 65
Uhr_sek = Uhr_sek - 65
Uhr_wochentag = Uhr_wochentag - 65
Uhr_sommerzeit = Uhr_sommerzeit - 65
Uhr_zeitumschaltung = Uhr_zeitumschaltung - 65
Uhr_sync = Uhr_sync - 65
Zeitgueltig = 1
Else
Print "Zeit noch nicht verifiziert!"
End If
End Sub
Lesezeichen