??? 11/23/06 11:20 Read: times |
#128445 - Kathy Quinlan's DMX |
Hello everyone
I'm starting on a 8052 DMX demux, I've read kathy's article and source. The only question I have is one line of code: JB RB8,REC What is she checking here? Regards Jeroen BTW this is the whole code ;************************* 1CHANNEL *************************** ;************************* DMX 512 RECIVER PROGRAM *************************** ;************************* 11 BIT OUTPUT *************************** ;************************* BY KATHY QUINLAN *************************** ;************************* K.A.Q. ELECTRONICS *************************** ;************************* WRITTEN 05-09-1997 *************************** ;************************* LAST MODIFIED 26-01-2001 *************************** ;************************* COPYRIGHT 2001 *************************** ; ;MESSAGE FROM THE CREATOR ABOUT LIFE....... ; ;... AT LEAST MY PROGRAMMING IS NOT AS BAD AS MY SPELLING. SORRY ABOUT THE ; COMMENT FIELDS. ; ; ; ; $mod51 ;ASM DIRECTIVE FOR USE 8051 COMMAND SET ;************************* DATA EQU AND DEF STATEMENTS ************************ CNT1 EQU 7FH ;WE HAVE A BREAK PULSE TEMP EQU 7EH ;THROW RUBBISH HERE IADDRESS EQU 7DH ;BASE ADDRESS OF UNIT TEMP2 EQU 7CH ; CUR_BYTE EQU 7BH ;CURRENT BYTE # TIME2 EQU 7AH DMX1 EQU 79H ;DMX BYTE 1 ;************************** INTERRUPT VECTOR LIST ****************************** ORG 0000H ;RESET VECTOR SJMP START ORG 0003H ;EXTERNAL INTERRUPT ZERO RETI ORG 000BH ;TIMER ZERO OVERFLOW RETI ORG 0013H ;EXTERNAL INTERRUPT ONE RETI ORG 001BH ;TIMER ONE OVERFLOW RETI ORG 0023H ;COMBINED TX AND RX INTERRUPT SJMP REC_BYTE ;************************** START OF MAIN PROGRAMM ***************************** ORG 002BH ;START OF MAIN ROUTINE START: SJMP SETUP ;SETUP CPU FOR SERIAL,ONLY AT START-UP RUN: SJMP RUN ;WAIT FOR BYTE REQUIRED ;************************** SETUP ROUTINE ************************************ SETUP: MOV R0,#7FH ;THIS + NEXT 3 LINES CLEAR ALL DATA CLR A ;LOCATIONS CLEAR_LOOP: MOV @R0,A DJNZ R0,CLEAR_LOOP MOV CNT1,#00H ;RESET DMX STATUS REG MOV PCON,#00H ;SETS BAUD RATE TO 250Kb (16 Mhz XTAL) MOV SCON,#98H ;SETS UP THE SERIAL PORT (MODE 2) MOV IADDRESS,P0 ;LOADS UNIT BASE ADDRESS FROM DIP'S MOV IE,#90H ;ENABLE RECIEVE INTERUPT SJMP RUN ;RETURN TO MAIN PROGRAM ;************************** RECIVE DMX BYTES ********************************* REC_BYTE: PUSH PSW ;PUSHED TO STOP OVER WRITE PUSH ACC ;PUSHED TO STOP OVER WRITE CLR RI ;CLEAR THE RECIVE FLAG JB RB8,REC MOV CUR_BYTE,#00H ;WE HAVE A BREAK SJMP OUTI REC: MOV A,CUR_BYTE CJNE A,#00H,RECD ;IF CURRENT DMX BYTE GREATER THAN 0 WE HAVE DETECTED START BYTE MOV A,SBUF ;MOVES CURRENT DMX BYTE TO ACC CJNE A,#00H,OUTI ;CHECK IF BYTE ZERO INC CUR_BYTE ;WE HAVE BYTE ZERO !!!!!!! SJMP OUTI RECD: MOV A,CUR_BYTE ;MOV CURRENT DMX BYTE TO A CJNE A,IADDRESS,NOT_A ;COMP UNIT ADRESS AND CURRENT ACALL OUTPUT ;GO TO SAVE BYTE ROUTINE NOT_A: INC CUR_BYTE ;INC READEY FOR NEXT DMX BYTE OUTI: POP ACC ;RETURNED FROM STACK POP PSW ;RETURNED FROM STACK RETI ;PROC GO HOME !!!! ;************************** OUTPUT BYTE ************************************* OUTPUT: MOV P2,SBUF RET ;JD ;************************** THE END ****************************************** END ;ASM DIRECTIVE FOR END OF FILE</BODY></HTML> |
Topic | Author | Date |
Kathy Quinlan's DMX | 01/01/70 00:00 | |
I guess... | 01/01/70 00:00 | |
Any help? | 01/01/70 00:00 | |
Any help? | 01/01/70 00:00 | |
DMX![]() | 01/01/70 00:00 |