Hi Gobblin,

ich hatte das gleiche Problem, als ich mit meinem ersten Projekt anfing!

Ich hab zwar einen 2313 eingesetzt aber mit etwas Modifikation geht das Prog ja auch für nen Tiny!

Lass dich nicht von der Größe des Listings schocken, mein Lauflicht hat unseren Weihnachtsbaum vorm Haus geschmückt und da wollte ich mehrere Lauflichtvarianten durchlaufen lassen!

Jetzt kommts:

Code:
'******************************************************************************
'Name                : Lauflicht5x.bas
'Purpose             : Lauflicht für Weihnachtsbaum
'Version             : V0.02
'Compiler            : Bascom AVR 1.11.7.4
'
'Hardware             (1) LED's bzw. Schaltverstärker
'                         an PB0 bis PB5
'                     (2) Schalttaster zur Hand/Auto- Steuerung
'                         an PD0 und PD1
'
'Chiptyp             : AT90S2313
'******************************************************************************

$regfile = "2313def.dat"                                    'AT90S2313
$crystal = 4000000                                          'Quarz-Frequenz



Config Portb = Output                                       'PBx als Ausgänge
Config Portd = Input                                        'PDx als Eingänge

Dim W As Byte                                               'W= Werte in Lauflicht lesen
Dim I As Byte                                               'I= Schleife für 1 Durchgang
Dim J As Byte                                               'J= Vieviel mal Schleife

Dim Z As Byte                                               'Z= Zählerwert
Z = 1

Dim D As Byte
D = 20                                                      'D= Anzahl der Schleifen

Dim T As Integer                                            'T= Taktzeit
T = 200

Portb = 63                                                  ' alle Ports EIN
Wait 60                                                     ' 60 sec Vorheizen

Auto:

Do

For J = 1 To D
    If Pind.1 = 1 Then
    Goto Hand:                                              'Hand/Auto- Ebene
    End If
  Restore Vor1
  For I = 1 To 5
    Read W
    Portb = W
    Waitms T
  Next I
Next J

For J = 1 To D
    If Pind.1 = 1 Then
    Goto Hand:                                              'Hand/Auto- Ebene
    End If
  Restore Rueck1                                            'Zeiger auf Beginn der Daten setzen
  For I = 1 To 5                                            'Lese nächsten Wert
    Read W                                                  'Setze Port
    Portb = W
    Waitms T
  Next I
Next J

For J = 1 To D
    If Pind.1 = 1 Then
    Goto Hand:                                              'Hand/Auto- Ebene
    End If
  Restore Neg1                                              'Zeiger auf Beginn der Daten setzen
  For I = 1 To 5                                            'Lese nächsten Wert
    Read W                                                  'Setze Port
    Portb = W
    Waitms T
  Next I
Next J

For J = 1 To D
    If Pind.1 = 1 Then
    Goto Hand:                                              'Hand/Auto- Ebene
    End If
  Restore Neg2                                              'Zeiger auf Beginn der Daten setzen
  For I = 1 To 5                                            'Lese nächsten Wert
    Read W                                                  'Setze Port
    Portb = W
    Waitms T
  Next I
Next J

For J = 1 To D
    If Pind.1 = 1 Then
    Goto Hand:                                              'Hand/Auto- Ebene
    End If
  Restore Add1                                              'Zeiger auf Beginn der Daten setzen
  For I = 1 To 10                                           'Lese nächsten Wert
    Read W                                                  'Setze Port
    Portb = W
    Waitms T
  Next I
Next J

For J = 1 To D
    If Pind.1 = 1 Then
    Goto Hand:                                              'Hand/Auto- Ebene
    End If
  Restore Wechs1                                            'Zeiger auf Beginn der Daten setzen
  For I = 1 To 12                                           'Lese nächsten Wert
    Read W                                                  'Setze Port
    Portb = W
    Waitms T
  Next I
Next J

For J = 1 To D
    If Pind.1 = 1 Then
    Goto Hand:                                              'Hand/Auto- Ebene
    End If
  Restore Kllauf1                                           'Zeiger auf Beginn der Daten setzen
  For I = 1 To 3                                            'Lese nächsten Wert
    Read W                                                  'Setze Port
    Portb = W
    Waitms T
  Next I
Next J

For J = 1 To D
    If Pind.1 = 1 Then
    Goto Hand:                                              'Hand/Auto- Ebene
    End If
  Restore Ende                                              'Zeiger auf Beginn der Daten setzen
  For I = 1 To 2                                            'Lese nächsten Wert
    Read W                                                  'Setze Port
    Portb = W
    Wait 1
  Next I
Next J

Loop

End




'+++++++++++++++++++++++++++++++++++++++++++
' Daten für verschiedene Lauflichtfunktionen
'+++++++++++++++++++++++++++++++++++++++++++


Vor1:
Data 33 , 34 , 36 , 40 , 48,                                '6  12345 einzenl vorwärts

Rueck1:
Data 48 , 40 , 36 , 34 , 33,                                '6  54321 einzeln rückwärts

Neg1:
Data 62 , 61 , 59 , 55 , 47,                                '6  12345 negiert einzeln

Neg2:
Data 47 , 55 , 59 , 61 , 62,                                '6  54321 negiert einzeln

Add1:
Data 32 , 33 , 35 , 39 , 47 , 63,                           '6  12345 addierend
Data 62 , 60 , 56 , 48 ,                                    '6  12345 subtrahierend

Wechs1:
Data 32 , 33 , 49 , 51 , 59 , 63,                           '6  1-15-152-1524-15243
Data 32 , 63 , 32 , 63 , 32 , 63,                           '6  3xalle

Kllauf1:
Data 37 , 42 , 52,                                          '6  13-24-35

Ende:
Data 31 , 32,                                               '6  12345 im Wechsel



Hand:

If Pind.1 = 0 Then
   Goto Auto:
End If

If Pind.0 = 0 Then
   Z = Z * 2
End If

If Z > 32 Then
   Z = 1
End If

Portb = Z

Wait 1

Goto Hand:

Such Dir halt das Stück raus, welches Du für die einfach Funktion brauchst!
Wenn Du Fragen hast, meld Dich halt noch mal!

P.s.: Cooles Video!!!

Schönes Wochenende noch!