Hallo,
ich möchte 4 7-Segmentanzeigen multiplexen. Das Programm läuft prinziepjell - aber da ist ein Problem:

wenn ich 123 auf der Anzeige haben möchte steht dort 1233 und nach einigen Sekunden warten steht dort plötzlich 3233

wenn ich 1234 auf der Anzeige haben möchte steht dort 2100 und nach einigen Sekunden warten steht dort plötzlich 0100


Kann mir da jemand helfen?

Code:
'7Segmentanzeige mit 4 Anzeigen

  $regfile = "ATtiny2313.dat"                               'ATTiny2313
      $crystal = 20000000                                   '20MHz Quarz
      Ddrb = &B11111111                                     'PortB = Ausgang (PB0=A usw.)
      Ddrd = &B1111111                                      'PortD = Ausgang (PD3=Anzeige1, PD4=A2, PD5=A3, PD6=A4)




      Dim Y As String * 5 At &H70
      Dim Z(5) As Byte At &H70 Overlay
      Dim Led As Word
      Dim X(5) As Byte
      Dim Test As Integer
      Dim Test2 As Integer
      Dim Zaehler As Byte                                   'für LED Anzeige wählen...

      Enable Interrupts


Do

 'LED:::EZHT
  Led = 123                                                 'LED - Anzeigewert

For Test2 = 0 To 6                                          'Wert sichern .....
 X(test2) = Z(test2)
Next Test2



For Zaehler = 3 To 6                                        'Zaehler = PortD 3-6 Anzeige wählen)
 Test = X(zaehler)
 Select Case Test


'Led-Segmente als Zahlen definieren:
   Case 48 : Portb = 63                                     'NULL
   Case 49 : Portb = 6                                      'EINS
   Case 50 : Portb = 91                                     'ZWEI
   Case 51 : Portb = 79                                     'DREI
   Case 52 : Portb = 102                                    'VIER
   Case 53 : Portb = 109                                    'FÜNF
   Case 54 : Portb = 125                                    'SECHS
   Case 55 : Portb = 7                                      'SIEBEN
   Case 56 : Portb = 127                                    'ACHT
   Case 57 : Portb = 111                                    'NEUN
   Case 58 : Portb = 128                                    'DP -> geht das als PORT zu setzen???
   Case Else : Portb = 0
  End Select

'Anzeige auswählen???
  Portd.zaehler = 1
  waitus 100           'Zeit für jede Anzeige
  'zum testen Waitms 500                                                'waitus 100           'Zeit für jede Anzeige
  Portd.zaehler = 0
Next Zaehler




Y = Str(led)
   If Z(4) = 0 Then                                         'Führende Nullen eliminieren
    Do
     Z(5) = Z(4)
     Z(4) = Z(3)
     Z(3) = Z(2)
     Z(2) = Z(1)
     Z(1) = 0
    Loop Until Z(5) > 0
  End If



Loop