hat denn keiner eine Idee?!
mir ist noch so durch den Kopf geschossen, was wäre wenn der µC überlastet ist? Also wenn der zulange in der Anzeigen Routine hängt (Gosub Anzeige)

mal etwas übersichtlicher...

Code:
'7Segmentanzeige mit 4 Anzeigen

$regfile = "m8def.dat"                                      'AT-Mega8
$crystal = 8000000                                          '18432000                                         '18,4320MHz Quarz

$baud = 9600                                                '38400

'_______________________________________________________________________________
Ddrb = &B11111111                                           'PortB = Ausgang (PB0=A usw.)
Ddrd = &B1110011                                            'PortD = Ausgang (PD0=Anzeige1, PD4=A2, PD5=A3, PD6=A4) PD2/3 =INT


'_______________________________________________________________________________
Dim Anzeige_akt As Word                                     'Aktuelle Zeitmessung
Dim Anzeige_str As String * 5                               'Zeit als String
Dim Anzeige_str_len As Byte                                 'String-Länge
Dim Anzeige_ziffer As String * 1                            'Aktuelle Ziffer
Dim Anzeige_pos As Byte                                     'Aktuelle Ziffer im String
Dim I As Byte                                               'Allgem. Laufzahl


Dim Test As Integer


'_______________________________________________________________________________
'TIMER0 Konfiguration für Ziffernwechsel:
Config Timer0 = Timer , Prescale = 64                       ' Timer0 für Anzeige
Const T0_preload = 130                                      ' Startwert Timer0 für 500Hz
'Tcnt0 = T0_preload
On Timer0 Timer_irq_led                                     ' Timer0-Overflow-Interrupt
Enable Timer0                                               ' Timer0 starten
Enable Interrupts
'Sreg.7 = 1                                                  'Globale Interruptfreigabe

'_______________________________________________________________________________
'TIMER1 Konfiguration für Messzeit Lichtschranke:
Config Timer1 = Timer , Prescale = 1024
Const Timervorgabe = 62000                                  '29535 -> 0,5 Hz
On Timer1 Timer_irq_kmh                                     'Unteprogramm aufrufen
Enable Timer1
Enable Interrupts

'_______________________________________________________________________________

I = 1
Test = 1

Do                                                          ' Dauerschleife als Hauptprogramm

Anzeige_akt = Test                                          'Zeit3        'Wert zum anzeigen

Print Test
Gosub Anzeige

Loop



'_______________________________________________________________________________
Timer_irq_led:
      'nix

Return

Anzeige:
Tcnt0 = T0_preload                                    'Timer wieder laden

      Anzeige_str = Str(anzeige_akt)                        ' Wert in String umwandeln
      Anzeige_str_len = Len(anzeige_str)                    ' Stringlänge messen

      Anzeige_pos = Anzeige_str_len - I
      Anzeige_pos = Anzeige_pos + 1

      Anzeige_ziffer = Mid(anzeige_str , Anzeige_pos , 1)

      Portc = 0                                             'Ghosting vermeiden (Ziffern nicht Segmente)

      Select Case Anzeige_ziffer                            'Ziffer auf Port

           Case "0" : Portb = 126                           'NULL
           Case "1" : Portb = 12                            'EINS
           Case "2" : Portb = 182                           'ZWEI
           Case "3" : Portb = 158                           'DREI
           Case "4" : Portb = 204                           'VIER
           Case "5" : Portb = 218                           'FÜNF
           Case "6" : Portb = 250                           'SECHS
           Case "7" : Portb = 14                            'SIEBEN
           Case "8" : Portb = 254                           'ACHT
           Case "9" : Portb = 222                           'NEUN
           Case Else : Portb = 0                            'NICHTS ANZEIGEN!!! Wenn Stelle leer!!!

      End Select

     'Segment wählen
      If I = 1 Then Portc.1 = 1                             'EINER
      If I = 2 Then
      Portc.2 = 1                                           'ZEHNER
      'Portb.0 = 1                                           'mti einer Nachkommastelle
      End If

      If I = 3 Then Portc.3 = 1                             'HUNDERTER
      If I = 4 Then Portc.4 = 1                             'TAUSENDER

      I = I + 1                                             'Nächste Ziffer
      If I => 5 Then I = 1                                  'max Anzeigen +1 angeben! damit Anzeige möglichst hell ist(bei 5Anzeigen muss bei der 6. wieder bei 1 Angefangen werden)

      'Timer0merker = Timer0merker + 1                       '+1 um intMerker zurück zu setzen
Return


Timer_irq_kmh:                                              'Aufruf jede oder jede halbe Sekunde
 Timer1 = Timervorgabe                                      'AUF TIMER EINSTELLUNG ACHTEN!!!!!!!
 Incr Test

Return