Hallo

Ein "Bild" setzt sich aus drei Ebenen a 9 LEDs zusammen. PD4 bis PD6 sind die Ebenen, PB0 bis PB7 und PD0 die 9 Leds der jeweiligen Ebene. In den Datas sind pro Bild je drei Ebenen a 2 Bytes gespeichert. Im jeweils ersten Byte steckt in den Bits 6 bis 4 die Ebene, im Bit 0 und dem zweiten Byte die Leds der jeweiligen Ebene.

Um die Datas in eine für C verwendbare Form zu bringen, würde ich sie in ein zweidimensionales Array schreiben:
Code:
#include <stdlib.h>
#include <avr/io.h>
// #include "def.h"
// #include "muster.txt"

unsigned char muster[4][6]= // muster[Bildnummer][Bildmuster]
{
	{
	0b01000000, 0b00000000, // Bild 1
	0b00100000, 0b00000000,
	0b00010001, 0b11111111
	},

	{
	0b01000000, 0b00000000, // Bild 2
	0b00100001, 0b11111111,
	0b00010000, 0b00000000
	},

	{
	0b01000001, 0b11111111, // Bild 3
	0b00100000, 0b00000000,
	0b00010000, 0b00000000
	},

	//...

	{
	0b01000000, 0b00000000, // Bild 10
	0b00100000, 0b01010100,
	0b00010000, 0b00000000
	}
};

int main(void)
{
	int bildnr;
	int ebene;
	int dauer_bild;
	int dauer_ebene;

   //Pins bzw. Ports als Ausgänge konfigurieren
   DDRB = 0xFF; 			// 0b11111111 --> Alle Pins an Port B als Ausgänge
   DDRD = 0b01110001;	// 0b01110001 --> Benutzte Pins an Port D als Ausgänge

	while(1)
	{
		for ( bildnr = 0; bildnr < 4; bildnr++ )
		{
   		for ( dauer_bild = 0; dauer_bild < 10000; dauer_bild++ ) // geschätzt
			{
      		for (ebene = 0; ebene < 3; ebene++)
				{
				   for(dauer_ebene = 0; dauer_ebene < 50; dauer_ebene++) // geschätzt
				   {
				      PORTD = muster[bildnr][ebene*2]; // Ebene und LED Säule 1 ausgeben
				      PORTB = muster[bildnr][ebene*2+1]; // LEDs Säule 2 bis 9 ausgeben
					}
					PORTD=0; // Ebene und LEDs aus
					PORTB=0;
				}
		   }
	   }
	}
   return 0;
}
(Selbstverständlich ungetestet)

Wenn du weiterhin das Muster includen willst, kannst du die Definition von muster[][] rauskopieren und als muster.txt speichern. Ich hoffe, das funzt so.

Sind 390 Ohm nicht etwas viel? Oder verwendest du LowCurrent-LEDs?

Gruß

mic

[Edit]
unsigned int muster[4][6] sollte natürlich ein unsigned char sein. Sorry