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"







Zitieren

Lesezeichen