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
Lesezeichen