Code? Edit:
Durch den gosub aufruf am Ende von Color_fading sollte Dein Stack irgendwann überlaufen:
Ich habe es auf 22% bekommen. Keine Ahnung, ob es noch läuft 
Code:
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 80
$swstack = 64
$framesize = 60
Config Pinc.0 = Input
Config Pinc.1 = Input
Taster1 Alias Pinc.0
Taster2 Alias Pinc.1
Dim Zaehler As Word ' Zaehler für Rot oder/und Grün
Dim Zaehler2 As Word 'Zaehler, wenn eine Farbe nur teilweise dimmen soll
Dim Zaehler_blau As Word ' Zaehler ausschließlich für Blau, da Blau vorgeteilt werden muss (Zaehler läuft 4mal schneller)
Dim V As Byte ' Zählvariable zum Steuern durch das Farbauswahlmenü
Dim V2 As Byte ' Zählvariable zum Überspringen der Aufdimmung beim Color-Fading (Fading durch alle Farben)
Dim P As Bit ' Zählvariable zum Anwählen der Pulsor-Programme
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64 ' Timer für Rot und Grün
Config Timer2 = Pwm , Compare Pwm = Clear Down , Prescale = 1 , Pwm = On , Prescale = 1 'Timer für Blau
Enable Timer0
Start Timer1
Start Timer2
Enable Interrupts 'Ein Überbleibsel, als ich noch einen zusätzlichen Wartetimer nutzte, wird demnächst aber rausgenommen
Pwm1a = 0
Pwm1b = 0
Rot Alias Pwm1a
Gruen Alias Pwm1b
Blau Alias Ocr2
Declare Sub Rot_fading
Declare Sub Orange_fading
Declare Sub Gelb_fading
Declare Sub Gruen_fading
Declare Sub Azur_fading
Declare Sub Blau_fading
Declare Sub Violet_fading
Declare Sub Weiss_fading
Declare Sub Color_fading
'**************************************
' ***** Hauptprogramm Teil I *****
'**************************************
Do
Debounce Taster1 , 0 , Subtaster1 , Sub
Debounce Taster2 , 0 , Subtaster2 , Sub
Loop
End
' ***** Hauptprogramm Teil II *****
Subtaster1:
V = V + 1
select case V
case 1
gosub r1023
' Rot = 1023 ' ROT
case 2
gosub r1023
gruen=341
' Rot = 1023 : Gruen = 341 ' ORANGE
case 3
gosub r1023
gosub g1023
' Rot = 1023 : Gruen = 1023 ' GELB
case 4
Rot = 0 ' GRÜN
case 5
gosub G1023
gosub b1023
' Gruen = 1023 : Blau = 1023 ' AZUR
case 6
Gruen = 0 ' BLAU
case 7
gosub r1023
' Rot = 1023 ' VIOLET
case 8
gosub G1023
gosub b1023
' Gruen = 1023 : Blau = 1023 ' WEISS
case 9
gosub allenull
Do
gosub r1023
gosub g1023
gosub b1023
' Rot = 1023 : Gruen = 1023 : Blau = 1023 ' Das schnelle Aufblinken soll zeigen, dass sich hier ein Farbwechselmodus verbirgt.
waitms 100 'Da ich erst seit ein paar Tagen die BASCOM-Vollversion habe, musste ich die 4K einhalten. So war es am schlankesten ^^
gosub allenull
waitms 100
If Taster1 = 0 Then Exit Do
If Taster2 = 0 Then Call Color_fading
Loop
case 10
gosub allenull
V = 0 ' ALLE LED AUS
end select
Return
r1023:
rot = 1023
return
g1023:
gruen = 1023
return
b1023:
blau = 1023
return
allenull:
Rot = 0 : Gruen = 0 : Blau = 0
return
pause:
waitms 10
return
pausel:
waitms 1000
return
Subtaster2:
P = 0
If Taster2 = 0 Then Toggle P 'Ab hier können die Unterprogramme angewählt werden. Sie lassen die gewählte Farbe pulsieren.
if p=1 then
gosub fadings
end if
Return
' (**** ACHTUNG **** Die FOR...Next-Schleife kann durch Zwischensetzen einer
' Bedingung direkt zwischen FOR...TO und der Schrittzeit (Waitms) abgebrochen
' werden!!! UNBEDINGT MERKEN!)
' Die 3 Zeilen hierrüber sind ein Merkzettel für mich wo und wie ich die FOR-NEXT zu jedem Zeitpunkt unterbrechen kann. Für mich ein echter Durchbruch!
fadings:
For Zaehler = 1023 To 0 Step -2 '
If Taster1 = 0 Then return ' **** ACHTUNG **** (Zählen noch zu der Anmerkung hierüber, sonst keine Bedeutung)
gosub fadecase
Next Zaehler
gosub pausel
For Zaehler = 0 To 1023 Step 2
If Taster1 = 0 Then return ' **** ACHTUNG ****
gosub fadecase
Next Zaehler
gosub pausel
return
fadecase:
gosub pause
select case v
case 1
gosub rz
case 2
gosub rgz
case 3
gosub grz
case 4
gosub gz
case 5
gosub bzbgz
case 6
gosub bzb
case 7
gosub rz
gosub bzb
case 8
gosub grz
gosub BZB
end select
return
' ***** Das Farbwechsel-Unterprogramm *****
Sub Color_fading:
Do
'--- Rot ---
Rot = 0 : Gruen = 0 : Blau = 0
For Zaehler = 0 To 1023 Step 2
If Taster1 = 0 Then Exit Sub
gosub pause
gosub rz
Next Zaehler
gosub pausel
V2 = 2
'Gosub Rot_aufgedimmt 'wozu?
Rot_aufgedimmt:
'--- Orange ---
For Zaehler = 0 To 1023 Step 2
gosub z2z3
If Taster1 = 0 Then Exit Sub
gosub pause
Gruen = Zaehler2
Next Zaehler
gosub pausel
'--- Gelb ---
For Zaehler = 323 To 1023 Step 2
If Taster1 = 0 Then Exit Sub
gosub pause
Gruen = Zaehler
Next Zaehler
gosub pausel
'--- Grün ---
For Zaehler = 1023 To 0 Step -2
If Taster1 = 0 Then Exit Sub
gosub pause
gosub rz
Next Zaehler
gosub pausel
'--- Weiß ---
For Zaehler = 0 To 1023 Step 2
gosub zbz4
If Taster1 = 0 Then Exit Sub
gosub pause
gosub rz
gosub BZB
Next Zaehler
gosub pausel
'--- Azur ---
For Zaehler = 1023 To 0 Step -2
If Taster1 = 0 Then Exit Sub
gosub pause
gosub rz
Next Zaehler
gosub pausel
'--- Blau ---
For Zaehler = 1023 To 0 Step -2
If Taster1 = 0 Then Exit Sub
gosub pause
gosub gz
Next Zaehler
gosub pausel
'--- Violet ---
For Zaehler = 0 To 1023 Step 2
If Taster1 = 0 Then Exit Sub
gosub pause
gosub rz
Next Zaehler
gosub pausel
'--- Übergang violet zu Rot ---
For Zaehler = 1023 To 0 Step -2
gosub zbz4
If Taster1 = 0 Then Exit Sub
gosub pause
gosub bzb
Next Zaehler
gosub pausel
goto Rot_aufgedimmt
Loop
End Sub
z2z3:
Zaehler2 = Zaehler / 3
return
zbz4:
Zaehler_blau = Zaehler / 4
return
grz:
gosub gz
rz:
Rot = Zaehler
return
bzbgz:
gosub bzb
gz:
Gruen = Zaehler
return
bzb:
Blau = Zaehler_blau
return
rgz:
gosub RZ
Gruen = Zaehler2
return
Man kann viel sparen, indem man gleichen Code in Subs auslagert.
Lesezeichen