DMX512灯光解码控制系统的开发与改造(6)
发布时间:2012-10-08 文章来源:常熟市广播电视总台电视中心
MCU1接收DMX信号后,从设置的地址码开始读取需要的32路数据,前16路送往MCU2,后16路送往MCU3,解码流程见图10
图10 MCU1解码流程图
部分汇编代码如下:DMX_Break BIT 020H.0 ;定义DMX有效数据开始标志
DMX_Start BIT 021H.0 ;定义从DIP开关定义的地址开始接收DMX数据标志
DMX_Add8_L DATA 022H ;定义低8位DMX地址码 ok
DMX_Add1_H BIT 023H.0 ;定义高1位DMX地址码
P4 DATA 0E8H ;定义P4口
ORG 0000H
LJMP START
ORG 0003H
LJMP INT0_Chuanshu
ORG 0023H ;RI/TI中断向量
LJMP UART
ORG 0100H ;程序从100H开始,避开中断向量区
START:
CLR DMX_Break ;置零 清DMX有效数据接收开始标志
CLR DMX_Start ;置零 从DIP开关定义的地址开始接收DMX数据标志
MOV P0,#0FFH ;将P0设置为输入模式
MOV A,P0 ;读取P0口8位DMX地址码
CPL A ;ACC取反
MOV DMX_Add8_L,A ;将ACC赋值于dmx_add8_L
SETB P3.7 ;将P3.7设置为输入模式
JNB P3.7,DMX9_0 ;P3.7为0(DIP9 ON),跳转至DMX9_0
CLR DMX_Add1_H ;P3.7为1(DIP9 OFF),DMX_Add1_H=0
SJMP DMX ;执行跳转至DMX继续
DMX9_0: ;判断0-8都为0进入测试模式
SETB DMX_Add1_H ;P3.7为0,DIP9 ON,DMX_Add1_H=1
DMX:
CLR P3.5 ;-->PWM1-16 P4.1不能产生INT0中断
CLR P3.4 ;-->PWM1-16 P4.0数据未准备好标志
SETB P1.3 ;-->PWM17-32 P4.2INT3
CLR P1.6 ;-->PWM17-32 P4.0数据未准备好标志
SETB P3.2 ;INT0输入模式
MOV R4,#0FFH ;LED-Dmx指示灯延时数据
MOV R5,#0FFH ;LED-Run指示灯延时数据
MOV R6,#0AH ;LED-Run指示灯延时数据
MOV SP,#0E1H ;重设堆栈指针于80H
MOV SCON,#98H ;设置为串口模式2
MOV PCON,#00H ;设置波特率为250Kb
MOV IE,#90H ;允许接收中断
……