⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.asm

📁 采用中断方式的4*4扫描矩阵式键盘
💻 ASM
字号:
KEY:   MOV    P1,#0F0H   ;行线置低电平,列线置输入态
KEY0:  MOV    A,P1       ;读列线数据
       CPL    A          ;数据取反,"1"有效
       ANL    A,#0F0H    ;屏蔽行线,保留列线数据
       MOV    R1,A       ;存列线数据(R1高4位)
       JZ     GRET       ;全0,无键按下,返回
KEY1:  MOV    P1,#0FH    ;行线置输入态,列线置低电平
       MOV    A, P1      ;读行线数据
       CPL    A          ;数据取反,"1"有效
       ANL    A, #0FH    ;屏蔽列线,保留行线数据
       MOV    R2,A       ;存行线数据(R2低4位)
       JZ     GRET       ;全0,无键按下,返回
       JBC    F0,WAIT    ;已有消抖标志,转
       SETB   F0         ;无消抖标志,置消抖标志
       LCALL  DY10ms     ;调用10ms延时子程序(参阅例4.13),消抖
    	SJMP   KEY0       ;重读行线列线数据
GRET:  RET               ;
WAIT:  MOV    A,P1     ;等待按键释放
       CPL    A        ;
       ANL    A,#0FH   ;
       JNZ    WAIT     ;按键未释放,继续等待
KEY2:  MOV    A,R1     ;取列线数据(高4位)
       MOV    R1,#03H  ;取列线编号初值
       MOV    R3,#03H  ;置循环数
       CLR    C        ;
KEY3:  RLC    A        ;依次左移入C中
       JC     KEY4     ;C=1,该列有键按下,(列线编号存R1)
       DEC    R1       ;C=0,无键按下,修正列编号
       DJNZ   R3,KEY3  ;判循环结束否?未结束继续寻找有键按下的列线
KEY4:  MOV    A,R2     ;取行线数据(低4位)
       MOV    R2,#00H  ;置行线编号初值
       MOV    R3,#03H  ;置循环数
       CLR    C        ;
KEY5:  RRC    A        ;依次右移入C中
       JC     KEY6     ;C=1,该行有键按下,(行线编号存R2)
       INC    R2       ;C=0,无键按下,修正行线编号
       DJNZ   R3,KEY5  ;判循环结束否?未结束继续寻找有键按下的行线
KEY6:  MOV    A,R2          ;取行线编号
       CLR    C             ;
       RLC    A             ;行编号×2
       RLC    A             ;行编号×4
       ADD    A,R1          ;行编号×4+列编号=按键编号
KEY7:  CLR    C             ;
       RLC    A             ;按键编号×2
       RLC    A             ;按键编号×4(LCALL+ RET共4字节)
       MOV    DPTR,#TABJ    ;
       JMP    @A+DPTR       ;散转,执行相应键功能子程序
TABJ:  LCALL  WORK0         ;调用执行0#键功能子程序
       RET                  ;
       LCALL  WORK1         ;调用执行1#键功能子程序
       RET                  ;
       …     …
       LCALL  WORK15        ;调用执行15#键功能子程序
       RET                  ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -