Ich habe es. Na gut, das formatieren für Stunde, Minute und Sekunden musste ich mir noch organisieren. Ansonsten habe ich den Ablauf, der ja immer von der Tick_1s Routine aus geht begriffen. Timer und Isr_oc2: war schon vorhanden, muss ich nicht jedes mal neu erfinden.
CodeBox BascomAVR
CodeBox BascomAVR
$regfile = "m8def.dat" 'Controllerdefinitionsdatei einbinden $crystal = 8000000 'Systemtakt angeben (Baudrate) $hwstack = 40 'Stacks $swstack = 16 $framesize = 32 Dim Count As Byte Dim Sekunde As Word Dim Minute As Word Dim Stunde As Word Dim S1 As String * 2 Dim S2 As String * 2 Dim S3 As String * 2 ' Aliase Rot Alias Portd.7 Gruen Alias Portc.3 Blau Alias Portd.6 Key Alias Pind.5 '---------------------------------------------------------------------------- Sekunde = 00 Minute = 16 Stunde = 16 '---------------------------------------------------------------------------- Init: Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , _ E = Portd.3 , Rs = Portd.2 Config Lcd = 16 * 2 Initlcd Cls Cursor Off ' Konfiguration Timer 2 (CTC, 8MHz/256/249 = 8ms) Config Timer2 = Ctc , Prescale = 256 , Clear_timer = 1 Ocr2 = 249 ' Setze Maximalwert für Timer 2 (CTC) On Oc2 Isr_oc2 ' Setze ISR für Timer 2 Overflow Compare Enable Oc2 ' Aktiviere Timer 2 Overflow Compare Int Enable Interrupts '---------------------------------------------------------------------------- Main: If Sekunde = 59 Then Sekunde = 0 Incr Minute End If If Minute = 59 Then Minute = 0 Incr Stunde End If If Stunde = 23 Then Stunde = 0 End If '---------------------------------------------------------------------------- Home S1 = Str(stunde) S1 = Format(s1 , "00") '---------------------------------------------------------------------------- S2 = Str(minute) S2 = Format(s2 , "00") '---------------------------------------------------------------------------- S3 = Str(sekunde) S3 = Format(s3 , "00") '---------------------------------------------------------------------------- Locate 2 , 13 Lcd S3 Locate 2 , 11 Lcd ":" Locate 2 , 8 Lcd S2 Locate 2 , 6 Lcd ":" Locate 2 , 3 Lcd S1 Locate 1 , 1 Lcd " Std. Min. Sek." Waitms 50 Goto Main '---------------------------------------------------------------------------- Isr_oc2: Incr Count If Count = 125 Then Count = 0 Gosub Tick_1s End If Return '---------------------------------------------------------------------------- Tick_1s: Incr Sekunde Return