ich habe mit der RN-Digi Platine eine große 7 segmentstoppuhr gebaut mit 100mm hohen Ziffern.

Bild hier  


Es sind 2 RN-Digi Platinen eigentlich drinnen, die eine habe ich nun getrennt, weil ich auf der Fehlersuche bin.


die anzeige soll jede 1/100sek hochzählen.
das unten ist jetzt nur so ein testprogramm und nicht das eigentliche.
bloß sieht dann das display nach dem einschalten so aus.
Bild hier  

Code:
Declare Sub Led_display_init()
Declare Sub Led_display(byval Ziffer As Byte , Byval Zahl As Byte)

$regfile = "m32def.dat"
$crystal = 16000000
Config Timer1 = Timer , Prescale = 8

On Timer1 Timer_irq

Const Timervorgabe = 45536


Config Sda = Portc.1                                        ' I2C Bus konfigurieren
Config Scl = Portc.0


Const Rn_digi_slave_write = &H70
Const Rn_digi_slave_read = &H71
Const Dezimalpunktziffer = 2                                'Segment wo Dezimalpunkt leuchten soll (0=keinen)

Dim Segmente As Byte
Dim Z As Byte
Dim I As Byte




I2cinit
Led_display_init
I = 0


Enable Timer1
Enable Interrupts
Do



Loop



'Dies ist der Programmteil, der in dem von ihnen gewählten
'Intervall aufgerufen wird
Timer_irq:
  Timer1 = Timervorgabe
   Incr I
   If I = 10 Then
   I = 0
   End If


  Led_display 3 , I

   Return




Sub Led_display_init()
  I2cstart
  I2cwbyte Rn_digi_slave_write
  I2cwbyte 0                                                'Control Byte

  'Dynamic Alternative Mode und Helligkeit
  'Die oberen 3 Bits bestimmen die Helligkeit
  'Wenn es dunkler sein soll dann z.b. &B0110111
  I2cwbyte &B1110111

  I2cstop

  'Alle Ziffern auf 0
  For Z = 1 To 4
       Led_display Z , 0
  Next Z

End Sub


   Sub Led_display(ziffer An Byte , Zahl As Byte)
     I2cstart
     I2cwbyte Rn_digi_slave_write
     I2cwbyte Ziffer

     Select Case Zahl
         Case 0:
               Segmente = &H3F
         Case 1:
                Segmente = &H06
         Case 2:
                Segmente = &H5B
         Case 3:
                Segmente = &H4F
         Case 4:
                Segmente = &H66
         Case 5:
                Segmente = &H6D
         Case 6:
                Segmente = &H7D
         Case 7:
                Segmente = &H07
         Case 8:
                Segmente = &H7F
         Case 9:
                Segmente = &H67
         Case Else :
                Segmente = &H80                             'Ansonsten Dezimalpunkt

     End Select

     If Dezimalpunktziffer = Ziffer Then Segmente = Segmente Or &H80
     I2cwbyte Segmente
     I2cstop
End Sub
An was kann das liegen?

Wenn ich den timer abschalte und die Uhr über warteschleifen hochzählen lasse dann geht es einwandfrei.