Hallo alle zusammen!

Ich werde einen LED-Cube nach folgendem Schaltplan mit einem ATTiny 2313 aufbauen.

Nun habe ich eine Frage zum Programm. Und zwar möchte ich dieses in C umschreiben (C ist für mich verständlicher).

Das ist der Programmcode für BASCOM:

Code:
$regfile = "2313def.dat"
$hwstack = 32
$swstack = 10
$framesize = 40
$crystal = 8000000                                          ' Achtung: Taktfrequenz per Fusebits auf 8 MHz einstellen!
'-------------------------------------------------------------------------------------------------
' Ports auf Ausgang setzen
'-------------------------------------------------------------------------------------------------
Ddrb = &B11111111
Ddrd = &B01111111
'-------------------------------------------------------------------------------------------------
' Variablen deklarieren
'-------------------------------------------------------------------------------------------------
Dim Bild As Word                                            ' Aktuelle Bildnummer
Dim Maxbild As Word                                         ' Nummer des letzten Bildes (=Zahl der Bilder in der Animation)
Dim Ebene As Byte                                           ' Ebenen-ZŠhler
Dim Dauer As Byte                                           ' Anzeigedauer des Bildes
Dim Temp As Word                                            ' fŸr Berechnungen
Dim Offset As Word                                          ' Position der zu holenden Daten
'-------------------------------------------------------------------------------------------------
' Hauptprogramm
'-------------------------------------------------------------------------------------------------
Do

Maxbild = Lookup(0 , Muster)                                ' Anzahl der gespeicherten Bilder holen
Maxbild = Maxbild - 1                                       ' 1 abziehen, da von 0 ab gezŠhlt wird

For Bild = 0 To Maxbild                                     ' Bilder durchzŠhlen

  For Dauer = 0 To 27                                       ' Dauer des Bildes, pro Durchlauf ca. 15 ms - also hier ca. 0,4 sek.

    For Ebene = 0 To 2                                      ' 3 Ebenen durchmultiplexen

      Offset = Bild * 6                                     ' Offset Berechnen, 6 Byte pro Bild
      Temp = Ebene * 2                                      ' 2 Byte pro Ebene
      Offset = Offset + Temp
      Offset = Offset + 2                                   ' 1. Eintrag Ÿberspringen (Zahl der Bilder)

      Portd = Lookup(offset , Muster)                       ' 1. Byte-Muster ausgeben
      Offset = Offset + 1
      Portb = Lookup(offset , Muster)                       ' 2. Byte-Muster ausgeben

      Waitms 5                                              ' diese Ebene fŸr 5 ms anzeigen

    Next Ebene

  Next Dauer

Next Bild

Loop                                                        ' Programm von vorne beginnen

End
'-------------------------------------------------------------------------------------------------
Muster:
'-------------------------------------------------------------------------------------------------

$include "muster.txt"                                       ' Datei mit Mustern einbinden
Und so sieht mein Programm im Moment aus:

Code:
#include <stdlib.h> 
#include <avr/io.h>
// #include "def.h"
#include "muster.txt"

int main(void) {

int bilder; 
int dauer; 
int ebene; 
	
	/*###Initialisierungsphase###*/

	//Pins bzw. Ports als Ausgänge konfigurieren
	DDRB |= 0x00;	//00000000 --> Alle als Ausgänge
	DDRD |= 0x00;	//00000000 --> Alle als Ausgänge


for ( bilder = 1; bilder <= 12; ++bilder ){
	for ( dauer = 1; dauer = 27; ++dauer ){
		for (ebene = 1; ebene = 3; ++ebene){
			
			
		}
	}
}
}
"def.h" ist estmal nicht weiter wichtig. "muster.txt" ist die Datei, die mit diesem Programm erstellt wurde. Sie liegt im gleichen Verzeichnis, wie die Quelldatei.


Meine muster.txt sieht im moment so aus:

Code:
Data 12% ' 12 Bilder in der Animation

Data &B01000000, &B00000000' Bild 1
Data &B00100000, &B00000000
Data &b00010001, &B11111111

Data &B01000000, &B00000000' Bild 2
Data &B00100001, &B11111111
Data &b00010000, &B00000000

Data &B01000001, &B11111111' Bild 3
Data &B00100000, &B00000000
Data &b00010000, &B00000000

Data &B01000000, &B00000000' Bild 4
Data &B00100001, &B11111111
Data &b00010000, &B00000000

Data &B01000000, &B00000000' Bild 5
Data &B00100000, &B00000000
Data &b00010001, &B11111111

Data &B01000000, &B00000000' Bild 6
Data &B00100000, &B00000000
Data &b00010000, &B00000000

Data &B01000000, &B00000000' Bild 7
Data &B00100000, &B00111000
Data &b00010000, &B00000000

Data &B01000000, &B00000000' Bild 8
Data &B00100001, &B00010001
Data &b00010000, &B00000000

Data &B01000000, &B00000000' Bild 9
Data &B00100000, &B10010010
Data &b00010000, &B00000000

Data &B01000000, &B00000000' Bild 10
Data &B00100000, &B01010100
Data &b00010000, &B00000000

Data &B01000000, &B00000000' Bild 11
Data &B00100000, &B00111000
Data &b00010000, &B00000000

Data &B01000000, &B00000000' Bild 12
Data &B00100000, &B00000000
Data &b00010000, &B00000000
1. Wie ist es möglich die muster.txt in die For-Schleife für die "ebene"-Variable zu implementieren?

2. Wie müssten eventuelle Änderungen am Programm / muster.txt aussehen?


So werden die Bits für den Cube definiert
Data &B01000001, &B11111111 ' oberste Ebene an
Data &B00100000, &B00000000 ' mittlere Ebene an
Data &B00010000, &B00000000 ' untere Ebene an

Die Reihen nach dem komma (z.B. &B11111111) setzen die bits für die Säulen.

Vielen Dank!

Torrent