so ich habe mir mal kurz zeit genommen den code ein bisschen zu kommentieren... und ihn zu veröffentlichen... viel spass beim durchlesen ist vielleicht ein bisschen umständlich programmiert

Code:
$regfile = "m8def.dat"
$crystal = 8000000

'$framesize = 512
'$swstack = 512
'$hwstack = 512

Config Timer1 = Timer , Prescale = 1
On Timer1 Timer_irq
Const Timervorgabe = 65219
Enable Timer1

Config Rc5 = Pinb.6
Dim Address As Byte , Command As Byte

Enable Interrupts

Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Output
Config Portc.4 = Output
Config Portc.5 = Output
Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output

'Variabeln für 3 Farben pro LED und insgesamt 5 LED's
Dim Ledr(5) As Byte
Dim Ledg(5) As Byte
Dim Ledb(5) As Byte

'Variabeln für zufalszahlen
Dim Zufall_1 As Byte
Dim Zufall_2 As Byte
Dim Zufall_3 As Byte
Zufall_1 = 60
Zufall_2 = 130
Zufall_3 = 200

'Temp variabel für diverse zwischenspeicherungen
Dim Temp As Word

'Variabeln im eram für dauerhafte speicherung
Dim Speicher(90) As Eram Byte
Dim Zeiger As Byte

'Zählervariabel für Pwm
Dim Pwm As Byte
Pwm = 100

'Variabel für laufender fliessender Farbübergang
Dim Tim As Long
Dim Zaehler As Byte
Dim Progst(5) As Byte
Dim Prog6 As Bit

'Zählervariabel für diverse Schlaufen
Dim I As Byte

'Variabeln für Farbprogrammierung
Dim Progmod As Bit
Dim Rot As Bit
Dim Gruen As Bit
Dim Blau As Bit
Dim Led As Byte
Dim Tempr As Byte
Dim Tempg As Byte
Dim Tempb As Eram Byte
Dim Aktprog As Byte
Dim Aktprogtemp As Byte

'Bei Start die ersten Farbwerte laden
Zeiger = 0
For I = 1 To 5
   Incr Zeiger
   Ledr(i) = Speicher(zeiger)
   Incr Zeiger
   Ledg(i) = Speicher(zeiger)
   Incr Zeiger
   Ledb(i) = Speicher(zeiger)
Next I

Dim Geschw As Long
Geschw = 1000



Do

'Standbymodus alle Led's aus
If Aktprog = 99 Then
       Aktprogtemp = 99
       For I = 1 To 5
          Ledr(i) = 0
          Ledg(i) = 0
          Ledb(i) = 0
       Next
End If

'Infrarotempfang
Getrc5(address , Command)

If Address = 0 Then
   Command = Command And 127
End If

'**********Abspielmodus******************
If Progmod = 0 Then

   'die 2 Status LED's Ausschalten
   Portb.1 = 0
   Portb.2 = 0

   'Infrarotempfang und Programm zuweisung
   If Command = 60 And Aktprog <> 99 And Aktprog <> 6 Then Progmod = 1
   If Command = 12 Then Aktprog = 99
   If Command = 1 Then Aktprog = 0
   If Command = 2 Then Aktprog = 1
   If Command = 3 Then Aktprog = 2
   If Command = 4 Then Aktprog = 3
   If Command = 5 Then Aktprog = 4
   If Command = 6 Then Aktprog = 5
   If Command = 7 Then Aktprog = 6
   If Command = 8 Then Aktprog = 7
   If Command = 9 Then Aktprog = 8

   'Programme für feste Farbwerte
   If Aktprog = 0 Or Aktprog = 1 Or Aktprog = 2 Or Aktprog = 3 Or Aktprog = 4 Or Aktprog = 5 Then
   Prog6 = 0
     If Aktprog <> Aktprogtemp Then
        Aktprogtemp = Aktprog
        Zeiger = Aktprog * 15
        For I = 1 To 5
           Incr Zeiger
           Ledr(i) = Speicher(zeiger)
           Incr Zeiger
           Ledg(i) = Speicher(zeiger)
           Incr Zeiger
           Ledb(i) = Speicher(zeiger)
        Next I
     End If
    End If

    'Zufalsfarben für einzelne LED nacheinander
    If Aktprog = 7 Then
      Aktprogtemp = Aktprog
      Prog6 = 0
         If Command = 32 Then
            Geschw = Geschw + 2000
            Portb.1 = 1
            Portb.2 = 1
            Waitms 2
            Portb.1 = 0
            Portb.2 = 0
         End If
         If Command = 33 Then
            Geschw = Geschw - 2000
            Portb.1 = 1
            Portb.2 = 1
            Waitms 2
            Portb.1 = 0
            Portb.2 = 0
         End If
         If Geschw < 3000 Then
            Geschw = 3000
            Portb.1 = 1
            Waitms 100
            Portb.2 = 1
            Waitms 100
            Portb.1 = 0
            Portb.2 = 0
         End If
         If Geschw > 500000 Then
            Geschw = 500000
            Portb.1 = 1
            Waitms 100
            Portb.2 = 1
            Waitms 100
            Portb.1 = 0
            Portb.2 = 0
         End If
         If Tim > Geschw Then
           Tim = 0
           Incr I
           If I >= 5 Then I = 0
           Temp = Zufall_1 And Zufall_2
           Temp = Temp * 100
           Temp = Temp / 255
           Ledr(i) = Temp
           Temp = Zufall_1 And Zufall_3
           Temp = Temp * 100
           Temp = Temp / 255
           Ledg(i) = Temp
           Temp = Zufall_3 And Zufall_2
           Temp = Temp * 100
           Temp = Temp / 255
           Ledb(i) = Temp
         End If
    End If

    'Zufallsfarben für alle LED's miteinander
    If Aktprog = 8 Then
      Aktprogtemp = Aktprog
      Prog6 = 0
         If Command = 32 Then
            Geschw = Geschw + 2000
            Portb.1 = 1
            Portb.2 = 1
            Waitms 2
            Portb.1 = 0
            Portb.2 = 0
         End If
         If Command = 33 Then
            Geschw = Geschw - 2000
            Portb.1 = 1
            Portb.2 = 1
            Waitms 2
            Portb.1 = 0
            Portb.2 = 0
         End If
         If Geschw < 3000 Then
            Geschw = 3000
            Portb.1 = 1
            Waitms 100
            Portb.2 = 1
            Waitms 100
            Portb.1 = 0
            Portb.2 = 0
         End If
         If Geschw > 500000 Then
            Geschw = 500000
            Portb.1 = 1
            Waitms 100
            Portb.2 = 1
            Waitms 100
            Portb.1 = 0
            Portb.2 = 0
         End If
         If Tim > Geschw Then
           Tim = 0
           Incr I
           If I >= 5 Then I = 0
           Temp = Zufall_1 And Zufall_2
           Temp = Temp * 100
           Temp = Temp / 255
           Ledr(1) = Temp
           Ledr(2) = Temp
           Ledr(3) = Temp
           Ledr(4) = Temp
           Ledr(5) = Temp
           Temp = Zufall_1 And Zufall_3
           Temp = Temp * 100
           Temp = Temp / 255
           Ledg(1) = Temp
           Ledg(2) = Temp
           Ledg(3) = Temp
           Ledg(4) = Temp
           Ledg(5) = Temp
           Temp = Zufall_3 And Zufall_2
           Temp = Temp * 100
           Temp = Temp / 255
           Ledb(1) = Temp
           Ledb(2) = Temp
           Ledb(3) = Temp
           Ledb(4) = Temp
           Ledb(5) = Temp
         End If
    End If

    'Laufender Farbübergang
    If Aktprog = 6 Then
      Aktprogtemp = Aktprog

      If Prog6 = 0 Then
       Prog6 = 1
       For I = 1 To 5
          Progst(i) = I
          Ledr(i) = 0
          Ledg(i) = 0
          Ledb(i) = 0
       Next
       Ledg(2) = 50
       Ledr(3) = 100
       Ledr(4) = 50
      End If

      'If Tim > Geschw Then
         Incr Zaehler
         For I = 1 To 5
            If Progst(i) = 1 Then
               Ledr(i) = 100
               Ledg(i) = Ledg(i) + 1
               Ledb(i) = 0
            End If
            If Progst(i) = 2 Then
               Ledr(i) = 100
               Ledg(i) = Ledg(i) + 1
               Ledb(i) = 0
            End If
            If Progst(i) = 3 Then
               Ledg(i) = 100
               Ledr(i) = Ledr(i) - 1
               Ledb(i) = 0
            End If
            If Progst(i) = 4 Then
               Ledg(i) = 100
               Ledr(i) = Ledr(i) - 1
               Ledb(i) = 0
            End If
            If Progst(i) = 5 Then
               Ledg(i) = 100
               Ledb(i) = Ledb(i) + 1
               Ledr(i) = 0
            End If
            If Progst(i) = 6 Then
               Ledg(i) = 100
               Ledb(i) = Ledb(i) + 1
               Ledr(i) = 0
            End If
            If Progst(i) = 7 Then
               Ledb(i) = 100
               Ledg(i) = Ledg(i) - 1
               Ledr(i) = 0
            End If
            If Progst(i) = 8 Then
               Ledb(i) = 100
               Ledg(i) = Ledg(i) - 1
               Ledr(i) = 0
            End If
            If Progst(i) = 9 Then
               Ledb(i) = 100
               Ledr(i) = Ledr(i) + 1
               Ledg(i) = 0
            End If
            If Progst(i) = 10 Then
               Ledb(i) = 100
               Ledr(i) = Ledr(i) + 1
               Ledg(i) = 0
            End If
            If Progst(i) = 11 Then
               Ledr(i) = 100
               Ledb(i) = Ledb(i) - 1
               Ledg(i) = 0
            End If
            If Progst(i) = 12 Then
               Ledr(i) = 100
               Ledb(i) = Ledb(i) - 1
               Ledg(i) = 0
            End If
         Next I

         If Zaehler = 50 Then
            Zaehler = 0
            For I = 1 To 5
               Incr Progst(i)
               If Progst(i) = 13 Then Progst(i) = 1
            Next I
         End If
       End If
    'End If


End If

'*********** Programmiermodus ************
If Progmod = 1 Then
   Portb.1 = 1
   Portb.2 = 1

   'Speichern der Programmierten Farben im Eram
   If Command = 41 Then
      Progmod = 0
      Zeiger = Aktprog * 15
      For I = 1 To 5
          Incr Zeiger
          Speicher(zeiger) = Ledr(i)
          Incr Zeiger
          Speicher(zeiger) = Ledg(i)
          Incr Zeiger
          Speicher(zeiger) = Ledb(i)
      Next I
   End If

   'Farbauswahl = Rot
   If Command = 55 Then
      Rot = 1
      Gruen = 0
      Blau = 0
   End If
   'Farbauswahl = grün
   If Command = 54 Then
      Rot = 0
      Gruen = 1
      Blau = 0
   End If
   'Farbauswahl = Blau
   If Command = 52 Then
      Rot = 0
      Gruen = 0
      Blau = 1
   End If

   'Ledauswahl erhöhen
   If Command = 17 Then
      Waitms 100
      If Led < 5 Then Incr Led
      Tempr = Ledr(led)
      Tempg = Ledg(led)
      Tempb = Ledb(led)
      Ledr(led) = 0
      Ledg(led) = 0
      Ledb(led) = 0
      Waitms 200
      Ledr(led) = Tempr
      Ledg(led) = Tempg
      Ledb(led) = Tempb
   End If

   'Led auswahl erniedrigen
   If Command = 16 Then
      Waitms 100
      If Led > 1 Then Decr Led
      Tempr = Ledr(led)
      Tempg = Ledg(led)
      Tempb = Ledb(led)
      Ledr(led) = 0
      Ledg(led) = 0
      Ledb(led) = 0
      Waitms 200
      Ledr(led) = Tempr
      Ledg(led) = Tempg
      Ledb(led) = Tempb
   End If

   'Bei der Ausgewählten LED die Ausgewälte Farbe erhöhen und bei erreichen des Maximums 3maliges blinken der LED
   If Command = 32 Then
      If Rot = 1 And Ledr(led) < 101 Then Incr Ledr(led)
      If Gruen = 1 And Ledg(led) < 101 Then Incr Ledg(led)
      If Blau = 1 And Ledb(led) < 101 Then Incr Ledb(led)
      If Ledr(led) = 101 Or Ledg(led) = 101 Or Ledb(led) = 101 Then
         For I = 1 To 3
           Tempr = Ledr(led)
           Tempg = Ledg(led)
           Tempb = Ledb(led)
           Ledr(led) = 0
           Ledg(led) = 0
           Ledb(led) = 0
           Waitms 100
           Ledr(led) = Tempr
           Ledg(led) = Tempg
           Ledb(led) = Tempb
           Waitms 100
         Next I
         If Rot = 1 And Ledr(led) > 0 Then Decr Ledr(led)
         If Gruen = 1 And Ledg(led) > 0 Then Decr Ledg(led)
         If Blau = 1 And Ledb(led) > 0 Then Decr Ledb(led)
      End If
   End If
   'Bei der Ausgewählten LED die Ausgewälte Farbe erniedrigen
   If Command = 33 Then
      If Rot = 1 And Ledr(led) > 0 Then Decr Ledr(led)
      If Gruen = 1 And Ledg(led) > 0 Then Decr Ledg(led)
      If Blau = 1 And Ledb(led) > 0 Then Decr Ledb(led)
   End If
   'Alle Farben der Ausgewählten LED auf 0 setzen
   If Command = 13 Then
      Ledr(led) = 0
      Ledg(led) = 0
      Ledb(led) = 0
   End If

End If


Loop






Timer_irq:
  'Timervorgabe laden
  Timer1 = Timervorgabe

  'Diverse Variabeln erhöhen
  Incr Tim

  Incr Zufall_1
  Incr Zufall_2
  Incr Zufall_3

  'Zähler für pwm erniedrigen
  Decr Pwm

  'bei einem durchlauf der PWM variabel alle ports Ausschalten
  If Pwm = 0 Then
    Portd = 0
    Portc = 0
    Portb.0 = 0
    Pwm = 100
  End If


  'Ports je nach Farbintensität einschalten
  If Pwm <= Ledg(1) Then Portc.0 = 1
  If Pwm <= Ledb(1) Then Portc.1 = 1
  If Pwm <= Ledr(1) Then Portc.2 = 1

  If Pwm <= Ledg(2) Then Portc.3 = 1
  If Pwm <= Ledb(2) Then Portc.4 = 1
  If Pwm <= Ledr(2) Then Portc.5 = 1

  If Pwm <= Ledg(3) Then Portd.0 = 1
  If Pwm <= Ledb(3) Then Portd.1 = 1
  If Pwm <= Ledr(3) Then Portd.2 = 1

  If Pwm <= Ledg(4) Then Portd.3 = 1
  If Pwm <= Ledb(4) Then Portd.4 = 1
  If Pwm <= Ledr(4) Then Portd.5 = 1

  If Pwm <= Ledg(5) Then Portd.6 = 1
  If Pwm <= Ledb(5) Then Portd.7 = 1
  If Pwm <= Ledr(5) Then Portb.0 = 1

Return
gruss bluesmash