📄 exp1.bak
字号:
ORG 0000H
AJMP START
ORG 0100H
START:
MOV A,#0FFH ;把11111111送到A中
MOV P1,A ;初始话键盘
MAIN: ACALL KEYON ;调用抗干扰程序
CJNE A,#0FFH,DELAY
AJMP MAIN
DELAY:ACALL DL10MS ;延时10MS消除抖动
ACALL KEYON
CJNE A,#0FFH,KEY ;如果是干扰则返回MAIN
AJMP MAIN
;--------抗干扰子程序----------
KEYON:MOV P1,#0FFH
MOV A,P1
ANL A,#0FFH
RET
;--------消除抖动子程序--------
DL10MS:MOV R7,#14H
LOOP: MOV R6,#0F9H
DJNZ R6,$
DJNZ R7,LOOP
RET
;1+(1+249*2+2)*20+2=10.023MS
;----------判断按键子程序-------
KEY:MOV A,P1
K0: CJNE A,#0FEH,K1
ACALL FANCY_0
K1: CJNE A,#0FDH,K2
ACALL FANCY_1
K2: CJNE A,#0FBH,K3
ACALL FANCY_2
K3: CJNE A,#0F7H,L1
ACALL FANCY_3
L1: RET
;-----------花式延时子程序-----
FANCY: MOV R5,#255
LOOP0: MOV R4,#255
DJNZ R4,$
DJNZ R5,LOOP0
RET
;-----------花式子程序0---------
FANCY_0:MOV P0,#0FEH
ACALL FANCY
CPL P0
ACALL KEYON
CJNE A,#0FFH,DELAY0
AJMP FANCY_0
DELAY0: ACALL DL10MS
ACALL KEYON
CJNE A,#0FFH,KEY
AJMP FANCY_0
RET
;-----------花式子程序1---------
FANCY_1:MOV P0,#0F0H
ACALL FANCY
CPL P0
ACALL KEYON
CJNE A,#0FFH,DELAY1
AJMP FANCY_1
DELAY1: ACALL DL10MS
ACALL KEYON
CJNE A,#0FFH,KEY
AJMP FANCY_1
RET
;-----------花式子程序2---------
FANCY_2:MOV P0,#0FBH
ACALL FANCY
CPL P0
ACALL KEYON
CJNE A,#0FFH,DELAY2
AJMP FANCY_2
DELAY2: ACALL DL10MS
ACALL KEYON
CJNE A,#0FFH,KEY
AJMP FANCY_2
RET
;-----------花式子程序3---------
FANCY_3:MOV P0,#0ECH
ACALL FANCY
CPL P0
ACALL KEYON
CJNE A,#0FFH,DELAY3
AJMP FANCY_3
DELAY3: ACALL DL10MS
ACALL KEYON
CJNE A,#0FFH,KEY
AJMP FANCY_3
RET
;-----------程序结束--------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -