返回首页

2×2行列式键盘电路设计并编写键盘扫描子程序实例 51单片机汇编

时间:2013-03-06 18:26来源:未知 作者:牛牛 点击:
( 1 ) 2 2 行列式键盘电路如图所示 / / / / / / / / 图片1 ( 2 )键盘扫描子程序: KEY1 : ACALL KS1 ; 调用判断有无键按下子程序 JNZ LK1 ;有键按下,转 LK1 AJMP KEY1 ; 无键按下,返回 LK1: ACALL T12MS ;调延时 12ms 子程序 ACALL KS1 ;查有无键
12×2行列式键盘电路如图所示
/
/
/
/
/
/
/
/
单片机
图片1

  单片机

单片机

内容来自单片机之家www.dpj100.com

2)键盘扫描子程序: 单片机

KEY1  ACALL    KS1      ;调用判断有无键按下子程序

单片机

         JNZ       LK1      ;有键按下,转LK1 单片机

         AJMP     KEY1     ;无键按下,返回 内容来自单片机之家www.dpj100.com

LK1:     ACALL   T12MS    ;调延时12ms子程序 单片机

         ACALL   KS1       ;查有无键按下

单片机

         JNZ      LK2       ;若有,则为键确实按下,转逐列扫描 单片机

         AJMP    KEY1      ;无键按下,返回 内容来自单片机之家www.dpj100.com

LK2:       MOV    R4,#00H    ;首列号    R4

单片机

           MOV    R2,#FEH    ;首列扫描字    R2

单片机

LK4:       MOV    A,R2       ;列扫描字    P1

单片机

           MOV    P1,A        ;使第一列线为0 单片机

MOV   A,P1       ;读入行状态

内容来自单片机之家www.dpj100.com

           JB       ACC.0,LONE;第0行无键按下,转查第一行 单片机

           MOV    A,#00H   ;第0行有键按下,该行首键号#00H    A

内容来自单片机之家www.dpj100.com

           AJMP    LKP        ;转求键号 单片机

LONE:     JB       ACC.1,NEXT ;第一行无键按下,转查下一列

单片机

          MOV    A,#02       ;第一行有键按下,该行首键号#02   A

内容来自单片机之家www.dpj100.com

LKP:      ADD    A,R4        ;键号=首行号+列号

单片机

          PUSH    ACC        ;键号进栈保护 内容来自单片机之家www.dpj100.com

LK3:      ACALL   KS1        ;等待键释放 内容来自单片机之家www.dpj100.com

          JNZ      LK3        ;未释放,等待

单片机

          POP      AC         ;键释放,键号    A 单片机

          RET                  ;键扫描结束 单片机

NEXT:    INC      R4          ;列号加1,指向下一列 内容来自单片机之家www.dpj100.com

          MOV     A,R2        ;列扫描字    A 单片机

          JNB      ACC.1,KND  ;判断2列全扫描完?扫描完,转KND 内容来自单片机之家www.dpj100.com

          RL       A           ;没扫描完,扫描字左移一位,形成下一列扫描字 单片机

          MOV     R2,A        ;扫描字     R2

单片机

          AJMP     LK4        ;扫描下一列

内容来自单片机之家www.dpj100.com

          AJMP     KEY1       ;全扫描完,返回

内容来自单片机之家www.dpj100.com

          MOV     A,#FCH      ;全扫描字11111100B     A

单片机

          MOV     P1,A         ;全扫描字    所有行 单片机

          MOV     A,P1         ;读取列值 内容来自单片机之家www.dpj100.com

          CPL      A            ;取正逻辑,高电平表示有键按下 内容来自单片机之家www.dpj100.com

          ANL      A,#0C0H     ;屏蔽低6位,取高2

单片机

          RET                   ;出口状态(A!=0,有键按下 单片机

顶一下
(19)
86.4%
踩一下
(3)
13.6%
------分隔线----------------------------
推荐内容