51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机源码 > 详细内容
各种各样的矩阵键盘扫描程序集
发布时间:2009/7/7  阅读次数:4631  字体大小: 【】 【】【

NOKEY2:
                       MOV P3,#0FFH
                       CLR P3.6
                       MOV A,P3
                       ANL A,#0FH
                       XRL A,#0FH
                       JZ NOKEY3
                       LCALL DELY10MS
                       MOV A,P3
                       ANL A,#0FH
                       XRL A,#0FH
                       JZ NOKEY3
                       MOV A,P3
                       ANL A,#0FH
                       CJNE A,#0EH,NK9
                       MOV KEYBUF,#8
                       LJMP DK3
NK9:               CJNE A,#0DH,NK10
                       MOV KEYBUF,#9
                       LJMP DK3
NK10:             CJNE A,#0BH,NK11
                       MOV KEYBUF,#10
                       LJMP DK3
NK11:             CJNE A,#07H,NK12
                       MOV KEYBUF,#11
                       LJMP DK3
NK12:             NOP
DK3:
                       MOV A,KEYBUF
                       MOV DPTR,#TABLE
                       MOVC A,@A+DPTR
                       MOV P0,A

DK3A:             MOV A,P3
                       ANL A,#0FH
                       XRL A,#0FH
                       JNZ DK3A
NOKEY3:
                       MOV P3,#0FFH
                       CLR P3.7
                       MOV A,P3
                       ANL A,#0FH
                       XRL A,#0FH
                       JZ NOKEY4
                       LCALL DELY10MS
                       MOV A,P3
                       ANL A,#0FH
                       XRL A,#0FH
                       JZ NOKEY4
                       MOV A,P3
                       ANL A,#0FH
                       CJNE A,#0EH,NK13
                       MOV KEYBUF,#12
                       LJMP DK4
NK13:             CJNE A,#0DH,NK14
                       MOV KEYBUF,#13
                       LJMP DK4
NK14:             CJNE A,#0BH,NK15
                       MOV KEYBUF,#14
                       LJMP DK4
NK15:             CJNE A,#07H,NK16
                       MOV KEYBUF,#15
                       LJMP DK4
NK16:             NOP
DK4:      
                       MOV A,KEYBUF
                       MOV DPTR,#TABLE
                       MOVC A,@A+DPTR
                       MOV P0,A

DK4A:             MOV A,P3
                       ANL A,#0FH
                       XRL A,#0FH
                       JNZ DK4A
NOKEY4:
                       LJMP WAIT
DELY10MS:
                       MOV R6,#10
D1:                 MOV R7,#248
                       DJNZ R7,$
                       DJNZ R6,D1
                       RET
TABLE:           DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
                       DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
                       END

MOV R3,#F7H                       ; 扫描初始值
  MOV R1,#00H                       ; 取码指标
SCAN1:  MOV A,R3                             ; 开始扫描
  MOV P1,A                             ; 将扫描值输出到 P1
  MOV A,P1                             ; 读入 P1 判断是否有按下
  MOV R4,A                             ; 存到 R4, 判断是否放开
  SETB C                                 ; C=1
  MOV R5,#04H                       ; 扫描 P14~P17
L1:  RLC A                                   ; 将按键值左移一位元
  JNC KEYIN                           ; 若 C=0, 有按, 执行 KEYIN
  INC R1                                 ; 将指标值加 1, 继续扫描下一行
  DJNZ R5,L1 &

nbsp;                 ; 扫描四行

  MOV A,R3                             ; 载入扫描值
  SETB C                                 ; C=1
  RRC A                                   ; 扫描下一列(P13~P10)
  MOV R3,A                             ; 存回扫描值
  JC SCAN1                             ; C=1, 尚未完成扫描
  RET                                       ; 结束键盘扫描, 回到 Main Program

KEYIN:  MOV R7,#10                         ; 消除弹跳
D2:  MOV R6,#248
  DJNZ R6,$
  DJNZ R7,D2
D3:  MOV A,P1                             ; 读入 P1
  XRL A,R4
  JZ D3
  MOV A,R1
  MOV DPTR,#TABLE
  MOVC A,@A+DPTR
Table:
   db   0c0h,0f9h,0a4h,0b0h,099h   ;0-4
   db   092h,082h,0f8h,080h,090h   ;5-9
   db   088h,083h,0a7h,0a1h,086h   ;A-E
   db   08eh                  ;F
end

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号