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.
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.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
ENDE OVER und OUT
Lesezeichen