📄 004.asm
字号:
FLDOWN: DEC 27H ;频闪减1 减1 27H,
MOV A, 28H ;传送 寄存器A,28H
CLR C ;清0 进位标志/累加位
SUBB A, #5 ;带进位减法 寄存器A,立即数5
MOV 28H, A ;传送 28H,寄存器A
MOV A, #40 ;传送 寄存器A,立即数40
CLR C ;清0 进位标志/累加位
SUBB A, 27H ;带进位减法 寄存器A,27H
JC L26 ;C位为1转移到 L26
AJMP L27 ;绝对转移 L27
L26: CLR C ;清0 进位标志/累加位
MOV 27H, #40 ;传送 27H,立即数40
MOV 28H, #200 ;传送 28H,立即数200
L27: MOV DPTR, #Flash ;传送 DPTR,立即数Flash
MOV A, 27H ;传送 寄存器A,27H
MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 1DH, A ;传送 1DH,寄存器A
RET ;子程序返回
PRUP: INC 34H ;程序选择增1==================================== 加1 34H,
MOV A, #06H ;传送 寄存器A,立即数06H
SUBB A, 34H ;带进位减法 寄存器A,34H
JC Y17 ;C位为1转移到 Y17
ACALL PRDISP ;绝对调用 PRDISP
RET ;子程序返回
Y17: CLR C ;清0 进位标志/累加位
MOV 34H, #00H ;传送 34H,立即数00H
ACALL PRDISP ;绝对调用 PRDISP
RET ;子程序返回
PRDOWN: DEC 34H ;程序选择减1 减1 34H,
MOV A, #06H ;传送 寄存器A,立即数06H
SUBB A, 34H ;带进位减法 寄存器A,34H
JC Y19 ;C位为1转移到 Y19
ACALL PRDISP ;绝对调用 PRDISP
RET ;子程序返回
Y19: CLR C ;清0 进位标志/累加位
MOV 34H, #06H ;传送 34H,立即数06H
ACALL PRDISP ;绝对调用 PRDISP
RET ;子程序返回
SPUP: INC 37H ;速度加1========================================== 加1 37H,
MOV A, #30 ;传送 寄存器A,立即数30
SUBB A, 37H ;带进位减法 寄存器A,37H
JC QQ3 ;C位为1转移到 QQ3
JMP QQ4 ;间接转移到 QQ4
QQ3: MOV 37H, #00H ;传送 37H,立即数00H
QQ4: SETB C ;位-置1 进位标志/累加位
MOV A, #21 ;传送 寄存器A,立即数21
SUBB A, 37H ;带进位减法 寄存器A,37H
JC SP4 ;C位为1转移到 SP4
MOV DPTR, #Speed ;传送 DPTR,立即数Speed
MOV A, 37H ;传送 寄存器A,37H
MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 1CH, A ;传送 1CH,寄存器A
MOV R0, 37H ;传送 通用寄存器0,37H
INC R0 ;加1 通用寄存器0
MOV 1EH, R0 ;传送 1EH,通用寄存器0
RET ;子程序返回
SP4: CLR C ;清0 进位标志/累加位
MOV A, 37H ;传送 寄存器A,37H
SP5: CJNE A, #21, SP6 ;比较-不等转移 寄存器A,立即数21,
MOV 1EH, #24 ;传送 1EH,立即数24
MOV 1CH, #250 ;传送 1CH,立即数250
RET ;子程序返回
SP6: CJNE A, #22, SP7 ;比较-不等转移 寄存器A,立即数22,
MOV 1EH, #29 ;传送 1EH,立即数29
MOV 1CH, #250 ;传送 1CH,立即数250
RET ;子程序返回
SP7: CJNE A, #23, SP8 ;比较-不等转移 寄存器A,立即数23,
MOV 1EH, #35 ;传送 1EH,立即数35
MOV 1CH, #250 ;传送 1CH,立即数250
RET ;子程序返回
SP8: CJNE A, #24, SP9 ;比较-不等转移 寄存器A,立即数24,
MOV 1EH, #40 ;传送 1EH,立即数40
MOV 1CH, #250 ;传送 1CH,立即数250
RET ;子程序返回
SP9: CJNE A, #25, SP10 ;比较-不等转移 寄存器A,立即数25,
MOV 1EH, #48 ;传送 1EH,立即数48
MOV 1CH, #250 ;传送 1CH,立即数250
RET ;子程序返回
SP10: CJNE A, #26, SP11 ;比较-不等转移 寄存器A,立即数26,
MOV 1EH, #60 ;传送 1EH,立即数60
MOV 1CH, #250 ;传送 1CH,立即数250
RET ;子程序返回
SP11: CJNE A, #27, SP12 ;比较-不等转移 寄存器A,立即数27,
MOV 1EH, #80 ;传送 1EH,立即数80
MOV 1CH, #250 ;传送 1CH,立即数250
RET ;子程序返回
SP12: CJNE A, #28, SP13 ;比较-不等转移 寄存器A,立即数28,
MOV 1EH, #104 ;传送 1EH,立即数104
MOV 1CH, #250 ;传送 1CH,立即数250
RET ;子程序返回
SP13: CJNE A, #29, SP14 ;比较-不等转移 寄存器A,立即数29,
MOV 1EH, #135 ;传送 1EH,立即数135
MOV 1CH, #250 ;传送 1CH,立即数250
RET ;子程序返回
SP14: MOV 1EH, #176 ;传送 1EH,立即数176
MOV 1CH, #250 ;传送 1CH,立即数250
RET ;子程序返回
SPDOWN: DEC 37H ;速度减1 减1 37H,
MOV A, #30 ;传送 寄存器A,立即数30
SUBB A, 37H ;带进位减法 寄存器A,37H
JC QQ5 ;C位为1转移到 QQ5
JMP QQ6 ;间接转移到 QQ6
QQ5: MOV 37H, #30 ;传送 37H,立即数30
QQ6: SETB C ;位-置1 进位标志/累加位
MOV A, #21 ;传送 寄存器A,立即数21
SUBB A, 37H ;带进位减法 寄存器A,37H
JC SP15 ;C位为1转移到 SP15
MOV DPTR, #Speed ;传送 DPTR,立即数Speed
MOV A, 37H ;传送 寄存器A,37H
MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 1CH, A ;传送 1CH,寄存器A
MOV R0, 37H ;传送 通用寄存器0,37H
INC R0 ;加1 通用寄存器0
MOV 1EH, R0 ;传送 1EH,通用寄存器0
RET ;子程序返回
SP15: CLR C ;清0 进位标志/累加位
MOV A, 37H ;传送 寄存器A,37H
AJMP SP5 ;绝对转移 SP5
LEDSCAN: MOV A, P2 ;数码管扫描======================================== 传送 寄存器A,P2
SWAP A ;A高低半字节交换 寄存器A
MOV 26H, A ;传送 26H,寄存器A
MOV R1, #26H ;传送 通用寄存器1,立即数26H
MOV A, 25H ;传送 寄存器A,25H
XCHD A, @R1 ;半字节交换 寄存器A,通用寄存器1指向的单元的内容
MOV A, 26H ;传送 寄存器A,26H
SWAP A ;A高低半字节交换 寄存器A
MOV P2, A ;传送 接口2,寄存器A
MOV A, 25H ;传送 寄存器A,25H
CJNE A, #0EEH, L12 ;比较-不等转移 寄存器A,立即数0EEH,
MOV P0, 30H ;传送 接口0,30H
AJMP L15 ;绝对转移 L15
L12: CJNE A, #0DDH, L13 ;比较-不等转移 寄存器A,立即数0DDH,
MOV P0, 31H ;传送 接口0,31H
AJMP L15 ;绝对转移 L15
L13: CJNE A, #0BBH, L14 ;比较-不等转移 寄存器A,立即数0BBH,
MOV P0, 32H ;传送 接口0,32H
AJMP L15 ;绝对转移 L15
L14: MOV P0, 33H ;传送 接口0,33H
L15: MOV A, 25H ;传送 寄存器A,25H
RL A ;循环左移 寄存器A
MOV 25H, A ;传送 25H,寄存器A
RET ;子程序返回
ALDISP: MOV A, R7 ;亮度数码管显示=================================== 传送 寄存器A,R7
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
JNZ AL0 ;寄存器不为0转移 AL0
MOV 32H, #0C7H ;传送 32H,立即数0C7H
AJMP AL1 ;绝对转移 AL1
AL0: MOV 32H, #0F9H ;传送 32H,立即数0F9H
AL1: 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 33H, #088H ;传送 33H,立即数088H
MOV 22H, #3FH ;传送 22H,立即数3FH
RET ;子程序返回
FLDISP: MOV A, 27H ;频闪数码管显示================================ 传送 寄存器A,27H
MOV B, #10 ;传送 B,立即数10
DIV AB ;无符号除法 AB
MOV 30H, B ;传送 30H,B
MOV 31H, A ;传送 31H,寄存器A
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 32H, #0C7H ;传送 32H,立即数0C7H
MOV 33H, #08EH ;传送 33H,立即数08EH
RET ;子程序返回
PRDISP: MOV 31H, #0C0H ;程序数码管显示================================ 传送 31H,立即数0C0H
MOV A, 34H ;传送 寄存器A,34H
MOV DPTR, #Digital ;传送 DPTR,立即数Digital
MOVC A, @A+DPTR ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
MOV 30H, A ;传送 30H,寄存器A
MOV 32H, #088H ;传送 32H,立即数088H
MOV 33H, #08CH ;传送 33H,立即数08CH
MOV 35H, #00H ;传送 35H,立即数00H
Q22: SETB 2FH.0 ;位-置1 2FH.0
MOV A, 34H ;程序选择 传送 寄存器A,34H
CJNE A, #00H, YI0 ;比较-不等转移 寄存器A,立即数00H,
MOV DPTR, #Prog0 ;传送 DPTR,立即数Prog0
MOV 2BH, DPH ;传送 2BH,DPH
MOV 1FH, DPL ;传送 1FH,DPL
MOV 2AH, #95 ;传送 2AH,立即数95
RET ;子程序返回
YI0: CJNE A, #01H, Y11 ;比较-不等转移 寄存器A,立即数01H,
MOV DPTR, #Prog1 ;传送 DPTR,立即数Prog1
MOV 2BH, DPH ;传送 2BH,DPH
MOV 1FH, DPL ;传送 1FH,DPL
MOV 2AH, #75 ;传送 2AH,立即数75
RET ;子程序返回
Y11: CJNE A, #02H, Y12 ;比较-不等转移 寄存器A,立即数02H,
MOV DPTR, #Prog2 ;传送 DPTR,立即数Prog2
MOV 2BH, DPH ;传送 2BH,DPH
MOV 1FH, DPL ;传送 1FH,DPL
MOV 2AH, #119 ;传送 2AH,立即数119
RET ;子程序返回
Y12: CJNE A, #03H, Y13 ;比较-不等转移 寄存器A,立即数03H,
MOV DPTR, #Prog3 ;传送 DPTR,立即数Prog3
MOV 2BH, DPH ;传送 2BH,DPH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -