Danke soweit

ich war die Tage auch fleißig und habe etwas weitergearbeitet.
Ich habe die Software inzwischen soweit dass der Atmel die Zeichen aus einem beliebig* langem String ausließt und nacheinander auf der Matrix anzeigt**.

* beliebig: max.255 Zeichen (zu je 6 Byte = 1530 Byte). Wenn ich dem Array Dat() 1530 Byte zuweise sagt Bascom mir "out of SRAM space". Der Speicher reicht wohl nicht. Deswegen sind es bei mir im Code momentan max. 62 Zeichen.
Im Zeichensatz sind pro Zeile 6 Byte. Das Erste Byte ist eigentlich immer unnötig da bei einer 5*7Matrix nur 5 Byte interessieren. Deswegen ist das erste Byte (bis auf einmal, weiß nicht wieso) immer null. Wenn man die weglässt könnte man 255Byte einsparen. Richtig?

** Obwohl der Zeichensatz wohl ein Standardzeichensatz zu sein scheint spinnen ein paar Zeichen. Alle werden angezeigt, einige stehen aber auf dem Kopf (z.b. B,C,D,E,K), andere (z.b p,q) sind nur halb drauf. Den Zeichensatz habe ich noch nicht überprüft, soweit funktioniert es ja.



Die eigentliche Frage ist jetzt ja: Wie bekomme ich das zum scrollen?
Eine Idee habe ich schon. Müsste ja irgendwie über das Array Dat() zu lösen sein ...



Und hier noch der komplette (funktionierende) Code zum schmökern
Code:
$regfile "m168def.dat"
$crystal = 16000000

 Config Portd.5 = Output                                    ' load(cs)
 Config Portd.4 = Output                                    ' clk
 Config Portb.2 = Output                                    ' din

 Max_cs Alias Portd.5
 Max_din Alias Portb.2
 Max_clk Alias Portd.4

 Set Max_cs                                                 ' cs, din, clk = high
 Set Max_din
 Set Max_clk

 Dim Led_operation As Word
 Declare Sub Max7221datenout(d As Word)
 Declare Sub Max7221init

 Dim A As Word , B As Word , C As Word , Adressbyte As Word
 Dim Beginn_zeichen As Word , Ende_zeichen As Word , Db_zeiger As Word
 Dim Bz As Word
 Dim Tl As Byte
 Dim Ez As Byte
 Dim Dat(372) As Byte
 Dim Ze(8) As Byte
 Dim Text As String * 255
 Dim Einzelzeichen As String * 1


 Call Max7221init


Do
Text = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"       'max. 62 Zeichen da dat(372). 255zeichen mit dat(1530)

Tl = Len(text)
B = 1


For A = 1 To Tl
 Einzelzeichen = Mid(text , A , 1)
 Ez = Asc(einzelzeichen)
 Bz = Ez - 32                                               'ASCII-Table ohne die ersten 32 Eintraege

 Beginn_zeichen = Bz * 6                                    'Je 6 Byte pro Eintrag im Zeichensatz
 Ende_zeichen = Beginn_zeichen + 5

 Adressbyte = 0                                             ' = &B0000000000000000    

 For Db_zeiger = Beginn_zeichen To Ende_zeichen
  Dat(b) = Lookup(db_zeiger , Zeichensatz)                  'db_zeiger: position im Zeichensatz
  Print "Zeichensatz Data " ; Dat(b)

  C = Adressbyte + Dat(b)
  Print C                                                   
  Call Max7221datenout(c)

  Incr B
  Adressbyte = Adressbyte + &B0000000100000000

 Next Db_zeiger
 Waims 500                                                   '500ms Pause
Next A

