Hallo Forengemeinde,
ich brauche mal Dringend eure Hilfe und zwar geht es um diesen Code:
**** Code ***************************************************+
$regfile = "m8535.dat"
$lib "mcsbyte.lbx"
$crystal = 16000000
Declare Sub Check_input
' optional LCD einbinden - hier Goldentek 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portb.0 , E = Portd.3 , Rs = Portd.4
Config Lcd = 16 * 2
' RC5 (TSOP1136) auf PIN D2 (INT0) festlegen - Timer0 und INT0 haben damit gut zu tun
Config Rc5 = Pind.2
Enable Interrupts
' Timer1 und Timer2 für PWM Betrieb initialisieren
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer2 = Pwm , Compare Pwm = Clear Up , Prescale = 1
'Ein paar Variablen definieren
Dim Address As Byte , Command As Byte
Dim A As Byte 'Zählvariable
Dim B As Byte 'Zählvariable
Dim Programm As Byte 'Aktives Program
Dim Step_delay As Byte 'Schrittpause in ms
Dim Strobo_pause As Byte 'Strobopause in ms
Dim Color_delay As Byte
Dim Color_stop As Byte
Dim Rgb As Byte
Config Pinb.3 = Output 'PWM Output rot Timer2
Config Pinb.2 = Output 'PWM Output grün Timer1
Config Pinb.1 = Output 'PWM Output blau Timer1
Led1 Alias Ocr1al 'PIN 17 PB3
Led2 Alias Ocr1bl 'PIN 16 PB2
Led3 Alias Ocr2 'PIN 15 PB1
Led1 = 0 '1.Led dunkel
Led2 = 0 '2.Led dunkel
Led3 = 0 '3.Led dunkel
'Den Tastern zur Board-Beschriftung passende Namen verpassen
'Taster_1 Alias Pind.0 'Taster 1
'Taster_2 Alias Pind.1 'Taster 2
'Taster_3 Alias Pind.3 'Taster 3 (hier deaktiviert, weil schon auf INT1 gelegt!)
'Mit welchem Programm fangen wir an?
Programm = 0
'Step_Delay in ms einstellen
Step_delay = 15
'Strobo_Pause in ms festlegen
Strobo_pause = 40
'Startwert für die Schleife
Rgb = 0
'Farbwechsel Geschwindigkeit pro Schritt (empfohlen 1-15)
Color_delay = 40
'Dauer der Pause bei der Grundfarbe (empfohlen 1-10)
Color_stop = 1
'Subroutinen für die verschiedenen Programme definieren
Declare Sub Programm_0
Declare Sub Programm_1
Declare Sub Programm_2
Declare Sub Programm_3
Declare Sub Programm_4
Cursor Off Noblink
Cls
Do
Select Case Command 'Je nachdem, welchen Wert "PROGRAMM" enthält...
Case 0 '...wird die entsprechende Routine angesprungen
Gosub Programm_0
Case 1
Gosub Programm_1
Case 2
Gosub Programm_2
Case 3
Gosub Programm_3
Case 4
Gosub Programm_4
End Select
Getrc5(address , Command)
If Address = 0 Then
Command = Command And &B01111111
Locate 1 , 2
Lcd "A:" ; Address ; " C:" ; Command ; " "
Check_input
Locate 1 , 11
Lcd "R:" ; Led1 ; " "
Locate 2 , 2
Lcd "G:" ; Led2 ; " "
Locate 2 , 9
Lcd "B:" ; Led3 ; " "
End If
Waitms 15
Loop
End
Sub Check_input
End Sub Check_input
'Farbe Gelb
Sub Programm_0:
Led1 = 128 ' Gelb
Led2 = 0
Led3 = 192
Rgb = 0
If Programm > 0 Then
Exit Sub
End If
End Sub
'Farbe Violet
Sub Programm_1:
Led1 = 0 ' Violet
Led2 = 128
Led3 = 192
Rgb = 0
If Programm <> 1 Then
Exit Sub
End If
End Sub
'Zufallsfarben
Sub Programm_2:
A = Rnd(255) 'Zufallswert zwischen 0 und 255 generieren
Led1 = A
A = Rnd(255) 'Zufallswert zwischen 0 und 255 generieren
Led2 = A
A = Rnd(255) 'Zufallswert zwischen 0 und 255 generieren
Led3 = A
If Programm <> 2 Then
Exit Sub
End If
Waitms 500 'Halbe Sekunde Step_delay.
End Sub
'Regenbogen-Fader
Sub Programm_3:
'Erstmal alle ausmachen...
'Led1 = 0
'Led2 = 0
'Led3 = 0
Do
If Rgb = 0 Then
Incr Led1
Decr Led3
Waitms Color_delay
End If
If Led1 = 255 Then
Rgb = 1
Led3 = 0
Wait Color_stop
End If
If Rgb = 1 Then
Decr Led1
Incr Led2
Waitms Color_delay
End If
If Led2 = 255 Then
Rgb = 2
Led1 = 0
Wait Color_stop
End If
If Rgb = 2 Then
Decr Led2
Incr Led3
Waitms Color_delay
End If
If Led3 = 255 Then
Rgb = 0
Led2 = 0
Wait Color_stop
End If
If Programm <> 3 Then
Exit Sub
End If
Loop
End Sub
'Stroboskop-Programm
Sub Programm_4:
'Erstmal alle ausmachen...
'Led1 = 0
'Led2 = 0
'Led3 = 0
Do
If Command = 55 Then 'Wenn Taster_1 gedrückt, dann...
If Strobo_pause > 5 Then 'Wir wollen nicht unter 5 ms kommen
Strobo_pause = Strobo_pause - 5
End If
End If
If Command = 52 Then 'Wenn Taster_2 gedrückt, dann...
If Strobo_pause < 250 Then 'Wir wollen nicht über 200 ms kommen
Strobo_pause = Strobo_pause + 5
End If
End If
Led1 = 255
Waitms 50
Led1 = 0
Waitms Strobo_pause
Led2 = 255
Waitms 50
Led2 = 0
Waitms Strobo_pause
Led3 = 255
Waitms 50
Led3 = 0
Waitms Strobo_pause
If Programm <> 4 Then
Exit Sub
End If
Loop
End Sub
'Hier die Routine zu INT1
'Interrupt_schleife:
'Waitms 100 'Entprellen des Tasters
'If Programm < 4 Then 'Solange Programm kleiner als 2 ist, um +1 erhöhen
' Programm = Programm + 1
'Else 'Wenn größer als 2, dann zurück zu Programm 0
' Programm = 0
'End If
'Return 'Dahin zurück, wo wir hergekommen sind...
'End
*************************************************************************************+
diese Schaltung läuft Prima wenn man einen Taster zur Abfrage der einzelnden Programme nimmt da das wunderbar funktioniert wollte ich alles über RC5 laufen lassen aber da laufen die Programme nicht wie beim Taster durch und fangen am anfang wieder an sondern hören direkt am ende des Codes auf und erst nach nochmaligen Tatendrtuck auf die Fernbedienung fangen Sie wieder von vorne!!
Ich hoffe ich habe mich verständlich gemacht und es kann mir einer hierbei helfen??