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

📄 键盘扫描程序.asm

📁 自己用汇编编写的键盘的扫描程序 希望和大家共享!
💻 ASM
字号:
KEY1:ACALL  KS1              ;掉用判断有无键按下子程序
      JNZ    LK1             ;有键按下时,(A)=!,转消抖延时
      AJMP   KEY1            ;无键按下返回
LK1: ACALL  T12MS           ;延时12秒子程序
      ACALL  KS1             ;查有无键按下,若有则为键确认按下
      JNZ    LK2              ; 键按下 ,(A)!=0,转逐列扫描
      AJMP   KEY1            不是键按下就返回   
LK2: MOV    R2,#0FEH       ;首列扫描字入R2
      MOV    R1,#00H        ;首列号入R1
T12MS:MOV   R7,#18H        ;延时12ms子程序  
LK4: MOV   DPTR,#7F01H     ;列扫描字送8155PA口
      MOV   A,R2            ;第一次列扫描
      MOVX  @DPTR,A          ;使第0列线为0
      INC   DPTR             ;指向8155PC口
      INC   DPTR
      MOVX  A,@DPTR         ;8155PC口读入行状态
      JB    ACC.0,LONE      ;第0行无键按下,转查第1行,ACC.0=0时为 有键按下
      MOV   A,#00H          ;第0 行有键按下,该行首键号#00H送A
      AJMP  LKP              ;转求键号
LONE:JB    ACC.1,LTWO      ;第1行无键按下,转查第2行
      MOV   A,#08H          ;该行有键按下 ,该行首键号#08H送A
      AJMP  LKP      
LTWO:JB    ACC.2,LTHR      ;第2行无键按下,转查第3行
      MOV   A,#10H          ;若该行有键按下,该行首键号#10H送A
      AJMP  LKP
LTHR:JB    ACC.3,NEXT      ;若第3行无键按下,改查下一列
      MOV   A,#18H          ;若该行有键按下,该行首键号#18H送A
LK3:ACALL  KS1              ;等待键释放
     JNZ    LK3              ;若未释放,等待
     POP    ACC              ;键释放,缄好送A
     RET                     ;键扫描结束,出口状态:(A)=键号
NEXT:INC   R4               指向下一列,列号加1
     MOV    A;R2            ;判断8列扫描完没有
     JNB    ACC,KND         ;8列扫描完,返回
     RL     A                ;扫描字左移一位,转变为下一列扫描字
     MOV    R2,A            ;扫描字入R2
AJMP:LK4                    ;转向下一列扫描
KND:AJMP   KEY1
LKP: ADD   A,R4            ;键号=行首键号+列号
      PUSH  ACC              ;键号进栈保护
                      
KS1: MOV    DPTR,#7F01H    ;指向PA口
      MOV    A,#00H         ;全扫描字#00H=00000000B
      MOVX  @DPTR,A          ;全扫描字送PA口
      INC   DPTR              指向PC口
      INC   DPTR
      MOVX  A,@DPTR         ;读入PC口行状态
      CPL   A                 ;变正逻辑,以高电平表示有键按下
      ANL   A,#0FH         ;屏蔽高四位
      RET                     ;出口状态:(A)!= 0时有键按下  
           

⌨️ 快捷键说明

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