hier:

Code:
'--------------------------------------------------------------------
' Original von:
' DMX - Dimmer 512 / by DW-Soft
' Dirk Wegener - 2004 - the_clown@web.de
'--------------------------------------------------------------------
' Bearbeitet von Jochen Steinmann
' DMX - SwitchPack
' AVR-Bascom
'--------------------------------------------------------------------
' "Deklaration" m³sste klar sein
$regfile = "2313def.dat"                                    'AT90S2313
$crystal = 8000000                                          '8MHz Quarz
$baud = 250000                                              'Baudrate 250Kbaud

' ben÷tigete Variablen
Dim Dmx_count As Word                                       'Pakete die auf Ausgõnge zielen
Dim Dmx_count_temp As Byte                                  'Gesendete Pakete
Dim Dmx_byte As Byte                                        'DMX Wert
Dim Dmx_clock As Byte                                       'Spielerei
Dim Dmx_adr As Word                                         'DMX-Adresse
Dim Dmx_adr_temp As Byte                                    'DMX-Adresse (Temp)
Dim Dmx_adr_c As Word                                       'DMX-Adresse (Counter)
Dim Dmx_off As Byte                                         'DMX-Signal noch da?

' UART initialiesieren
Print "Start"
On Urxc Rec_isr
Enable Urxc

' Ports setzen und configurieren
Config Pind.6 = Output                                      'StatusLED
Config Portb = Output                                       'Schaltausgõnge
Set Portd.6

' Anfangsvariablen Festlegen
Dmx_count = 0                                               'kein Paket empfangen
Dmx_clock = 16                                              '
Dmx_adr = 2                                                 'DMX_Adresse 2

Enable Interrupts

' ******************************************************************************
' Hauptschleife
' ******************************************************************************
 Do
    Waitms 10
    Decr Dmx_off
    If Dmx_off = 0 Then
       Set Portd.6
    End If
 Loop

' ******************************************************************************
' Funktion: DMX-Signal emfangen und auswerten
'           Dieser Interupt wird beim eintreffen von seriellen Daten ausgef³hrt
Rec_isr:
   $asm                                                     'Programmteil f³r das Auswerten der
      .def Uart_status = R16                                'emfangenen Daten
      .def Uart_byte = R17
      .def Uart_temp1 = R18

            IN Uart_status,USR
            IN Uart_byte,UDR

            SBRC Uart_status,FE                             'Auswertung ob Datenbyte OK
            RJMP  Asm_reset                                 'bei ³berlõnge des Datenbyte = DMX Reset
            RJMP  Asm_Loop1                                 'Daten OK--->

      Asm_reset:
            LDI Uart_temp1,$00                              'Adesszõhler zur³cksetzen
            STS {Dmx_count_temp} , Uart_temp1               'Daten dem Basicvariablen ³bergeben
            STS {Dmx_byte} , Uart_byte
            RJMP Asm_exit
      Asm_loop1:
            STS {Dmx_byte} , Uart_byte
      Asm_exit:
   $end Asm

   If Dmx_count_temp <> 0 Then                              'emfangene Daten im "Dmx_buf" ablegen
      Incr Dmx_count                                        'und den jeweiligen Kanal zuordnen
      If Dmx_adr_c = Dmx_count Then
         If Dmx_adr_temp < 9 Then
            Select Case Dmx_adr_temp
               Case 1:
                  If 127 <= Dmx_byte Then : Reset Portb.0 : Else : Set Portb.0 : End If
               Case 2:
                  If 127 <= Dmx_byte Then : Reset Portb.1 : Else : Set Portb.1 : End If
               Case 3:
                  If 127 <= Dmx_byte Then : Reset Portb.2 : Else : Set Portb.2 : End If
               Case 4:
                  If 127 <= Dmx_byte Then : Reset Portb.3 : Else : Set Portb.3 : End If
               Case 5:
                  If 127 <= Dmx_byte Then : Reset Portb.4 : Else : Set Portb.4 : End If
               Case 6:
                  If 127 <= Dmx_byte Then : Reset Portb.5 : Else : Set Portb.5 : End If
               Case 7:
                  If 127 <= Dmx_byte Then : Reset Portb.6 : Else : Set Portb.6 : End If
               Case 8:
                  If 127 <= Dmx_byte Then : Reset Portb.7 : Else : Set Portb.7 : End If
            End Select
            Incr Dmx_adr_temp
            Incr Dmx_adr_c
         End If
      End If
   Else                                                     'bei DMX Reset Variablen setzen
      Dmx_count = 0 : Dmx_count_temp = 1
      Dmx_adr_c = Dmx_adr : Dmx_adr_temp = 1
      Decr Dmx_clock
      'nur eine Spielerei Toggelt eine LED am PortD.6 beim eintreffen von korrekten DMX Daten
      If Dmx_clock = 0 Then : Toggle Portd.6 : Dmx_clock = 16 : End If
   End If
   Dmx_off = 64
Return
war und ist für ein SwitchPack mit dem 2313

PS: Aus eigenem Interesse: Was willst du denn DMXzifizieren ??