📄 长陆.asm
字号:
ORG 0000H
LJMP START
ORG 0030H
START: MOV 00H,#00H
MOV 01H,#00H
ORL P1,#0FFH
MAIN1: JNB P1.2,MAI1
MAIN2: JNB P1.3,MAI2
AJMP START
MAI1: LCALL DELAY0;调用10毫秒延迟
JNB P1.2,HOU2 ;防抖处理,键按下转
LJMP START
MAI2: LCALL DELAY0;调用10毫秒延迟
JNB P1.3,HOU1 ;防抖处理,键按下转
AJMP START
HOU2: CLR P1.0
LCALL DELAY8
SETB P1.0
CLR P3.6
ORL P1,#0FFH
MAIN3: JNB P1.4,MAI3
MAIN4: JNB P1.5,MAI4
AJMP HOU2
MAI3: LCALL DELAY0;调用10毫秒延迟
JNB P1.4,HA2 ;防抖处理,键按下转
LJMP HOU2
MAI4: LCALL DELAY0;调用10毫秒延迟
JNB P1.5,HM2 ;防抖处理,键按下转
LJMP HOU2
HOU1: CLR P1.1
LCALL DELAY8
SETB P1.1
CLR P3.6
ORL P1,#0FFH
MAIN5: JNB P1.4,MAI5
MAIN6: JNB P1.5,MAI6
AJMP HOU1
MAI5: LCALL DELAY0;调用10毫秒延迟
JNB P1.4,HA1 ;防抖处理,键按下转
LJMP HOU1
MAI6: LCALL DELAY0;调用10毫秒延迟
JNB P1.5,HM1 ;防抖处理,键按下转
LJMP HOU1
HA2: LJMP CUA2
CUA2: SETB P1.6
LCALL LOOP1
CLR P1.6
LCALL DELAY1;粗增量
SETB P1.6
CJNE R1,#02H,CUA2;粗增量高位最终值
CJNE R0,#0CAH,CUA2
CLR P1.0
LCALL DELAY8
XIA2: SETB P1.0
SETB P1.6
LCALL LOOP1
CLR P1.6
LCALL DELAY2;细增量
SETB P1.6
CJNE R1,#03H,XIA2;细增量高位最终值
CJNE R0,#48H,XIA2
LCALL DELAY3;保持
DEA2: SETB P1.6
LCALL LOOP2;快减
CLR P1.6
LCALL DELAY6
SETB P1.6
CJNE R1,#00H,DEA2;减少最终值
CJNE R0,#00H,DEA2
LJMP START
HA1: LJMP CUA1
HM1: LJMP CM4
HM2: LJMP CM1
CM1: ORL P1,#0FFH
CLR P1.1
MAIN7: JNB P1.5,MAI7;粗增量是否开始
AJMP MAIN7
MAI7: LCALL DELAY0;调用10毫秒延迟
JNB P1.5,CUM2 ;防抖处理,键按下转
AJMP CM1
CUM2: SETB P1.1
SETB P1.6
LCALL LOOP1
CLR P1.6
LCALL DELAY1;粗增量
SETB P1.6
CJNE R1,#02H,CUM2;粗增量高位最终值
CJNE R0,#0CAH,CUM2
CM2: ORL P1,#0FFH
CLR P1.1
MAIN8: JNB P1.5,MAI8;细增量是否开始
AJMP MAIN8
MEN: LJMP XIA2
NOP
NOP
MAI8: LCALL DELAY0;调用10毫秒延迟
JNB P1.5,XIM2 ;防抖处理,键按下转
AJMP CM2
XIM2: SETB P1.1
SETB P1.6
LCALL LOOP1
CLR P1.6
LCALL DELAY2;细增量
SETB P1.6
CJNE R1,#03H,XIM2;细增量高位最终值
CJNE R0,#48H,XIM2
CM3: ORL P1,#0FFH
CLR P1.1
MAIN9: JNB P1.5,MAI9;减量是否开始
AJMP MAIN9
MEN1: LJMP DEA2
NOP
NOP
MAI9: LCALL DELAY0
JNB P1.5,DEM2
AJMP CM3
DEM2: SETB P1.1
SETB P1.6
LCALL LOOP2;快减
CLR P1.6
LCALL DELAY6
SETB P1.6
CJNE R1,#00H,MEN1;减少最终值
CJNE R0,#00H,MEN1
LJMP START
CUA1: SETB P1.6
LCALL LOOP1
CLR P1.6
LCALL DELAY4;粗增量
SETB P1.6
CJNE R1,#0DH,CUA1;粗增量高位最终值
CJNE R0,#9AH,CUA1
XIA1: SETB P1.6
LCALL LOOP1
CLR P1.6
LCALL DELAY5;细增量
SETB P1.6
CJNE R1,#0FH,XIA1;细增量高位最终值
CJNE R0,#0FFH,XIA1
LCALL DELAY3;保持
DEA1: SETB P1.6
LCALL LOOP2;快减
CLR P1.6
LCALL DELAY7
SETB P1.6
CJNE R1,#00H,DEA1;减少最终值
CJNE R0,#00H,DEA1
LJMP START
CM4: ORL P1,#0FFH
CLR P1.0
MAIN10: JNB P1.5,MAI10;粗增量是否开始
AJMP MAIN10
MAI10: LCALL DELAY0;调用10毫秒延迟
JNB P1.5,CUM1 ;防抖处理,键按下转
AJMP CM4
CUM1: SETB P1.0
SETB P1.6
LCALL LOOP1
CLR P1.6
LCALL DELAY4;粗增量
SETB P1.6
CJNE R1,#0DH,CUM1;粗增量高位最终值
CJNE R0,#9AH,CUM1
CM5: ORL P1,#0FFH
CLR P1.0
MAIN11: JNB P1.5,MAI11;细增量是否开始
AJMP MAIN11
MAI11: LCALL DELAY0
JNB P1.5,XIM1
AJMP CM5
MEN2: LJMP DEA1
NOP
NOP
XIM1: SETB P1.0
SETB P1.6
LCALL LOOP1
CLR P1.6
LCALL DELAY5;细增量
SETB P1.6
CJNE R1,#0FH,XIA1;细增量高位最终值
CJNE R0,#0FFH,XIA1
CM6: ORL P1,#0FFH
CLR P1.0
MAIN12: JNB P1.5,MAI12
AJMP MAIN12
MAI12: LCALL DELAY0
JNB P1.5,DEM1
AJMP CM6
DEM1: SETB P1.0
SETB P1.6
LCALL LOOP2;快减
CLR P1.6
LCALL DELAY7
SETB P1.6
CJNE R1,#00H,MEN2;减少最终值
CJNE R0,#00H,MEN2
LJMP START
;延迟
LOOP1: MOV DPTR , #0FFFFH
MOVX @DPTR , A
MOV DPTR , # 7FFFH
MOV A , 00H ;输出低8 位
MOVX @DPTR , A
MOV DPTR , # 4FFFH
MOV A , 01H ;输出高4 位
MOVX @DPTR , A
MOV DPH,01H
MOV DPL,00H
INC DPTR
MOV 01H,DPH
MOV 00H,DPL
RET
LOOP2: MOV DPTR , #0FFFFH
MOVX @DPTR , A
MOV DPTR , # 7FFFH
MOV A , 00H ;输出低8 位
MOVX @DPTR , A
MOV DPTR , # 4FFFH
MOV A , 01H ;输出高4 位
MOVX @DPTR , A
MOV DPH,01H
MOV DPL,00H
DJNZ 00H,DIL;低8位减为0
DJNZ 01H,DIL
DIL: RET
DELAY0: MOV R3,#27 ;10毫秒延迟
DL1: MOV R4,#200
DL2: DJNZ R4,DL2
DJNZ R3,DL1
RET
DELAY1: MOV R3,#13 ;5毫秒延迟
DL3: MOV R4,#205
DL4: DJNZ R4,DL4
DJNZ R3,DL3
RET
DELAY2: MOV R3,#38 ;14毫秒延迟
DL5: MOV R4,#199
DL6: DJNZ R4,DL6
DJNZ R3,DL5
RET
DELAY3: MOV R3,#20 ;2秒延迟
DL7: MOV R4,#250
DL8: MOV R5,#200
DL9: DJNZ R5,DL9
DJNZ R4,DL8
DJNZ R3,DL7
RET
DELAY4: MOV R3,#47 ;1毫秒延迟
DL10: MOV R4,#10
DL11: DJNZ R4,DL11
DJNZ R3,DL10
RET
DELAY5: MOV R3,#141 ;3毫秒延迟
DL12: MOV R4,#10
DL13: DJNZ R4,DL13
DJNZ R3,DL12
RET
DELAY6: MOV R3,#60 ;2.38毫秒延迟
DL14: MOV R4,#20
DL15: DJNZ R4,DL15
DJNZ R3,DL14
RET
DELAY7: MOV R3,#13 ;5毫秒延迟
DL16: MOV R4,#20
DL17: DJNZ R4,DL17
DJNZ R3,DL16
RET
DELAY8: MOV R3,#250 ;100毫秒延迟
DL18: MOV R4,#205
DL19: DJNZ R4,DL19
DJNZ R3,DL18
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -