Hallo
Also die 2t variante von simonit funktioniert, wenn ich die Ziffern dann in Integer speichere. Aber ich muss leider die Zahl in ein Byte speichern, da es dem Prog. sonst nicht passt. Wenn ich sie in ein Byte speichere, dann bekomme ich z.B. anstatt 8569, 8481. Auch wenn ich andere Zahlen verwende, dann stimmt der Tausender immer. Ich habe mal nur eine 3stellige Zahl eingegeben und er hatt immer die erste Zahl richtig gemacht, die 2te manchmal richtig und die erste immer falsch. Wie kann ich dass beheben?
Hier noch der neue code:
mfg LucaCode:Declare Sub Led_display_init() Declare Sub Led_display(byval Ziffer As Byte , Byval Zahl As Byte) $regfile = "m32def.dat" Const Rn_digi_slave_write = &H70 Const Rn_digi_slave_read = &H71 Const Dezimalpunktziffer = 0 'Segment wo Dezimalpunkt leuchten soll (0=keinen) Dim Segmente As Byte Dim Z As Byte Dim I As Byte Dim Einer As Byte Dim Zehner As Byte Dim Hunderter As Byte Dim Tausender As Byte Dim A As Word $crystal = 16000000 'Quarzfrequenz $baud = 9600 Config Scl = Portc.0 'Ports fuer IIC-Bus Config Sda = Portc.1 I2cinit Led_display_init I = 0 Sound Portd.7 , 400 , 450 'BEEP Sound Portd.7 , 400 , 250 'BEEP Sound Portd.7 , 400 , 450 'BEEP Print Print "**** RN-Control V1.4 *****" Print "Das neue Experimentier- und Roboterboard" Print '------------------------------------------------------------------------------- Do A = 923 einer = A mod 10 A = A - einer A = A / 10 zehner = A mod 10 A = A - zehner A = A / 10 hunderter = A mod 10 A = A - hunderter A = A / 10 Tausender = A Mod 10 Print ; Tausender ; Hunderter ; Zehner ; Einer; Print Waitms 500 Led_display 1 , Tausender 'Anzeigen der Zahlen Led_display 2 , Hunderter Led_display 3 , Zehner Led_display 4 , Einer Loop End '------------------------------------------------------------------------------- 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 &B0110111 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







Zitieren

Lesezeichen