📄 key.asm
字号:
;-----------------------------------
; 受控输出实例2
;功能:中断方式检测按键状态,8只LED显示按键被按下次数的二进制值
;-----------------------------------
KEY_PIN EQU P3.2
COUNT DATA 30H
ORG 0000H ;伪指令,指定程序从0000H开始存放
LJMP MAIN ;跳转指令,程序跳转到MAIN处
ORG 0003H ;伪指令,外部中断0中断程序入口地址
LJMP KEY_INT ;跳转指令,程序跳转到KEY_INT处
ORG 0100H ;伪指令,指定以下程序从0100H开始存放
MAIN:
MOV SP,#60H ;给堆栈指针赋初值
SETB KEY_PIN ;置一P3.2,初始化输入口
MOV COUNT,#0FFH ;给计数变量COUNT赋初值
MOV P1,COUNT ;给P1赋初值,LED全灭
LCALL X0_INIT ;调用外部中断0初始化子程序
SJMP $ ;程序原地跳转,等待中断
;延时10MS子程序
DELAY10MS:
MOV R7,#20
DELAY0:
MOV R6,#250
DJNZ R6,$
DJNZ R7,DELAY0
RET
X0_INIT:
;---------------------------------
; 外部中断0初始化子程序
;---------------------------------
MOV TCON,#01H ;外部中断0为下降沿触发
MOV IP,#01H ;外部中断0为高优先级
MOV IE,#81H ;允许外部中断0
RET
KEY_INT:
;---------------------------------
; 外部中断0服务程序
;---------------------------------
PUSH PSW
SETB RS1
LCALL DELAY10MS ;延时10MS,按键抖动消除
MOV C,KEY_PIN
JC KEY_INT_EXIT
DEC COUNT ;按键被按下,计数加一
MOV P1,COUNT ;LED输出显示
KEY_INT_EXIT:
POP PSW
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -