Wann du ne MAtrix nimmst dann ein Tipp von mir:

Teile deine Matrix so auf, das sie zb ein Byte breit oder Hoch ist, dann erstellst du ein Feld ( Array ) aus so vielen Bytes wie die Matrix hoch bzw breit sit

Bsp.:

Matrix aus 5 x 1Byte Gibt ein Feld aus 5Bytes

x x x x x x x x
x x x x x x x x
x x x x x x x x
x x x x x x x x
x x x x x x x x

so nun stellst du den Timer so ein, das er in der sekunde mehr als 500mal in eine Interruptroutine springt, dort gibst du nun immer ein Byte aus und wenn er das nächste mal in die Interupt springt das nächste usw. Dadur ist dein Hauptprogramm fast unabhängig von deiner Ausgabe. Wenn du nun einzelne LEDs oÄ aktivieren/deaktivieren willst musst du nur per Bitmanipulation das etnprechende Bit des Byts ändern, das macht die sache recht bequem.