Hi!
Kennt sich jemand mit Assemblerprogrammierung und DMX aus?
Wälze nun schon seit Tagen diverse Seiten (soundlight, http://www.dmx512-online.com/, usw), und habe heute mal versucht, ein kleines Testprogramm auf den µController zu schreiben.
Leider funzt das Teil nicht. Vermutlich liegt es an den Timings. Kann das bitte mal jmd nachprüfen? Der µC wird mit 12 MHz angetrieben.
Code
S1 EQU P1.3
Daten EQU P0
;---------------------------------------------- Zum Hauptprogramm gehen
ORG 0000h
sjmp main
;---------------------------------------------- Hauptprogramm -----
ORG 0020h
main:
;init: mov P0,#11111111b ; setze P0 alles auf "1"
; mov TMOD,#00000010b ; Mode2 Timer (8 Bit - Reload!)
; mov TL0,#152d ; Startwert
; mov TH0,#152d ; Reloadwert
; mov IP,#00h ; Priorität der Interrupts ist gleich!
; setb EA
; setb ET0
; setb TR0
mov DPTR,#Kanalwerte
mov R0,#0
;mov R2,#8 ;Hier Anzahl der Kanäle einstellen! ===========> Anzahl der Kanäle unten beim cjne einstellen!
WARTEN: jb S1,WARTEN
bytes_send:
mov P0,#00h
mov R1,50
break_time: djnz R1,break_time ;100µs break_time!
mov P0,#255 ;(1 MZ) ;MAB (Mark after Break 12 µs (8xNOP + mov + movc + mov = 12µ)
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
fetch_byte:
mov A,R0 ;(1 MZ)
movc A,@A+DPTR ;(2 MZ) Byte holen
mov P0,#0 ;MAB Ende => Startbit beginnt (low)
mov R1,#8 ;Zählregister für 8 Bits initialisieren
inc R0 ;Kanalzähler schonmal erhöhen
NOP
mov P0,A ; LSB
rr A
NOP
NOP
mov P0,A ; 2. Byte
rr A
NOP
NOP
mov P0,A ; 3. Byte
rr A
NOP
NOP
mov P0,A ; 4. Byte
rr A
NOP
NOP
mov P0,A ; 5. Byte
rr A
NOP
NOP
mov P0,A ; 6. Byte
rr A
NOP
NOP
mov P0,A ; 7. Byte
rr A
NOP
NOP
mov P0,A ; HSB
rr A
mov P0,#255 ;Stoppbits (2x 4µs)
NOP
NOP
; nach Sprung noch 4 MZ für fetch_byte
cjne R0,#8,fetch_byte ;(2 MZ) DEBUGGING: Braucht der CJNE noch einen MZ zum springen?
sjmp warten
Kanalwerte:
DB 0,255,255,0,255,0,255,0
END
Alles anzeigen
Ist vielleicht n bissel krank, weil ich die Serielle Schnittstelle nochmal neu erfunden habe, aber ich wollts mal von Grund auf probieren.
Wie gesagt irgendwas geht ned! :oops: :oops:
S.O.S
Danke an alle, die sich sogar nur mal den Code bis hier her gelesen haben,
und ein rießen Dankeschön an diejenigen, die mir antworten :wink:
Gruß
Andy