📄 dcl.asm
字号:
mode data 20H
N_100ms data 21H
BUZZ EQU P2.0
M1 equ p3.2
M2 equ p3.3
M3 equ p2.3
org 0000h
main: mov mode,#0
acall buzzer
mov r0,#10
loop0: acall del
djnz r0,loop0
mov r0,#4
loop1: acall buzzer
djnz r0,loop1
start: mov p2,#10001111B
mov p0,#0fdh
startA: mov p3,#0ffh
acall keydown
acall modecheck
ajmp startA
keydown:jnb M1,mode1
jnb M2,mode2
jnb M3,shutdown
ret
modecheck:
mov a,mode
cjne a,#3,checkA
ajmp modeA
checkA: cjne a,#2,checkB
ajmp modeB
checkB: ret
mode1: mov a,mode
cjne a,#3,mode1A
ajmp modeA
mode1A: acall buzzer
mov p2,#0ffh
mov p1,#10101010B
acall del
mov mode,#3
modeA: mov p0,#09FH
clr p2.6
acall del1
setb p2.6
mov p0,#001H
clr p2.5
acall del1
setb p2.5
mov p0,#003H
clr p2.4
acall del1
setb p2.4
ret
mode2: mov a,mode
cjne a,#2,mode2B
ajmp modeB
mode2B: acall buzzer
mov p2,#0ffh
mov p1,#01010101B
acall del
mov mode,#2
modeB: mov p0,#00DH
clr p2.6
acall del1
setb p2.6
mov p0,#025H
clr p2.5
acall del1
setb p2.5
mov p0,#003H
clr p2.4
acall del1
setb p2.4
ret
shutdown:
mov a,mode
cjne a,#1,mode3C
ajmp modeC
mode3C: acall del
mov mode,#1
mov p1,#0ffh
acall buzzer
modeC: mov p2,#10001111B
mov p0,#0fdh
ret
BUZZER: MOV R6,255;蜂鸣子程序
BUZZ1: CPL BUZZ;
MOV R7,#80;
DJNZ R7,$;
DJNZ R6,BUZZ1;
CLR BUZZ;
RET
DEL: mov r5,#3
SD1: mov R6,#128
SD2: mov r7,#160
djnz r7,$
djnz r6,SD2
djnz r5,SD1
ret
DEL1:
MOV R6,#25
DL2: MOV R7,#50
DJNZ R7,$
DJNZ R6,DL2
RET
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -