📄 004.asm
字号:
MOV A, 13H ;传送 寄存器A,13H
MOV B, R0 ;传送 B,通用寄存器0
DIV AB ;无符号除法 AB
MOV 09H, A ;传送 09H,寄存器A
MOV A, 14H ;传送 寄存器A,14H
MOV B, R0 ;传送 B,通用寄存器0
DIV AB ;无符号除法 AB
MOV 0AH, A ;传送 0AH,寄存器A
AJMP SBA ;绝对转移 SBA
ST7: CLR C ;清0 进位标志/累加位
MOV 08H, #00H ;传送 08H,立即数00H
MOV 09H, 08H ;传送 09H,08H
MOV 0AH, 08H ;传送 0AH,08H
SBA: MOV A, 11H ;传送 寄存器A,11H
MOV B, #15 ;传送 B,立即数15
DIV AB ;无符号除法 AB
MOV 27H, A ;传送 27H,寄存器A
MOV A, 27H ;传送 寄存器A,27H
MOV B, #5 ;传送 B,立即数5
MUL AB ;两数相乘 AB
MOV 28H, A ;传送 28H,A
MOV DPTR, #Flash ;传送 DPTR,立即数Flash
MOV A, 27H ;传送 寄存器A,27H
MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 1DH, A ;传送 1DH,A
AJMP Recieve ;绝对转移 Recieve
ST8: CLR C ;清0 进位标志/累加位
SETB TR0 ;位-置1 TR0
CLR TR1 ;清0 TR1
MOV A, 0FH ;传送 寄存器A,0FH
MOV B, #35 ;传送 B,立即数35
DIV AB ;无符号除法 AB
MOV 34H, A ;传送 34H,寄存器A
ACALL Q22 ;绝对调用 Q22
MOV A, 10H ;传送 寄存器A,10H
CPL A ;取反 寄存器A
MOV B, #08H ;传送 B,立即数08H
DIV AB ;无符号除法 AB
CJNE A, #31, ST9 ;比较-不等转移 寄存器A,立即数31,
MOV 37H, #30 ;传送 37H,立即数30
JMP ST10 ;间接转移到 ST10,
ST9: MOV 37H, A ;传送 37H,寄存器A
ST10: ACALL QQ4 ;绝对调用 QQ4
MOV A, 11H ;传送 寄存器A,11H
MOV B, #06H ;传送 B,立即数06H
DIV AB ;无符号除法 AB
CJNE A, #41, SB2 ;比较-不等转移 寄存器A,立即数41,
MOV 27H, #40 ;传送 27H,立即数40
JMP SBE ;间接转移到 SBE
SB2: CJNE A, #42, SB3 ;比较-不等转移 寄存器A,立即数42,
MOV 27H, #40 ;传送 27H,立即数40
JMP SBE ;间接转移到 SBE
SB3: MOV 27H, A ;传送 27H,寄存器A
SBE: MOV A, 27H ;传送 寄存器A,27H
MOV B, #5 ;传送 B,立即数5
MUL AB ;两数相乘 AB
MOV 28H, A ;传送 28H,A
MOV DPTR, #Flash ;传送 DPTR,立即数Flash
MOV A, 27H ;传送 寄存器A,27H
MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 1DH, A ;传送 1DH,A
AJMP Recieve ;绝对转移 Recieve
;=========================================================
PROGDMX: MOV DPL, 1FH ;传送 DPL,1FH
MOV DPH, 2BH ;传送 DPH,2BH
MOV A, 35H ;DMX512定时器自走程序 传送 寄存器A,35H
CJNE A, 2AH, QQ1 ;比较-不等转移 寄存器A,2AH,
MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 22H, A ;传送 22H,寄存器A
MOV 35H, #00H ;传送 35H,立即数00H
RET ;子程序返回
QQ1: MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 22H, A ;传送 22H,寄存器A
INC 35H ;加1 35H
RET ;子程序返回
MM0: POP 0AH ;出栈 0AH
POP 09H ;出栈 09H
POP 08H ;出栈 08H
POP 24H ;出栈 24H
POP 17H ;出栈 17H
POP 2BH ;出栈 2BH
POP 1FH ;出栈 1FH
POP 1CH ;出栈 1CH
POP 1EH ;出栈 1EH
POP 2AH ;出栈 2AH
POP 37H ;出栈 37H
POP 34H ;出栈 34H
POP 1DH ;出栈 1DH
POP 28H ;出栈 28H
POP 27H ;出栈 27H
M0: MOV 36H,#00H ;按钮处理程序 传送 36H,立即数00H
MOV 19H, #03H ;传送 19H,立即数03H
MOV A, 38H ;传送 寄存器A,38H
JNZ AD ;寄存器不为0转移 AD
JMP ADDR ;间接转移到 ADDR
AD: JB P3.4, N0 ;位-为1转移到 接口3第4位,N0
M1: CALL DELAY ;调用 DELAY
MOV A, 38H ;传送 寄存器A,38H
CJNE A, #01H, Y2 ;比较-不等转移 寄存器A,立即数01H,
SS1: ACALL ALUP ;绝对调用 ALUP
CALL DELAY ;调用 DELAY
JB P3.4, N0 ;位-为1转移到 接口3第4位,N0
CALL DELAY ;调用 DELAY
AJMP SS1 ;绝对转移 SS1
Y1: JB P3.4, N0 ;位-为1转移到 接口3第4位,N0
CALL DELAY ;调用 DELAY
DJNZ 19H, Y1 ;减一不为0转移 19H,Y1
MOV 19H, #03H ;传送 19H,立即数03H
AJMP M1 ;绝对转移 M1
Y2: CJNE A, #02H, Y3 ;比较-不等转移 寄存器A,立即数02H,
ACALL FLUP ;绝对调用 FLUP
ACALL FLDISP ;绝对调用 FLDISP
AJMP Y1 ;绝对转移 Y1
Y3: CJNE A, #03H, Y4 ;比较-不等转移 寄存器A,立即数03H,
ACALL PRUP ;绝对调用 PRUP
AJMP Y1 ;绝对转移 Y1
Y4: CJNE A, #04H, Y5 ;比较-不等转移 寄存器A,立即数04H,
ACALL SPUP ;绝对调用 SPUP
ACALL SPDISP ;绝对调用 SPDISP
AJMP Y1 ;绝对转移 Y1
Y5: ACALL RedUP ;绝对调用 RedUP
ACALL RedDISP ;绝对调用 RedDISP
CALL DELAY ;调用 DELAY
JB P3.4, N0 ;位-为1转移到 接口3第4位,N0
AJMP Y5 ;绝对转移 Y5
N0: MOV 36H,#00H ;传送 36H,立即数00H
MOV 19H, #03H ;传送 19H,立即数03H
MOV A, 38H ;传送 寄存器A,38H
JNZ AE ;寄存器不为0转移 AE
JMP ADDR ;间接转移到 ADDR
AE: CJNE A, #05H, SS3 ;比较-不等转移 寄存器A,立即数05H,
JMP SS4 ;间接转移到 SS4
SS3: JB P3.5, M0 ;位-为1转移到 接口3第5位,M0
N1: CALL DELAY ;调用 DELAY
MOV A, 38H ;传送 寄存器A,38H
CJNE A, #01H, Y7 ;比较-不等转移 寄存器A,立即数01H,
SS2: ACALL ALDOWN ;绝对调用 ALDOWN
CALL DELAY ;调用 DELAY
JB P3.5, M0 ;位-为1转移到 接口3第5位,M0
CALL DELAY ;调用 DELAY
AJMP SS2 ;绝对转移 SS2
Y6: JB P3.5, M0 ;位-为1转移到 接口3第5位,M0
CALL DELAY ;调用 DELAY
DJNZ 19H, Y6 ;减一不为0转移 19H,Y6
MOV 19H, #03H ;传送 19H,立即数03H
AJMP N1 ;绝对转移 N1,
Y7: CJNE A, #02H, Y8 ;比较-不等转移 寄存器A,立即数02H,
ACALL FLDOWN ;绝对调用 FLDOWN
ACALL FLDISP ;绝对调用 FLDISP
AJMP Y6 ;绝对转移 Y6
Y8: CJNE A, #03H, Y9 ;比较-不等转移 寄存器A,立即数03H,
ACALL PRDOWN ;绝对调用 PRDOWN
AJMP Y6 ;绝对转移 Y6
Y9: CJNE A, #04H, Y10 ;比较-不等转移 寄存器A,立即数04H,
ACALL SPDOWN ;绝对调用 SPDOWN
ACALL SPDISP ;绝对调用 SPDISP
AJMP Y6 ;绝对转移 Y6
Y10: ACALL GreenUP ;绝对调用 GreenUP
ACALL GreenDISP ;绝对调用 GreenDISP
CALL DELAY ;调用 DELAY
JNB P3.5, Y10 ;位为0转移到 接口3第5位,Y10
AJMP M0 ;绝对转移 M0
DELAY: MOV R2, #180 ;延时程序 传送 通用寄存器2,立即数180
D1: MOV R3, #248 ;传送 通用寄存器3,立即数248
DJNZ R3, $ ;减一不为0转移 通用寄存器3,到本行
DJNZ R2, D1 ;减一不为0转移 通用寄存器2,D1
RET ;子程序返回
SS4: JB P3.3, SS3 ;位-为1转移到 接口3第3位,SS3
ACALL BlueUP ;绝对调用 BlueUP
ACALL BlueDISP ;绝对调用 BlueDISP
CALL DELAY ;调用 DELAY
AJMP SS4 ;绝对转移 SS4
ALUP: INC R7 ;亮度增1============================== 加1 通用寄存器7,
MOV A, #100 ;传送 寄存器A,立即数100
SUBB A, R7 ;带进位减法 寄存器A,通用寄存器7
JC L8 ;C位为1转移到 L8
CALL ALDISP ;调用 ALDISP
RET ;子程序返回
L8: CLR C ;清0 进位标志/累加位
MOV R7, #00H ;传送 通用寄存器7,立即数00H
CALL ALDISP ;调用 ALDISP
RET ;子程序返回
ALDOWN: DEC R7 ;亮度减1 减1 通用寄存器7,
MOV A, #100 ;传送 寄存器A,立即数100
SUBB A, R7 ;带进位减法 寄存器A,通用寄存器7
JC L10 ;C位为1转移到 L10
CALL ALDISP ;调用 ALDISP
RET ;子程序返回
L10: CLR C ;清0 进位标志/累加位
MOV R7, #100 ;传送 通用寄存器7,立即数100
CALL ALDISP ;调用 ALDISP
RET ;子程序返回
FLUP: INC 27H ;频闪加1=================================== 加1 27H,
MOV A, 28H ;传送 寄存器A,28H
ADD A, #5 ;两数相加 寄存器A,立即数5
MOV 28H, A ;传送 28H,寄存器A
MOV A, #40 ;传送 寄存器A,立即数40
CLR C ;清0 进位标志/累加位
SUBB A, 27H ;带进位减法 寄存器A,27H
JC L24 ;C位为1转移到 L24
AJMP L25 ;绝对转移 L25,
L24: CLR C ;清0 进位标志/累加位
MOV 27H, #00H ;传送 27H,立即数00H
MOV 28H, #00H ;传送 28H,立即数00H
L25: MOV DPTR, #Flash ;传送 DPTR,立即数Flash
MOV A, 27H ;传送 寄存器A,27H
MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 1DH, A ;传送 1DH,寄存器A
RET ;子程序返回
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -