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:
Und so sieht mein Programm im Moment aus: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
"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.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){ } } } }
Meine muster.txt sieht im moment so aus:
1. Wie ist es möglich die muster.txt in die For-Schleife für die "ebene"-Variable zu implementieren?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
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







Zitieren

Lesezeichen