Hallo alle zusammen!
Ich hab jetzt endlich mein erstes Projekt (fast) fertig, selbst zusammen gelötet und programmiert!
Es ist eine RGB Led an einem Attiny2313.
Naja ich hab mir jetzt folgendes gedacht nachdem ich ein Taster eingelötet habe. Und zwar möchte ich mit dem Taster verschiedene Modi durchgehen.
Das klappt solang ganz gut bis mein Loop kommt, der die RGB komplett komplett durchfaden soll.
Die ersten 6 Modi sind normale/zusammengesetzte Farben.
Wie schaff ich es jetzt, dass der wenn der in dem Loop ist der alle Farben druchfaded jeden Moment abfragt, ob die Taste gedrückt wurde und dann in den nächsten Modi (hier: alle LED's aus) sprint???

Mein bisheriger Code:

Code:
$regfile = "attiny2313.dat"
$crystal = 8000000
$baud = 9600

Dim R As Byte
Dim G As Byte
Dim B As Byte
Dim Pwmwert As Byte
Dim Modus As Integer
Declare Sub Ledcalling

Config Portd.6 = Output
Config Portb.1 = Output
Config Portb.0 = Output
Config Pind.4 = Input
Portd.4 = 1

Const On = 1
Const Off = 0

Config Timer0 = Timer , Prescale = 1

Start Timer0

On Timer0 Pwmroutine
Enable Timer0
Enable Interrupts

Led1 Alias Portd.6
Led2 Alias Portb.1
Led3 Alias Portb.0

Modus = 1

Do

Debounce Pind.4 , 0 , On_taster1 , Sub

Loop

On_taster1:

If Modus = 8 Then
Modus = 0
End If

If Modus = 0 Then
R = 0
G = 0
B = 0
End If


If Modus = 1 Then
R = 255
G = 0
B = 0
End If

If Modus = 2 Then
R = 0
G = 255
B = 0
End If

If Modus = 3 Then
R = 0
G = 0
B = 255
End If

If Modus = 4 Then
R = 255
G = 255
B = 0
End If

If Modus = 5 Then
R = 255
G = 0
B = 255
End If

If Modus = 6 Then
R = 0
G = 255
B = 255
End If

If Modus = 7 Then
R = 255
G = 0
B = 0
Call Ledcalling
End If

Modus = Modus + 1

Return


Pwmroutine:
  If R > Pwmwert Then
    Led1 = 1
  Else
    Led1 = 0
  End If

  If G > Pwmwert Then
    Led2 = 1
  Else
    Led2 = 0
  End If

  If B > Pwmwert Then
    Led3 = 1
  Else
    Led3 = 0
  End If

  Incr Pwmwert
  If Pwmwert > 255 Then Pwmwert = 0
Return

Sub Ledcalling

Do
   Do
   Waitms 8
   G = G + 1
   Loop Until G = 255
   Waitms 2040
   Do
   Waitms 8
   R = R - 1
   Loop Until R = 0
   Waitms 2040
   Do
   Waitms 8
   B = B + 1
   Loop Until B = 255
   Waitms 2040
   Do
   Waitms 8
   G = G - 1
   Loop Until G = 0
   Waitms 2040
   Do
   Waitms 8
   R = R + 1
   Loop Until R = 255
   Waitms 2040
   Do
   Waitms 8
   B = B - 1
   Loop Until B = 0
   Waitms 2040
   Loop
End Sub

End
Ich hoffe mir kann einer von euch Profis helfen

Viele Grüße