📄 yixiangbo.asm
字号:
ORG 0000H
AJMP BEGIN
ORG 000BH
AJMP WAVE1
ORG 001BH
AJMP WAVE2
ORG 0030H
BEGIN: MOV 20H,#0FH
MOV SP,#50H
MOV TMOD,#11H
MOV TH0,#0D8H ;10MS定时
MOV TL0,#0F0H
MOV TH1,#0D8H ;10MS定时
MOV TL1,#0F0H
MOV IE,#8AH
MOV TCON,#50H
LOOP: CLR P1.0 ; 设置行编码"1110"
SETB P1.1
SETB P1.2
SETB P1.3
JB P1.4,NEXT1 ;判断键是否按下
ACALL DLY20MS ; 延时去抖
K0: JB P1.4,K00 ; 等待键释放
AJMP K0
K00:CLR 00H ;加相位
NEXT1: JB P1.5,NEXT2 ;判断键是否按下
ACALL DLY20MS ; 延时去抖
K1: JB P1.5,K11 ; 等待键释放
AJMP K1
K11: CLR 01H ;减相位
NEXT2: JB P1.6,NEXT3 ;判断键是否按下
ACALL DLY20MS ; 延时去抖
K2: JB P1.6,K22 ; 等待键释放
AJMP K2
K22: CLR 02H ;
NEXT3: JB P1.7,NEXT4 ;判断键是否按下
ACALL DLY20MS ; 延时去抖
K3: JB P1.7,K33 ; 等待键释放
AJMP K3
K33: CLR 03H ;
NEXT4: AJMP LOOP
WAVE1: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CPL P3.0
MOV TH0,#0D8H ;10MS定时
MOV TL0,#0F7H
RETI
WAVE2: JB 00H,STEP0
MOV TH1,#0FFH
MOV TL1,#0CBH
SETB 00H
RETI
STEP0: JB 01H,STEP1
SETB 01H
MOV TH1,#0B2H
MOV TL1,#17H
RETI
STEP1: JB 02H,STEP2
SETB 02H
MOV TH1,#0FDH
MOV TL1,#0D4H
RETI
STEP2: JB 03H,WAVE
SETB 03H
MOV TH1,#0B4H
MOV TL1,#0CH
RETI
WAVE: CPL P3.1
MOV TH1,#0D8H ;10MS定时
MOV TL1,#0F7H
RETI
DLY20MS: MOV 22H,#60H ; 延时20毫秒子程序
DY1: MOV 23H,#69H
DY2: DJNZ 23H,DY2
DJNZ 22H,DY1
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -