收藏 分享(赏)

键盘扫描子程序.doc

上传人:kpmy5893 文档编号:7430153 上传时间:2019-05-17 格式:DOC 页数:4 大小:121KB
下载 相关 举报
键盘扫描子程序.doc_第1页
第1页 / 共4页
键盘扫描子程序.doc_第2页
第2页 / 共4页
键盘扫描子程序.doc_第3页
第3页 / 共4页
键盘扫描子程序.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、键盘扫描P 2 . 0P 2 . 1P 2 . 2P 2 . 3P 2 . 4P 2 . 5P 2 . 6P 2 . 7行列P 2 . 0P 2 . 1P 2 . 2P 2 . 3P 2 . 5P 2 . 6P 2 . 7行列图 a 4*4 键盘 图 b 4*3 键盘扫描步骤:1 P2.3=0 行扫描初值;2 P2 左移检测列;3 P2 右移扫描行;4 计数指针到表中取码(读入键盘值由表中的数据一一对应) 。;* 键盘扫描子程序 SCANKEY *; 4*4 键盘扫描子程序; 行接 P2.0-P2.3,列接 P2.4-P2.7; 调用该子程序扫描一遍键盘; 键盘如有按键,则标志位 FLAG_K

2、EY=1; 输入键盘码放入键盘存储器 KEYBUFF; 面板上键盘为 1 2 3 C; 4 5 6 D7 8 9 E; A 0 B F;*SCANKEY: MOV R3,#0F7H; 扫描初值(P2.3=0)MOV R2,#00H; R2 为取键盘码指针L2: MOV A,R3; 开始扫描MOV P2,A; 扫描值输出至 P2 口MOV A,P2; 读入 P2 值,判断是否有键按下MOV R4,A; 存入 P2 值,以判断是否放开按键SETB C; 后用带循环移位 MOV R5,#04H; 先扫描 4 列(如为 4*3 键盘此处 MOV R5,#03H)L3: RLC A; 先从 P2.3 相

3、接这一行 P2.4-P2.7 哪个键按下了JNC KEYIN ; C=0 则有键按下,跳至 KEYININC R2; C=1 表明没有键按下,取码指针加 1DJNZ R5,L3; 3 列扫描完毕?MOV A,R3; 扫描值载入SETB CRRC A; 扫描下一行MOV R3,A; 存回扫描寄存器JC L2; 4 行扫完? 没有则回 L2 继续扫描RET; 一遍扫描完返回;-KEYIN:MOV R7,#60; 30MS 消抖动(晶振 12MHZ)D2: MOV R6,#248DJNZ R6,$DJNZ R7,D2D3: MOV A,P2; 读入 P2 值,判断换键是否松开XRL A,R4; 与上

4、次值 XX 比较JZ D3; ACC=0 表示未放MOV A,R2 ; 按钮已松开,取码指针载入MOV DPTR,#KEYSCAN_TABMOVC A,A+DPTRSETB FLAG_KEY; 键盘扫描一次有输入标志位置位MOV KEYBUFF, A ;键盘码放入键盘存储器 KEYBUFFRET;=; 键盘扫描码KEYSCAN_TAB:DB 01H,02H,03H,0CH DB 04H,05H,06H,0DHDB 07H,08H,09H,0DHDB 0AH,00H,0BH,0FH;-;*键盘扫描结束 *;* 键盘扫描子程序 SCANKEY *; 4*3 键盘扫描子程序; 行接 P2.0-P2.

5、3,列接 P2.4-P2.6; 调用该子程序扫描一遍键盘; 键盘如有按键,则标志位 FLAG_KEY=1; 输入键盘码放入键盘存储器 KEYBUFF; 面板上键盘为 1 2 3 4; 5 6 7 8; 9 0 A B;*SCANKEY: MOV R3,#0F7H; 扫描初值(P2.3=0)MOV R2,#00H; R2 为取键盘码指针L2: MOV A,R3; 开始扫描MOV P2,A; 扫描值输出至 P2 口MOV A,P2; 读入 P2 值,判断是否有键按下MOV R4,A; 存入 P2 值,以判断是否放开按键SETB CMOV R5,#03H; 先扫描 3 列RLC A ; 由于 P2.

6、7 没有接,故先左移一位,让 P2.6 位进入 CyL3: RLC A; 先从 P2.3 相接这一行 P2.4-P2.6 哪个键按下了JNC KEYIN ; C=0 则有键按下,跳至 KEYININC R2; C=1 表明没有键按下,取码指针加 1DJNZ R5,L3; 3 列扫描完毕?MOV A,R3; 扫描值载入SETB CRRC A; 扫描下一行MOV R3,A; 存回扫描寄存器JC L2; 4 行扫完? 没有则回 L2 继续扫描RET; 一遍扫描完返回;-KEYIN:MOV R7,#60; 30MS 消抖动(晶振 12MHZ)D2: MOV R6,#248DJNZ R6,$DJNZ R7,D2D3: MOV A,P2; 读入 P2 值,判断换键是否松开XRL A,R4; 与上次值 XX 比较JZ D3; ACC=0 表示未放MOV A,R2 ; 按钮已松开,取码指针载入MOV DPTR,#KEYSCAN_TABMOVC A,A+DPTRSETB FLAG_KEY; 键盘扫描一次有输入标志位置位MOV KEYBUFF, A ;键盘码放入键盘存储器 KEYBUFFRET;=; 键盘扫描码KEYSCAN_TAB:DB 04H,08H,0BH ;A,B 代表*,#DB 03H,07H,0AHDB 02H,06H,00HDB 01H,05H,09H;-;*键盘扫描结束 *

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报