Loop
End



 Sub Max7221init
   Led_operation = &B0000110000000001                       ' shutdown mode  normal operation
  Call Max7221datenout(led_operation)
   Led_operation = &B0000100100000000                       ' decode mode code b for digit 7-0
  Call Max7221datenout(led_operation)
   Led_operation = &B0000101000001100                       ' intensity | &H0A01 = 2/16 | &H0A09 = 10/16 | &H0A0F = 15/16(max on)
  Call Max7221datenout(led_operation)
   Led_operation = &B0000101100000111                       ' scan limit digit 0-7
  Call Max7221datenout(led_operation)
 End Sub


 Sub Max7221datenout(d As Word)
  Max_cs = 0
  Shiftout Max_din , Max_clk , D , 1 , 16                   ' , 250
  Max_cs = 1
  Print "Max7221datenout: " ; D
 End Sub





Zeichensatz:                                                'ASCII-Table ohne die ersten 32 Eintraege
Data 0 , 0 , 0 , 0 , 0 , 0                                  'Leerzeichen
Data 0 , 0 , 6 , 95 , 6 , 0                                 '!
Data 0 , 7 , 3 , 0 , 7 , 3                                  '""
Data 0 , 36 , 126 , 36 , 126 , 36                           '#
Data 0 , 36 , 43 , 106 , 18 , 0                             '$
Data 0 , 6 , 9 , 9 , 6 , 0                                  '%
Data 0 , 54 , 73 , 86 , 32 , 80                             '&
Data 0 , 0 , 7 , 3 , 0 , 0                                  ''
Data 0 , 0 , 62 , 65 , 0 , 0                                '
Data 0 , 0 , 65 , 62 , 0 , 0                                '
Data 0 , 8 , 62 , 28 , 62 , 8                               '*
Data 0 , 8 , 8 , 62 , 8 , 8                                 '+
Data 0 , 0 , 224 , 96 , 0 , 0                               ',
Data 0 , 8 , 8 , 8 , 8 , 8                                  '-
Data 0 , 0 , 96 , 96 , 0 , 0                                '.
Data 0 , 32 , 16 , 8 , 4 , 2                                '/
Data 0 , 62 , 81 , 73 , 69 , 62                             '0
Data 0 , 0 , 66 , 127 , 64 , 0                              '1
Data 0 , 98 , 81 , 73 , 73 , 70                             '2
Data 0 , 34 , 73 , 73 , 73 , 54                             '3
Data 0 , 24 , 20 , 18 , 127 , 16                            '4
Data 0 , 47 , 73 , 73 , 73 , 49                             '5
Data 0 , 60 , 74 , 73 , 73 , 48                             '6
Data 0 , 1 , 113 , 9 , 5 , 3                                '7
Data 0 , 54 , 73 , 73 , 73 , 54                             '8
Data 0 , 6 , 73 , 73 , 41 , 30                              '9
Data 0 , 0 , 108 , 108 , 0 , 0                              ':
Data 0 , 0 , 236 , 108 , 0 , 0                              ';
Data 0 , 8 , 20 , 34 , 65 , 0                               '<
Data 0 , 36 , 36 , 36 , 36 , 36                             '=
Data 0 , 0 , 65 , 34 , 20 , 8                               '>
Data 0 , 2 , 1 , 89 , 9 , 6                                 '?
Data 0 , 62 , 65 , 93 , 85 , 30                             '@
Data 0 , 126 , 9 , 9 , 9 , 126                              'A
Data 0 , 127 , 73 , 73 , 73 , 54                            'B
Data 0 , 62 , 65 , 65 , 65 , 34                             'C
Data 0 , 127 , 65 , 65 , 65 , 62                            'D
Data 0 , 127 , 73 , 73 , 73 , 65                            'E
Data 0 , 127 , 9 , 9 , 9 , 1                                'F
Data 0 , 62 , 65 , 73 , 73 , 122                            'G
Data 0 , 127 , 8 , 8 , 8 , 127                              'H
Data 0 , 0 , 65 , 127 , 65 , 0                              'I
Data 0 , 63 , 64 , 64 , 64 , 48                             'J
Data 0 , 127 , 8 , 20 , 34 , 65                             'K
Data 0 , 127 , 64 , 64 , 64 , 64                            'L
Data 0 , 127 , 2 , 4 , 2 , 127                              'M
Data 0 , 127 , 2 , 4 , 8 , 127                              'N
Data 0 , 62 , 65 , 65 , 65 , 62                             'O
Data 0 , 127 , 9 , 9 , 9 , 6                                'P
Data 0 , 62 , 65 , 81 , 33 , 94                             'Q
Data 0 , 127 , 9 , 9 , 25 , 102                             'R
Data 0 , 38 , 73 , 73 , 73 , 50                             'S
Data 0 , 1 , 1 , 127 , 1 , 1                                'T
Data 0 , 63 , 64 , 64 , 64 , 63                             'U
Data 0 , 31 , 32 , 64 , 32 , 31                             'V
Data 0 , 63 , 64 , 60 , 64 , 63                             'W
Data 0 , 99 , 20 , 8 , 20 , 99                              'X
Data 0 , 7 , 8 , 112 , 8 , 7                                'Y
Data 0 , 97 , 81 , 73 , 69 , 67                             'Z
Data 0 , 0 , 127 , 65 , 65 , 0                              '[
Data 0 , 2 , 4 , 8 , 16 , 32                                '\
Data 0 , 0 , 65 , 65 , 127 , 0                              ']
Data 0 , 4 , 2 , 1 , 2 , 4                                  '^
Data 128 , 128 , 128 , 128 , 128 , 128                      '
Data 0 , 0 , 3 , 7 , 0 , 0                                  '`
Data 0 , 32 , 84 , 84 , 84 , 120                            'a
Data 0 , 127 , 68 , 68 , 68 , 56                            'b
Data 0 , 56 , 68 , 68 , 68 , 40                             'c
Data 0 , 56 , 68 , 68 , 68 , 127                            'd
Data 0 , 56 , 84 , 84 , 84 , 8                              'e
Data 0 , 8 , 126 , 9 , 9 , 0                                'f
Data 0 , 24 , 164 , 164 , 164 , 124                         'g
Data 0 , 127 , 4 , 4 , 120 , 0                              'h
Data 0 , 0 , 0 , 125 , 64 , 0                               'i
Data 0 , 64 , 128 , 132 , 125 , 0                           'j
Data 0 , 127 , 16 , 40 , 68 , 0                             'k
Data 0 , 0 , 0 , 127 , 64 , 0                               'l
Data 0 , 124 , 4 , 24 , 4 , 120                             'm
Data 0 , 124 , 4 , 4 , 120 , 0                              'n
Data 0 , 56 , 68 , 68 , 68 , 56                             'o
Data 0 , 252 , 68 , 68 , 68 , 56                            'p
Data 0 , 56 , 68 , 68 , 68 , 252                            'q
Data 0 , 68 , 120 , 68 , 4 , 8                              'r
Data 0 , 8 , 84 , 84 , 84 , 32                              's
Data 0 , 4 , 62 , 68 , 36 , 0                               't
Data 0 , 60 , 64 , 32 , 124 , 0                             'u
Data 0 , 28 , 32 , 64 , 32 , 28                             'v
Data 0 , 60 , 96 , 48 , 96 , 60                             'w
Data 0 , 108 , 16 , 16 , 108 , 0                            'x
Data 0 , 156 , 160 , 96 , 60 , 0                            'y
Data 0 , 100 , 84 , 84 , 76 , 0                             'z
Data 0 , 8 , 62 , 65 , 65 , 0                               '{
Data 0 , 0 , 0 , 119 , 0 , 0                                '|
Data 0 , 0 , 0 , 0 , 0 , 0                                  '}
Data 0 , 2 , 1 , 2 , 1 , 0                                  '~
Data 0 , 0 , 0 , 0 , 0 , 0                                  '