Guten Morgen!
Danke für die Mühe die du/ dir Ihr euch mit mir nehmt. Jedoch komme ich nicht weiter.
- Die Zeit mit Timer0 läuft soweit
- Die Zeit mit DCF-77 geht nicht
ALso was habe ich gemacht. Den im Code eingebauten Debugger bemüht. Nur in der Zeile
Debounce Pinb.5 , 0 , Uhrzeit ' , Sub
kommt eine Fehlermeldung beim compilieren (Label not found [Uhrzeit].
Dieser Label kann auch nicht gefunden werden, so meine ich den gibt es ja nicht im Programm. Aber was muss da stehen damit es geht.
Wenn ich diese ganze Zeile (Debounce....) lösche dann geht das compilieren und linken. Nur die im Display angezeigte Pausenlänge, Impulszahl und die Pari ist gleich Null.
in der dcf.lib habe ich
.equ Dcf_port = $ 16; $16 = Pinb
.equ Dcf_pin = 5; 5 = Pin 5
angepasst.
Sowohl die Lib als auch das Hauptprogramm habe ich neu compiliert und dann gebrannt.
Ich komme da nicht weiter. Auch wenn es wie so oft am richtigen lesen bei mir hängen mag.
Martin
Code:
'*******************************************************************************
'* DEMO für DCF77 Library *
'* *
'* Funktion der Library im "Readme.txt" *
'*******************************************************************************
$regfile = "m8def.dat"
$crystal = 3686400
$lib "dcf77.lib"
$external Dcf77
Declare Sub Dcf77
Config Timer0 = Timer , Prescale = 1024 'Timer für 40Hz (25ms)
Const Startwert = 170
Timer0 = Startwert
On Timer0 Tim0_isr 'Überlauf alle 25ms
Enable Interrupts
Enable Timer0
'Lcd ansteuerung
Config Lcd = 16 * 4
Config Portd = Output
Config Lcdpin = Pin , Rs = Portd.2 , E = Portd.3 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
Config Lcdbus = 4
Config Lcdmode = Port
'------------------------ Pin für DCF Eingang definieren -----------------------
Config Pinb.5 = Input 'DCF 77 Eingang
Set Portb.5 'Pullup einschalten
'--------------------- Variablen für DCF Routine -------------------------------
Dim Status As Byte , Zaehler As Byte , Buffer As Byte , Impuls As Byte
Dim H_sek As Byte , Sekunde As Byte , T_min As Byte , T_std As Byte
Dim Minute As Byte , Stunde As Byte , Wotag As Byte , Tag As Byte
Dim Monat As Byte , Jahr As Byte , Pari As Byte , Pau As Byte , Imp As Byte
'------------ Wichtig bei internem RC Oszillator !!! ---------------------------
'Osccal = 184 'int. Oszillator kallibrieren
'-------------------------------------------------------------------------------
'******************** HAUPTPROGRAMM ********************************************
'Cls
'Cursor Off
'Do
'
'Locate 1 , 7
'If Stunde < 10 Then Lcd "0" ; Stunde ; ":" Else Lcd Stunde ; ":"
'If Minute < 10 Then Lcd "0" ; Minute ; ":" Else Lcd Minute ; ":"
'If Sekunde < 10 Then Lcd "0" ; Sekunde Else Lcd Sekunde
'
'If H_sek > 20 Then 'Doppelpunkt blinken lassen
' Locate 1 , 12
' Lcd " "
'End If
'
'Locate 2 , 1
'If Status.3 = 1 And Status.4 = 1 Then
' Lcd Lookupstr(wotag , Wochentag) ; ", "
' If Tag < 10 Then Lcd " " ; Tag ; "." Else Lcd Tag ; "."
' If Monat < 10 Then Lcd " " ; Monat ; "." Else Lcd Monat ; "."
' Lcd "20"
' If Jahr < 10 Then Lcd "0" ; Jahr Else Lcd Jahr
'End If
'
'Loop
'---------------------- nur für DEBUG nötig ------------------------------------
Cls
Do
Debounce Pinb.5 , 0 , Uhrzeit ' , Sub
If Imp > 0 Then
Locate 1 , 1
Lcd "Impulslaenge: " ; Imp
If Imp < 6 Then Lcd " = 0" Else Lcd " = 1"
End If
Locate 1 , 1
Lcd "Pausenlaenge: "
If Pau < 10 Then Lcd "0" ; Pau Else Lcd Pau
Locate 2 , 1
Lcd "ImpZ: "
If Impuls < 10 Then Lcd "0" ; Impuls Else Lcd Impuls
Locate 2 , 10
Lcd "Pari=" ; Status.4 ; " Imp_OK=" ; Status.3
Loop
'---> Die Impulslänge sollte zwischen 2 und 8 liegen
'---> Die Pausenlänge sollte zwischen 70 und 90 liegen
'---> Der Impulszähler sollte gleichmässig im Sekundentakt bis 59 hochzählen
'---> Die Parität sollte ab dem 36.Impuls auf "1" gehen
End
'*************** ENDE HAUPTPROGRAMM ********************************************
'------------------------ Interrupt Routine ------------------------------------
Tim0_isr:
Timer0 = Startwert
Call Dcf77
Return
'------------------------ Daten für Wochentag ----------------------------------
Wochentag:
Data " " , "Mo" , "Di" , "Mi" , "Do" , "Fr" , "Sa" , "So"
Lesezeichen