Puh, das war ein mächtiges Stück Arbeit, aber jetzt sollte das Timing passen. Mit einem AT-Mega8 und 8Mhz Quarz. Ausgang ist der Pin 13, an Pin 23 kann mit 0-5Volt der Kanal 1 gedimmt werden.
DA ich gerade kein DMX512 Gerät habe wärs nett, wenn das jemand testet.

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

Ddrc = &B00000000
Ddrd = &B11111111
Admux = &B01100000
Adcsra = &B11100110

Dim Temp As Word
Dim Kanal As Byte
Dim Puffer(65) As Word
Dmxout Alias Portd.7

Declare Sub Dmx()

Enable Interrupts

Do
 Puffer(1) = Adch
 Call Dmx
Loop

Sub Dmx()
Dmxout = 0                                                  'Reset
Waitus 88
Dmxout = 1
$asm
.def Tmp1 = R17                                             'Marker
.def Tmp2 = R18
            ldi  Tmp1, $15
Make_loop1:
            dec  Tmp1
            brne Make_loop1
nop
$end Asm
For Kanal = 0 To 32                                         '8   'Anzahl der Kanäle
   Temp = Puffer(kanal)                                     '20
   $asm
   .def Temp1 = R17
   .def Temp2 = R18
   .def Txbyte = R19
   Putchar:
         LDS Txbyte, {Temp}                                 '2
         LDI Temp1 , 9                                      '1
         COM Txbyte                                         '1
         SEC                                                '1
   Putchar0:
         BRCC Putchar1                                      '1 oder 2
         nop                                                '1
         CBI Portd,Pd7                                      '2
         RJMP putchar2                                      '2
   Putchar1:
         SBI Portd,Pd7                                      '2
         NOP                                                '1
         nop                                                '1
   Putchar2:
         LDI Temp2 , $7                                     '1
   Sd_loop0:
         DEC Temp2                                          '1
         BRNE Sd_loop0
         '''''''''''''''''
         nop
         LSR Txbyte                                         '1
         DEC Temp1                                          '1
         BRNE putchar0                                      '1 oder 2
   $end Asm
   nop
   nop
   nop
   Dmxout = 1                                               '2
$asm
.def Tmp1 = R17
.def Tmp2 = R18
            ldi  Tmp1, $1b
Make_loop0:
            dec  Tmp1
            brne Make_loop0
$end Asm                                                    '2Stoppbits und der Marker = 16µs
Next Kanal                                                  '10
End Sub