📄 akey_s.asm
字号:
;参数定义
SPBM DATA 60H
KDKEY BIT P1.2 ;定义键盘检测位
FRIT EQU P1 ;定义P1口
;程序开始
ORG 4000H
LJMP MAIN
ORG 4100H ;程序从4100H单元开始存放
MAIN: MOV SP,#SPBM;给堆栈指针赋初值
KEY1:
ACALL KEY ;调KEY子程序
AJMP KEY1 ;继续
KEY:
PUSH PSW
PUSH ACC
KEYREP: MOV R1,#0FFH;赋初值
MOV A,#00H
ACALL TXDBYTE
JB KDKEY,KEYREP
ACALL DELAY
MOV R1,#00H
MOV A,#0FEH ;是,则判断其键值
KEYZHI:
CLR P1.7
ACALL DELAY
SETB P1.7
CLR P1.7
ACALL DELAY
SETB P1.7
ACALL TXDBYTE
JNB KDKEY,KEYRET ;是,则保存退出
RL A ;否则检测下一个键
INC R1
CJNE A,#7FH,KEYZHI ;检测完了吗?
KEYRET:
POP ACC
POP PSW
RET
TXDBYTE:
PUSH PSW
PUSH ACC
MOV R3,#08H
TXDUP: RLC A ;
MOV P1.0,C
CLR P1.1
SETB P1.1
DJNZ R3,TXDUP
POP ACC
POP PSW
RET
DELAY: MOV R7,#10H
DELAY0: MOV R6,#10H
DELAY1: DJNZ R6,DELAY1
DJNZ R7,DELAY0
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -