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







Zitieren

Lesezeichen