yixiangbo.asm
来自「利用单片机产生两路波形,并且一路可以任意移动相位.」· 汇编 代码 · 共 90 行
ASM
90 行
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 + =
减小字号Ctrl + -
显示快捷键?