Habe nicht getestet. Wäre ein Versuch wert.
Code:
              'Konfiguration µC:
$regfile = "m8def.dat"                                      'AT-Mega8
$crystal = 16000000                                         'Quarz: 16 MHz
$baud = 38400                                               'Baudrate definieren
$hwstack = 64                                               ' default use 32 for the hardware stack
$swstack = 64                                               ' default use 10 for the SW stack
$framesize = 64
'-------------------------------------------------------------------------------
'Ein- Ausgänge:
Ddrb = &B11111111                                           '1 Ausgang, 0 Eingang => Pin PB7-0 als Ausgang
Ddrc = &B11111111                                           '1 Ausgang, 0 Eingang => Pin PB7-0 als Ausgang

Portb = 0
Portc = 0

'-------------------------------------------------------------------------------
'Timer0 = 8 Bit
'wird für RC5 Auswertung benötigt!!!
Config Rc5 = Pind.3                                         'Timer0 in Benutzung!!!
Portd.3 = 1                                                 'Pull Up für Empfänger

'16Bit Timer:
Config Timer1 = Timer , Prescale = 256
On Timer1 Timer1_irq
Const Timervorgabe = 64911                                  '100 mal pro Sekunde
Enable Timer1
Enable Interrupts


'-------------------------------------------------------------------------------
'Variablen:
'-------------------------------------------------------------------------------
Dim Address As Byte , Command As Byte , Command_old As Bit , Flag As Bit       'RC5

'Taste lange gedrückt
'Dim Taste_lang As Word
'Taste 1-6 auf der FB
Dim T1 As Byte , T2 As Byte , T3 As Byte                    ' , T4 As Byte , T5 As Byte , T6 As Byte
'Lampe 1-12
'Dim L1s As Bit , L2s As Bit , L3s As Bit , L4s As Bit , L5s As Bit , L6s As Bit , L7s As Bit , L8s As Bit , L9s As Bit , L10s As Bit , L11s As Bit , L12s As Bit ,

Dim Empfang As Bit                                          'ist 0 wenn kein empfang  also 255 von address

Dim Sek As Byte                                             'wenn = 100 dann 1 sec um
Dim L As Integer

'Lampen festlegen

'-------------------------------------------------------------------------------
'Vor Programmstart:

'alle Lampen aus:

Const An = 1
Const Aus = 0
Const Nichts = 255

T3 = Nichts
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'Hauptprogramm Do...Loop
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
Print "Programm Start 38400 Baud..."
Do


'-------------------------------------------------------------------------------
'Rc5 Code einlesen:
Getrc5(address , Command)
    'Print "Address: " ; Address
     'Print "Command: " ; Command



'-------------------------------------------------------------------------------
'RC5 Code umsetzen:
   If Address = 255 Then                                    'also kein Signal
      Empfang = 0
      Sek = 0
      T3 = Nichts
   End If


   If Address = 0 Then                                      'Adresse 0=TV FB
         If Empfang = 0 Then
          Empfang = 1
'          Timer1 = Timervorgabe                             'Timer1 zurücksetzen, damit erst bei Tastendruck gezählt wird
         'Print "timerzurück"
         End If

 '         If Command.7 = Command_old Then
 '           Incr Taste_lang
 '         Else
 '            Taste_lang = 0                                    'Variable zurücksetzen
 '            Command_old = Command.7
 '         End If

           'Print "Command.7: " ; Command.7
           'Print "Taste_lang: " ; Taste_lang

           'Command = Command And &B01111111                    'reset toggle bit
 '          Reset Command.7                                  'reset toggle bit

        Select Case Command
           Case 0 : Print "CASE = 0"
           Case 1 : T1 = 1
                     T2 = 2
                     Gosub Lampe1

           Case 2 : T1 = 3
                     T2 = 4
                     Gosub Lampe1

           Case 3 : T1 = 5
                     T2 = 6
                     Gosub Lampe1

           Case 4 : T1 = 7
                     T2 = 8
                     Gosub Lampe1

           Case 5 : T1 = 9
                     T2 = 10
                     Gosub Lampe1

           Case 6 : T1 = 11
                     T2 = 12
                     Gosub Lampe1

           Case Else : Print "Fehler: " ; Command
        End Select
   End If
  '_______________________________________________________________________________

Loop
End



'-------------------------------------------------------------------------------
'Relais ansteuern
'-------------------------------------------------------------------------------




Lampe1:
'=============
         If T3 = Nichts Then
            If L.t1 = 0 Then
               T3 = An
            Else
               T3 = Aus
            End If
         End If
         If Sek < 200 Then
            If T3 = An Then
               Set L.t1
               Print "L" ; T1 ; ":1"
            Else
               Reset L.t2
               Print "L" ; T2 ; ":0"
            End If
         Else
            If T3 = An Then
               Set L.t2
               Print "L" ; T2 ; ":1"
            Else
               Reset L.t1
               Print "L" ; T1 ; ":0"
            End If
         End If
         Gosub Setzen

Return

Timer1_irq:
Timer1 = Timervorgabe

If Empfang = 1 Then
   If Sek < 255 Then
      Incr Sek
   End If
End If


Return


Setzen:
     Portc.5 = L.1
     Portc.4 = L.2
     Portc.3 = L.3
     Portc.2 = L.4
     Portc.1 = L.5
     Portc.0 = L.6
     Portb.5 = L.7
     Portb.4 = L.8
     Portb.3 = L.9
     Portb.2 = L.10
     Portb.1 = L.11
     Portb.0 = L.12
Return