danke, dass du mir jetzt schon (fast) den ganzen Code zusammen "gebastelt" hast. Meiner sieht jetzt so aus:

Code:
$regfile = "m16def.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 16
$framesize = 32

Config Porta = Output
Config Portb = Output
Config Portc = Output
Config Portd = Output

Declare Sub Zeilensetzen
Declare Sub Set_pixel(byval X As Byte , Byval Y As Byte)       ' Nullpunkt ist oben links als 0,0
Declare Sub Reset_pixel(byval X As Byte , Byval Y As Byte)

Dim X As Byte , Y As Byte

Dim Bildspeicher(11) As Word , Spalte As Byte , Temp As Word , Zaehler As Word

Spalte = 1

Do
   Select Case Spalte
      Case 1 : Reset Portc.7
               Zeilensetzen
               Set Portd.0

      Case 2 : Reset Portd.0
               Zeilensetzen
               Set Portd.1

      Case 3 : Reset Portd.1
               Zeilensetzen
               Set Portd.2

      Case 4 : Reset Portd.2
               Zeilensetzen
               Set Portd.3

      Case 5 : Reset Portd.2
               Zeilensetzen
               Set Portd.3

      Case 6 : Reset Portd.2
               Zeilensetzen
               Set Portd.3

      Case 7 : Reset Portd.2
               Zeilensetzen
               Set Portd.3

      Case 8 : Reset Portd.2
               Zeilensetzen
               Set Portd.3

      Case 9 : Reset Portd.7
               Zeilensetzen
               Set Portc.7
   End Select

   If Spalte < 9 Then Spalte = Spalte + 1 Else Spalte = 1


   Waitus 100


   Select Case Zaehler
      Case 10000 : For X = 0 To 8       ' diagonale
                     Set_pixel X , X
                   Next X

      Case 20000 : For X = 0 To 10      ' waagrecht
                     Set_pixel X , 0
                     Set_pixel X , 8
                   Next X

      Case 30000 : For Y = 0 To 8       ' senkrecht
                     Set_pixel 0 , Y
                     Set_pixel 10 , Y
                   Next X

      Case 40000 : For X = 1 To 9       ' alle an
                     Bildspeicher(x) = 255
                   Next X

      Case 50000 : For X = 1 To 9       ' Bitmuster
                     Bildspeicher(x) = &B10101010101
                   Next X

      Case 60000 : For X = 1 To 9       ' alle aus
                     Bildspeicher(x) = 0
                   Next X
                   Zaehler = 0
   End Select

   Zaehler = Zaehler + 1
Loop

End


Sub Set_pixel(byval X As Byte , Byval Y As Byte)
   Bildspeicher(x + 1).y = 1            ' Bascom startet Arrays mit 1
End Sub

Sub Reset_pixel(byval X As Byte , Byval Y As Byte)
   Bildspeicher(x + 1).y = 0
End Sub

Sub Zeilensetzen
   Temp = Bildspeicher(spalte)
   If Temp.1 = 1 Then Set Portd.2 Else Reset Portd.2
   If Temp.2 = 1 Then Set Portd.1 Else Reset Portd.1
   If Temp.3 = 1 Then Set Portd.0 Else Reset Portd.0
   If Temp.4 = 1 Then Set Portc.7 Else Reset Portc.7
   If Temp.5 = 1 Then Set Portc.6 Else Reset Portc.6
   If Temp.6 = 1 Then Set Portc.5 Else Reset Portc.5
   If Temp.7 = 1 Then Set Portc.4 Else Reset Portc.4
   If Temp.8 = 1 Then Set Portc.3 Else Reset Portc.3
   If Temp.9 = 1 Then Set Portc.2 Else Reset Portc.2
   If Temp.10 = 1 Then Set Portc.1 Else Reset Portc.1
   If Temp.11 = 1 Then Set Portc.0 Else Reset Portc.0
End Sub

'Wenn die Pins aufeinanderfolgen ist es deutlich schlanker:
'Sub Zeilensetzen
   'Porta = Bildspeicher(spalte) And 255
   'Portb = Bildspeicher(spalte) / 255 And 7
'End Sub

aber es gibt immer noch keine Reaktion auf der Matrix. Sollte ich die Platine von der Matrix vlt. nochmal neu machen und diesmal mit Schieberegistern?

gruß nxtman95