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

📄 44keyboard.txt

📁 通过4*4键盘输入键值
💻 TXT
字号:
        ORG    00H
START:  MOV    R4,#04H     ;清除30H到33H的地址
        MOV    R0,#30H 
CLEAR:  MOV    @R0,#00H
        INC    R0
        DJNZ   R4,CLEAR
L1:     MOV    R3,#0F7H   ;扫描初值(P1-3=0)
        MOV    R1,#00H    ;取码指针
L2:     MOV    A,R3       ;开始扫描
        MOV    P0,A       ;将扫描值输出至P0
        MOV    A,P0       ;读入P1值,判断是否有按键按下?
        MOV    R4,A       ;存入R4,以判断是否放开
        SETB   C          ;C=1
        MOV    R5,#04H    ;扫描P04-P07
L3:     RLC    A          ;将按键值左移一位
        JNC    KEYIN      ;判断C=0?有键按下则C=0,跳至KEYIN
        INC    R1         ;C=1则表示没有键按下,将取码指针值加1
        DJNZ   R5,L3      ;4列扫描完了吗?
        CALL   DISP       ;调用显示子程序
        MOV    A,R3       ;扫描值载入
        SETB   C          ;C=1
        RRC    A          ;扫描下一行(P03-P01)
        MOV    R3,A       ;存回扫描寄存器
        JC     L2         ;C=1?是则P00没有扫描到
        JMP    L1         ;C=0则4行已扫描完毕
KEYIN: MOV    R7,#60H    ;消除抖动
D2:     MOV    R6,#248
        DJNZ   R6,$
        DJNZ   R7,D2
D3:     MOV    A,P0       ;读入P0值
        XRL    A,R4       ;与上次读入值作比较
        JZ     D3         ;ACC=0则相等,表示按键未放
        MOV    A,R1       ;按钮已放开,取码指针载入累加器
        MOV    DPTR,#TABLE;数据指针指到TABLE
        MOVC   A,@A+DPTR  ;至TABLE取码
        XCH    A,30H      ;当前按键值存入(30H)
        XCH    A,31H      ;旧(30H)值存入(31H)
        XCH    A,32H      ;旧(31H)值存入(32H)
        XCH    A,33H      ;旧(32H)值存入(33H)
        CALL   DISP       ;调用显示子程序
        JMP    L1
DISP:   MOV    A,33H
        ADD    A,#30H     ;D4数据值加上74LS138扫描值
        MOV    P1,A       ;显示D4
        CALL   DELAY      ;扫描延时
        MOV    A,32H
        ADD    A,#20H     ;D3数据值加上74LS138扫描值
        MOV    P1,A       ;显示D3
        CALL   DELAY      ;扫描延时
        MOV    A,31H
        ADD    A,#10H     ;D3数据值加上74LS138扫描值
        MOV    P1,A       ;显示D3
        CALL   DELAY      ;扫描延时
        MOV    A,30H
        ADD    A,#00H     ;D3数据值加上74LS138扫描值
        MOV    P1,A       ;显示D3
        CALL   DELAY      ;扫描延时  
        RET
DELAY:  MOV    R7,#06     ;显示器扫描时间
D1:     MOV    R6,#248
        DJNZ   R6,$
        DJNZ   R7,D1
        RET
        ORG    300H
TABLE:  DB     0CH,08H,04H,00H
        DB     0DH,09H,05H,01H
        DB     0EH,0AH,06H,02H
        DB     0FH,0BH,07H,03H
        END
        

⌨️ 快捷键说明

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