📄 004.asm
字号:
ORG 00H ;定义当前位置为 00H
AJMP START ;绝对转移 START
ORG 03H ;定义当前位置为 03H
AJMP MENU ;绝对转移 MENU
ORG 0BH ;定义当前位置为 0BH
AJMP TIME0 ;绝对转移 TIME0
ORG 1BH ;定义当前位置为 1BH
AJMP TIME1 ;绝对转移 TIME1
ORG 30H ;程序初始化。 定义当前位置为 30H,
START: MOV SP, #40H ;堆栈起始地址 传送 SP,立即数40H
MOV 08H, #00H ;传送 08H,立即数00H
MOV 09H, #00H ;传送 09H,立即数00H
MOV 0AH, #00H ;传送 0AH,立即数00H
MOV 17H, #100 ;调光脉冲宽度2 传送 17H,立即数100
MOV 15H, #01H ;DMX512地址 传送 15H,立即数01H
MOV 16H, #200 ;程序速度变量 传送 16H,立即数200
MOV 19H, #03H ;按钮计数变量 传送 19H,立即数03H
MOV 1CH, #200 ;程序速度查表起始地址 传送 1CH,立即数200
MOV 1DH, #00H ;频闪查表起始地址 传送 1DH,立即数00H
MOV 1EH, #01H ;速度变量2 传送 1EH,立即数01H
MOV 20H, #100 ;调光脉冲宽度 传送 20H,立即数100
MOV 21H, #100 ;调光脉冲宽度变量 传送 21H,立即数100
MOV 22H, #3FH ;LED灯板显示变量 传送 22H,立即数3FH
MOV 23H, #25 ;数码管扫描延时变量 传送 23H,立即数25
MOV 24H, #00H ;颜色选择变量 传送 24H,立即数00H
MOV 25H, #0EEH ;扫描指针变量 传送 25H,立即数0EEH
MOV 27H, #00H ;频闪变量1 传送 27H,立即数00H
MOV 28H, #00H ;频闪变量2 传送 28H,立即数00H
MOV 29H, #40 ;频闪慢20倍 传送 29H,立即数40
MOV 2FH, #00H ;用户标志 传送 2FH,立即数00H
MOV 30H, #0C0H ;数码管第一位显示扫描码 传送 30H,立即数0C0H
MOV 31H, #0C0H ;数码管第二位显示扫描码 传送 31H,立即数0C0H
MOV 32H, #0C0H ;数码管第三位显示扫描码 传送 32H,立即数0C0H
MOV 33H, #0C0H ;数码管第四位显示扫描码 传送 33H,立即数0C0H
MOV 34H, #00H ;程序选择变量 传送 34H,立即数00H
MOV 36H, #00H ;中断标志变量 传送 36H,立即数00H
MOV 37H, #00H ;速度变量1 传送 37H,立即数00H
MOV 38H, #00H ;菜单选择变量 传送 38H,立即数00H
MOV R4, #01H ;速度变量2 传送 通用寄存器4,立即数01H
MOV R5, #01H ;频闪变量3 传送 通用寄存器5,立即数01H
MOV R6, #01H ;频闪变量4 传送 通用寄存器6,立即数01H
MOV R7, #00H ;调光亮度变量 传送 通用寄存器7,立即数00H
MOV TMOD, #00010001B ;传送 TMOD,立即数00010001B
MOV TH0, #0FFH ;传送 TH0,立即数0FFH
MOV TL0, #30H ;传送 TL0,立即数30H
MOV TH1, #0FFH ;传送 TH1,立即数0FFH
MOV TL1, #30H ;传送 TL1,立即数30H
MOV SCON, #90H ;传送 SCON,立即数90H
CLR A ;清0 寄存器A
MOV PCON, A ;传送 PCON,寄存器A
MOV IP, #00001010B ;传送 IP,立即数00001010B
MOV IE, #10001011B ;传送 IE,立即数10001011B
SETB TR0 ;位-置1 TR0
CLR TR1 ;清0 TR1
AJMP M0 ;绝对转移 M0
;====================================================
ADDISP: MOV A, 15H ;DMX512数码管显示 传送 寄存器A,15H
MOV B, #10 ;传送 B,立即数10
DIV AB ;无符号除法 AB
MOV 30H, B ;传送 30H,B
MOV B, #10 ;传送 B,立即数10
DIV AB ;无符号除法 AB
MOV 31H, B ;传送 31H,B
MOV 32H, A ;传送 32H,寄存器A
MOV 33H, #0C0H ;传送 33H,立即数0C0H
MOV A, 30H ;传送 寄存器A,30H
MOV DPTR, #Digital ;传送 DPTR,立即数Digital
MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 30H, A ;传送 30H,寄存器A
MOV A, 31H ;传送 寄存器A,31H
MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 31H, A ;传送 31H,寄存器A
MOV A, 32H ;传送 寄存器A,32H
MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 32H, A ;传送 32H,寄存器A
MOV 33H, #40H ;传送 33H,立即数40H
MOV A, 1AH ;传送 寄存器A,1AH
JZ DMX2 ;寄存器为0转移 DMX2
MOV 1AH, #00H ;传送 1AH,立即数00H
DMX1: CALL DELAY ;调用 DELAY
JB P3.4, Recieve ;位-为1转移到 接口3第4位,Recieve
DJNZ 19H, DMX1 ;减一不为0转移 19H,DMX1
MOV 19H, #03H ;传送 19H,立即数03H
AJMP ADDR1 ;绝对转移 ADDR1
DMX2: MOV A, 1BH ;传送 寄存器A,1BH
JZ Recieve ;寄存器为0转移 Recieve
MOV 1BH, #00H ;传送 1BH,立即数00H
DMX3: CALL DELAY ;调用 DELAY
JB P3.5, Recieve ;位-为1转移到 接口3第5位,Recieve
DJNZ 19H, DMX3 ;减一不为0转移 19H,DMX3
MOV 19H, #03H ;传送 19H,立即数03H
AJMP ADDR2 ;绝对转移 ADDR2
ADDR: MOV 2CH, R7 ;传送 2CH,通用寄存器7
PUSH 27H ;入栈 27H
PUSH 28H ;入栈 28H
PUSH 1DH ;入栈 1DH
PUSH 34H ;入栈 34H
PUSH 37H ;入栈 37H
PUSH 2AH ;入栈 2AH
PUSH 1EH ;入栈 1EH
PUSH 1CH ;入栈 1CH
PUSH 1FH ;入栈 1FH
PUSH 2BH ;入栈 2BH
PUSH 17H ;入栈 17H
PUSH 24H ;入栈 24H
PUSH 08H ;入栈 08H
PUSH 09H ;入栈 09H
PUSH 0AH ;入栈 0AH
MOV 17H,#127 ;传送 17H,立即数127
MOV 28H, #00H ;传送 28H,立即数00H
MOV 1AH, #00H ;传送 1AH,立即数00H
MOV 1BH, #00H ;传送 1BH,立即数00H
JB P3.4, ST1 ;DMX512 UP按钮 地址增1 位-为1转移到 接口3第4位,ST1
ADDR1: MOV 1AH, #01H ;传送 1AH,立即数01H
CALL DELAY ;调用 DELAY
INC 15H ;加1 15H
MOV A, 15H ;传送 寄存器A,15H
JZ ST0 ;寄存器为0转移 ST0
AJMP ADDISP ;绝对转移 ADDISP
ST0: MOV 15H, #01H ;传送 15H,立即数01H
AJMP ADDISP ;绝对转移 ADDISP
ST1: JNB P3.5, ADDR2 ;DMX512 DOWN按钮 地址减1 位为0转移到 接口3第5位,ADDR2
JMP ADDISP ;间接转移到 ADDISP
ADDR2: MOV 1BH, #01H ;传送 1BH,立即数01H
CALL DELAY ;调用 DELAY,
DEC 15H ;减1 15H
MOV A, 15H ;传送 寄存器A,15H
JZ ST2 ;寄存器为0转移 ST2
AJMP ADDISP ;绝对转移 ADDISP
ST2: MOV 15H, #255 ;传送 15H,立即数255
AJMP ADDISP ;绝对转移 ADDISP
Recieve: CLR RI ;DMX512串行接收 清0 RI,
MOV 18H, #01H ;传送 18H,立即数01H
Q3: JNB RB8, Q4 ;位为0转移到 RB8,Q4
CLR RI ;清0 RI
JNB P3.4, ADDR1 ;位为0转移到 接口3第4位,ADDR1
JNB P3.5, ADDR2 ;位为0转移到 接口3第5位,ADDR2
MOV A, 36H ;传送 寄存器A,36H
JZ Q3 ;寄存器为0转移 Q3
AJMP MM0 ;绝对转移 MM0
Q4: CLR RI ;清0 RI
Q5: JB RI, Q6 ;位-为1转移到 RI,Q6
JNB P3.4, ADDR1 ;位为0转移到 接口3第4位,ADDR1
JNB P3.5, ADDR2 ;位为0转移到 接口3第5位,ADDR2
MOV A, 36H ;传送 寄存器A,36H
JZ Q5 ;寄存器为0转移 Q5
AJMP MM0 ;绝对转移 MM0
Q6: CLR RI ;清0 RI
Q7: JB RI, Q8 ;位-为1转移到 RI,Q8
AJMP Q7 ;绝对转移 Q7,
Q8: CLR RI ;清0 RI
MOV A, 18H ;传送 寄存器A,18H
XRL A, 15H ;逻辑-异或 寄存器A,15H
JNZ ST3 ;寄存器不为0转移 ST3
MOV 0EH, SBUF ;传送 0EH,SBUF
AJMP Q9 ;绝对转移 Q9
ST3: INC 18H ;加1 18H
MOV A, 18H ;传送 寄存器A,18H
JNZ ST4 ;寄存器不为0转移 ST4
INC 18H ;加1 18H
ST4: JB RI, Q8 ;位-为1转移到 RI,Q8
AJMP ST4 ;绝对转移 ST4
Q9: JB RI, Q10 ;位-为1转移到 RI,Q10
AJMP Q9 ;绝对转移 Q9
Q10: CLR RI ;清0 RI
MOV 0FH, SBUF ;传送 0FH,SBUF
Q11: JB RI, Q12 ;位-为1转移到 RI,Q12
AJMP Q11 ;绝对转移 Q11
Q12: CLR RI ;清0 RI
MOV 10H, SBUF ;传送 10H,SBUF
Q13: JB RI, Q14 ;位-为1转移到 RI,Q14
AJMP Q13 ;绝对转移 Q13
Q14: CLR RI ;清0 RI
MOV 11H, SBUF ;传送 11H,SBUF
Q15: JB RI, Q16 ;位-为1转移到 RI,Q16
AJMP Q15 ;绝对转移 Q15
Q16: CLR RI ;清0 RI
MOV 12H, SBUF ;传送 12H,SBUF
Q17: JB RI, Q18 ;位-为1转移到 RI,Q18
AJMP Q17 ;绝对转移 Q17
Q18: CLR RI ;清0 RI
MOV 13H, SBUF ;传送 13H,SBUF
Q19: JB RI, Q20 ;位-为1转移到 RI,Q20
AJMP Q19 ;绝对转移 Q19
Q20: CLR RI ;清0 RI
MOV 14H, SBUF ;传送 14H,SBUF
Q21: MOV A, 0EH ;DMX512串行处理 传送 寄存器A,0EH
MOV B, #2 ;传送 B,立即数2
DIV AB ;无符号除法 AB
MOV R7, A ;传送 通用寄存器7,A
MOV A,0FH ;传送 寄存器A,0FH
SETB C ;位-置1 进位标志/累加位
SUBB A, #244 ;带进位减法 寄存器A,立即数244
JC ST8 ;C位为1转移到 ST8
SETB TR1 ;位-置1 TR1
CLR TR0 ;清0 TR0
MOV P0, #0FFH ;传送 接口0,立即数0FFH
SETB C ;位-置1 进位标志/累加位
MOV A, R7 ;传送 寄存器A,通用寄存器7
SUBB A, #1 ;带进位减法 寄存器A,立即数1
JC ST7 ;C位为1转移到 ST7
MOV B, R7 ;传送 B,通用寄存器7
MOV A, #255 ;传送 寄存器A,立即数255
DIV AB ;无符号除法 AB
MOV R0, A ;传送 通用寄存器0,寄存器A
MOV B, A ;传送 B,寄存器A
MOV A, 12H ;传送 寄存器A,12H
DIV AB ;无符号除法 AB
MOV 08H, A ;传送 08H,寄存器A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -