Very elegant. Nice job, DynamoBen.
Well, I can see some potential problems with that program.
So be ready for some more questions from programmer07, oops, I mean syscoder.
<br>
DT
Assuming it's a snip and a ISR... first observation, something like a L?CALL have to be changebut it's a first & fast observation.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Its a first draft and I offer it up as-is so I make not warranties.I'm open to suggestions or improvements.
BTW the question did seem familar.
Last edited by DynamoBen; - 8th March 2007 at 05:18.
dear dynamoben thanks for your answer i will try it, is there anybody here that tryed it and working?
and how can i use it for 16f628 and 20 mhz osc and i will use only 3 led to dimmer them imean 3 chanel ?
Last edited by syscoder; - 14th March 2007 at 22:09.
ok friends thank you for helping i will try to make it and will see if it is working then i will post code here cause i see there is many people here need help to receive dmx signal like me
i understand pulsin is for the break signal and hserin is to receive dmx
hi friends i search in the forum and found many examples thanks. i have pic 16f876 , 20 mhz osc and 1 led ,i have dmx512 lighting desk too and i want to dimm a led on dmxadres 1 (0-255 to led intensty) but there is some problem on this code it is not working. i found this code in the forum and made it again for my pic but couldnt find the problem.can you look to my code and say what is my problem here?or you can send other example code to receive dmx ..
' PIC 16F876 - 20MHZ OSC
DEFINE OSC 20 ' 20 MHZ OSC
DEFINE HSER_TXSTA 24h ' Enable transmit
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_SPBRG 4 ' 250 000 Baud @ 20MHz, 0.0%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
ASM
ERRORLEVEL -306, -302
ENDASM
ADCON0 = 0
ADCON1 = 7
counter var word
idleflag var word
dummy var word
RCIF VAR BYTE
startcode var word
aminus var word
adress var word
x var word
level1 var word
adress = 1 ' My Start Adress
checkdmx:
counter = 1 ' Dummy variable
pulsin portC.7,0,counter 'Here looking for the break signal
if counter = 0 then
idleflag = 1 'either no dmx , or break was too long to count
'return
endif
if counter < 40 then checkdmx ' watching for "break"
dummy = RCREG
dummy = RCREG
SPBRG = 0
TXSTA.2 = 0
TXSTA.4 = 0
RCSTA.7 = 1
RCSTA.6 = 0
RCSTA.4 = 0
RCSTA.4 = 1
while RCIF = 0: wend
startcode = RCREG 'firs byte after break
if startcode <> 0 then checkdmx
aminus = adress -1
for x = 1 to aminus
while RCIF = 0: wend
dummy = RCREG
next x
level1 = RCREG
portC.1 = level1 'i want to dimm led on port c.1
RCSTA.7 = 0
goto checkdmx
return
Bookmarks