Hallo

Leider funktioniern bei mir beide varianten nicht. Ich habe die erhaltene Zahl als Byte gespeichert, könnte es an dem liegen? Ich bin mir nicht ganz sicher, aber ich glaube die Zahl kann nur in einem Byte gespeichert werden, dass das Programm für die Anzeigen funktioniert. Hier mal den ganzen code, vileicht habe ich ja sonst wo einen Fehler.
Code:
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 = 1245

einer = A mod 1
zehner = A mod 10
zehner = zehner - einer
hunderter = A mod 100
hunderter = hunderter - zehner
tausender = A mod 1000
Tausender = Tausender - Hunderter

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
anstatt der 1245 werden über Print 2012010 ausgegeben.
Das Display zeigt auf den ersten 2 Segmenten einen Dezimal Punkt an, dass heisst dass er keine Zahl bekommt. Auf dem 3ten Segment wird eine 1 angezeigt, auf dem ganz rechts eine 0.
Was mache ich falsch?


mfg Luca