$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 Dim Programm As Byte Config Pind.1 = Input Portd.1 = 1 Programm = 1 '------------------------------------------------------------------------------------------------- ' Hauptprogramm '------------------------------------------------------------------------------------------------- Declare Sub Programm_1 Declare Sub Programm_2 Declare Sub Programm_3 Declare Sub Taster Do Select Case Programm 'Je nachdem, welchen Wert "PROGRAMM" enthält... Case 1 '...wird die entsprechende Routine angesprungen Gosub Programm_1 Case 2 Gosub Programm_2 Case 3 Gosub Programm_3 End Select Debounce Pind.1 , 0 , Taster , Sub Sub Taster: Programm = Programm + 1 If Programm = 4 Then Programm = 1 End If End Sub Sub Programm_1: Maxbild = Lookup(0 , Muster1) ' 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 , Muster1) ' 1. Byte-Muster ausgeben Offset = Offset + 1 Portb = Lookup(offset , Muster1) ' 2. Byte-Muster ausgeben Waitms 5 ' diese Ebene fŸr 5 ms anzeigen Next Ebene Next Dauer Next Bild ' Programm von vorne beginnen End Sub Sub Programm_2: Maxbild = Lookup(0 , Muster2) ' 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 , Muster2) ' 1. Byte-Muster ausgeben Offset = Offset + 1 Portb = Lookup(offset , Muster2) ' 2. Byte-Muster ausgeben Waitms 5 ' diese Ebene fŸr 5 ms anzeigen Next Ebene Next Dauer Next Bild ' Programm von vorne beginnen End Sub Sub Programm_3: Maxbild = Lookup(0 , Muster3) ' 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 , Muster3) ' 1. Byte-Muster ausgeben Offset = Offset + 1 Portb = Lookup(offset , Muster3) ' 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 Sub End '------------------------------------------------------------------------------------------------- '------------------------------------------------------------------------------------------------- Muster1: $include "muster1.txt" ' Datei mit Mustern einbinden Muster2: $include "muster2.txt" Muster3: $include "muster3.txt"