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

📄 矩阵键盘控制.txt

📁 单片机的源程序
💻 TXT
字号:
org  0000h 

ajmp main 

org  0030h 

main: 

     mov  dptr,#tab     ;将表头放入DPTR 

     lcall    key      ;调用键盘扫描程序 

     movc a,@a+dptr    ;查表后将键值送入ACC 

     mov  p0,a           ;将Acc值送入P0口 

     CLR P2.1            ;开显示 

     ljmp main         ;返回反复循环显示 

KEY: LCALL KS        ;调用检测按键子程序 

     JNZ K1                 ;有键按下继续 

     LCALL DELAY2      ;无键按调用延时去抖 

     AJMP KEY          ;返回继续检测按键 

K1:  LCALL DELAY2 

     LCALL DELAY2     ;有键按下延时去抖动 

     LCALL KS          ;再调用检测按键程序 

     JNZ K2          ;确认有按下进行下一步 

     AJMP KEY         ;无键按下返回继续检测 

K2:  MOV R2,#0EFH      ;将扫描值送入 R2暂存 

MOV R4,#00H   ;将第一列值送入R4暂存 

K3: MOV P1,R2     ;将R2的值送入P1口 

L6:  JB P1.0,L1        ;P1.0等于1跳转到L1 

     MOV A,#00H       ;将第一行值送入ACC 

     AJMP LK         ;跳转到键值处理程序 

L1:  JB P1.1,L2       ;P1.1等于1跳转到L2 

     MOV A,#04H   ;将第二行的行值送入ACC 

     AJMP LK  ;跳转到键值理程序进行键值处理 

L2: JB P1.2,L3      ;P1.2等于1跳转到L3 

     MOV A,#08H     ;将第三行的行值送入ACC 

     AJMP LK          ;跳转到键值处理程序

L3:  JB P1.3,NEXT   ;P1.3等于1跳转到NEXT处 

     MOV A,#0cH       ;将第四行的行值送入ACC 

LK:  ADD A,R4     ;行值与列值相加后的键值送入A 

     PUSH ACC         ;将A中的值送入堆栈暂存 

K4:  LCALL DELAY2        ;调用延时去抖动程序 

     LCALL KS          ;调用按键检测程序 

     JNZ K4        ;按键没有松开继续返回检测 

     POP ACC      ;将堆栈的值送入ACC 

     RET 

NEXT: 

    INC  R4           ;将列值加一 

    MOV A,R2          ;将R2的值送入A 

    JNB ACC.7,KEY  ;扫描完至KEY处进行下一扫描 

    RL A    ;扫描未完将A中的值右移一位进行下一列的扫描 

    MOV R2,A      ;将ACC的值送入R2暂存 

    AJMP K3       ;跳转到K3继续 

KS:  MOV P1,#0FH   ;将P1口高四位置0低四位值1 

     MOV A,P1     ;读P1口 

     XRL A,#0FH    ;将A中的值与A中的值相异或 

     RET          ;子程序返回 

DELAY2:         ;40ms延时去抖动子程序 

      MOV R5,#08H 

L7:  MOV R6,#0FAH 

L8:  DJNZ R6,L8 

     DJNZ R5,L7 

     RET 

tab: 

db 0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0c0h,88h,83h,0c6h,0a1h,86h,8eh

end 

⌨️ 快捷键说明

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