Hallo,
ich habe eine 7 Segmentanzeige mit 5 Stellen (also 0-99999) im Multiplexbetrieb(softwaremultiplex über AT-MEGA.

Nun möchte ich die führenden Nullen ausblenden also nicht "00123" sondern nur " 123".

mein Versuch war:

ganz links angefangen: wenn da eine "0" ist einfach den Transistor für die gemeinsame Anode abschalten - fertig (funktioniert!)

nun die 2. Zahl von links: wenn 1. & 2. Zahl = "0" dann auch diese gemeinsame Anode abschalten. Leider klappt das wegen dem Multiplexbetrieb nicht: es leuchtet ja genaugenommen immer nur eine "Ziffer".
Also habe ich das mit Merkern versucht: wenn Ziffer gleich 0 gem.Anode abschalten und Merker (Digi1) auf 1 setzen... funktioniert aber auch nicht in allen Fällen...

Aber ich glaube das Programm sagt mehr....

Code:
'-------------------------------------------------------------------------------
7seganzeige:
' Code 7 Segmentanzeige:
'-------------------------------------------------------------------------------



   'Formatiere das Display
   Wertstr = Str(wert)
   Fivedigitdisplay = Format(wertstr , "00000")             'Nullen geben die Anzahl der Stellen an, damit die Stellen richtig gesetzt werden


   ' jeder Lauf durch die Hauptschleife zeigt ein anderes Digit
   Incr Digit
   
   Portb = 0                                                'Ghosting vermeiden
    If Digit = 5 Then                                       'mache das , bis 5 erreicht ist
   Digit = 0

   End If

   ' addiere 1 zum Digitcounter, weil MID 1-basiert ist
   Y = Digit + 1
   ' und hol das Digit, das wir brauchen
   Wertstr = Mid(fivedigitdisplay , Y , 1)


   'Anzeige auswählen
   Tempbyte = 2 ^ Digit                                     'Tempbyte = 1,2,4,8,16

   'Digitansteuerung auf portC: PC1-5
    Umdreh = Tempbyte * 2                                   'Umdreh   = 2,4,8,16,32
     'Ansteuerung umdrehen für gemeinsame Anoden
    Portc = Umdreh                                          'Port für die Stellen auswahl



'Führende Nullen entfernen:

'INFO:
'wertstr hat immer nur eine Ziffer und wechselt also nacheinander alle 5 Stellen durch!
'wenn wertstr = 0 ist dann wird nachgesehen, in welchem Digit (Stelle) wir uns befinden.
'wenn Digit = 0 -also die ganz linke Stelle- dann auf jeden Fall Portc.1 = 0 (Transistor der Stelle) abschalten
'Digit0 = 0   -> ist nur ein Merker für die folgenden Stellen d.h.

'wenn wertstr=0 dann fragen ob Digit=1 (also 2te Stelle von links) UND der Merker Digit0=0
'dann Transistor abschalten und weiteren Merker für diese Stelle setzen

'ZehnTausenderstelle
If Val(wertstr) = 0 Then                                    'Führende Null wegblenden
   If Digit = 0 Then : Portc.1 = 0 : Digit0 = 0             'C.1=Digit Transistor
   Else
   Digit0 = 1
   End If
End If
'Tausenderstelle
If Val(wertstr) = 0 Then                                    'Führende Null wegblenden
   If Digit = 1 And Digit0 = 0 Then : Portc.2 = 0 : Digit1 = 0       'C.2=Digit Transistor
    Else
    Digit1 = 1
    End If
End If
'Hunderterstelle
If Val(wertstr) = 0 Then                                    'Führende Null wegblenden
   If Digit = 2 And Digit0 = 0 And Digit1 = 0 Then : Portc.3 = 0 : Digit2 = 0       'C.3=Digit Transistor
    Else
    Digit2 = 1
    End If
End If
'Zehnerstelle
If Val(wertstr) = 0 Then                                    'Führende Null wegblenden
   If Digit = 3 And Digit0 = 0 And Digit1 = 0 And Digit2 = 0 Then : Portc.4 = 0 : Digit3 = 0       'C.4=Digit Transistor
    Else
    Digit3 = 1
    End If
End If

 'Dieser Teil erledigt die Wandlung in 7 Segment Code

 'Für Anzeigen mit gemeinsamer Anode
  Select Case Val(wertstr)

           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 = 128                           'mittleres Segment
           Case Else : Portb = 226                          '"F"
  End Select

  'Komma setzen
  'If Portc = 2 Then Portb.0 = 1                             '4 Kommastellen
  'If Portc = 4 Then Portb.0 = 1                             '3 Kommastellen
  'If Portc = 8 Then Portb.0 = 1                             '2 Kommastelle
  If Portc = 16 Then Portb.0 = 1                            '1 Kommastellen