' Minimal Version zum Testen ' DCF77 Uhr nach MCS Bascom ' Hw Eigenbau ' modified by Jonny Roggenbuck Stand : 28.06.2010 ' Realtime Clock Quarz 32,xxx khz hängt an Port B.6 und B.7 ' Port C Pin5 belegt mit DCF77 Puls aus Pollin Modul ' LED an Port C Pin 4 ' Taster 1 an Port Pin B 5 zusammen mit SCK $regfile = "M8def.dat" 'Atmel Mega8 $crystal = 8000000 'intern 8 Mhz $hwstack = 128 $swstack = 128 $framesize = 128 '******* Port D zehner Stunden ************* Config Portd.0 = Output Config Portd.1 = Output Config Portd.2 = Output Config Portd.3 = Output '****** Port D einer Stunden ************ Config Portd.4 = Output Config Portd.5 = Output Config Portd.6 = Output Config Portd.7 = Output '****** Port C zehner Minuten *************** Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Output Config Portc.4 = Output ' led 1 ' C5 = DCF pulse '****** Port B einer Minuten ******************** Config Portb.0 = Output 'Nixie port B Config Portb.1 = Output Config Portb.2 = Output Config Portb.3 = Output Config Portb.4 = Output 'Config Portb.5 = Input ' Schalter 1 'Config Portb.6 = Output Quarz 32 khz 'Config Portb.7 = Output Quarz 32 khz Dim Zeit As String * 8 Dim Wert1 As String * 1 Dim Wert2 As String * 1 Dim Wert3 As String * 1 Dim Wert4 As String * 1 Dim Wert As Byte Dim Temp As Byte Dim Temp1 As Byte Dim Temp2 As Byte Dim Temp3 As Byte Dim Temp4 As Byte Dim Temp5 As Byte Dim Temp6 As Byte Enable Interrupts ' Config DCF77 Config Dcf77 = Pinc.5 , Timer = 1 , ' Secondticks = 40 , Timer1sec = 1 , Debug = 1 , Inverted = 0 Config Date = Dmy , Separator = . Time$ = "00:00:00" Dim I As Integer Dim Sec_old As Byte , Dcfsec_old As Byte Sec_old = 99 : Dcfsec_old = 99 Main: Reset Portc.5 ' Pull-Up aus Do Portc.4 = Pinc.5 '**************** Zeit = Time$ ' ohne diese Zeile geht garnichts! Keine Ahnung warum... '*************** Gosub Zeit_ausgabe Loop End Zeit_ausgabe: Wert1 = Mid(time$ , 5 , 1) 'Ermitteln einer Minuten Wert2 = Mid(time$ , 4 , 1) 'Ermitteln Zehner Minuten Wert3 = Mid(time$ , 2 , 1) 'Ermitteln Stunden Einer Wert4 = Mid(time$ , 1 , 1) 'Ermitteln Stunden Zehner '*********************** Temp1 = Wert1 'Umwandlung String --> byte Portb = Temp1 '*************************** Wert = Wert2 Wert = Wert And &H0F Temp = Portc And &HF0 Portc = Temp Or Wert ' *************** Routine zur Ausgabe im std1 und std 10 Temp3 = Wert3 - 3 'Umwandlung String --> byte Temp4 = Wert4 'Umwandlung String --> Byte Shift Temp3 , Left , 4 'nach links schieben Temp4 = Temp4 + Temp3 'Verknüpfen Nibbles Portd = Temp4 'Ausgabe BCD Wert an SN74141 über PortC Return