So ich hab Dir jetzt noch einen Segmentdecoder geschrieben,
den musst Du nur noch entsprechend in das andere Listing einbauen.

Erwarte blos nicht, das ich Dir das auch noch mache.


Erst mal wird eine Eingabe erwartet (0-9)
dann wird der Wert in der Funktion decodiert, (könnte noch erweitert werden a,b,c,d,e,f)
und schließlich in den Port geschrieben.

Segment a = auf Bit 0
Segment b = auf Bit 1
Segment c = auf Bit 2
Segment d = auf Bit 3
Segment e = auf Bit 4
Segment f = auf Bit 5
Segment g = auf Bit 6
Bit 7 (nicht genutzt) könnte der Dezimalpunkt (dp) werden.



Code:
' ****************************************
' *                                      *
' * 7-Segmentdecoder by darwin.nuernberg *
' *                                      *
' ****************************************


$regfile = "m32def.dat"                                     ' specify the used micro
$crystal = 8000000                                          ' used crystal frequency
$baud = 9600                                                ' use baud rate
$hwstack = 64                                               ' default use 32 for the hardware stack
$swstack = 20                                               ' default use 10 for the SW stack
$framesize = 80                                             ' default use 40 for the frame space




Dim Segmente As Byte                                        ' Variable für die Segmente
Dim Zahl As Byte
Dim Pause As Integer

Segmente = 0                                                ' Muss dann nur noch an den Port gesendet werden
Pause = 100

' Die einzelnen Segmente werden an einem Port angeschlossen:

Config Portc = Output                                       ' Port definieren
Portc = 0

Declare Function Decode_segmente(byval Wert As Byte) As Byte

' ===============================================================
Beginn:
Do

   Input "Wert (0-9) eingeben : " , Zahl                    ' Zahl abfragen
   Segmente = Decode_segmente(zahl)                            ' Segmente decodieren
   Portc = Segmente                                            ' die decodierten Segmente ausgeben
   Waitms Pause                                             ' Wartezeit

Loop

End                                                         'end program

' ===============================================================

Function Decode_segmente(byval Wert As Byte) As Byte        ' Segmente-Decodieren
   Select Case Wert
      Case 0 : Decode_segmente = &B00111111
      Case 1 : Decode_segmente = &B00000110
      Case 2 : Decode_segmente = &B01011011
      Case 3 : Decode_segmente = &B01001111
      Case 4 : Decode_segmente = &B01100110
      Case 5 : Decode_segmente = &B01101101
      Case 6 : Decode_segmente = &B01111101
      Case 7 : Decode_segmente = &B00000111
      Case 8 : Decode_segmente = &B01111111
      Case 9 : Decode_segmente = &B01101111
      Case Else : Decode_segmente = 0

   End Select
 End Function
' ===============================================================

End
PS: es könnte sein dass ich bei den segmenten einen Wurm Drin hab (keine hardwaremässige kontrolle) dann bruchst Du ja nur das Bitmuster in der Function korrigieren.

ENDE OVER und OUT