单片机入门汇编程序 程序12-2:扫描键盘

上传人:飞*** 文档编号:43730533 上传时间:2018-06-07 格式:DOC 页数:2 大小:39KB
返回 下载 相关 举报
单片机入门汇编程序  程序12-2:扫描键盘_第1页
第1页 / 共2页
单片机入门汇编程序  程序12-2:扫描键盘_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《单片机入门汇编程序 程序12-2:扫描键盘》由会员分享,可在线阅读,更多相关《单片机入门汇编程序 程序12-2:扫描键盘(2页珍藏版)》请在金锄头文库上搜索。

1、 程序程序 12-2:扫描键盘(对应图:扫描键盘(对应图 12-7) ORG00H; 起始地址 00HK1:MOVP2, #0F0H; 设置 P2.4P2.7 为输入端口MOVA, P2; 从 P2 读取所有列的值ANLA, #11110000B; 屏蔽掉无用的低 4 位,非列值CJNEA, #11110000B, K1; 查询直到所有的按钮释放K2:CALLDELAY; 调用 20ms 延时子程序(省略)MOVA, P2; 从 P2 读取状态,看有没有按钮被按下ANLA, #11110000B; 屏蔽掉无用的低 4 位,非列值CJNEA, #11110000B, OVER; 如果有按钮按下,

2、跳到 OVERJMPK2; 循环检测 OVER:CALLDELAY; 延时 20ms 防止抖动MOVA, P2; 从 P2 读取状态ANLA, #11110000B; 屏蔽掉无用的位CJNEA, #11110000B, OVER1; 如果有按钮按下,找到行 JMPK2; 如果没有按钮按下,循环扫描OVER1:MOVP2, #11111110B; 第 0 行输出低电平MOVA, P2; 读所有的列ANLA, #11110000B; 屏蔽掉无用的位CJNEA, #11110000B, ROW_0; 如果第 0 行有按钮按下,找列MOVP2, #11111101B; 第 1 行输出低电平MOVA,

3、P2; 读所有的列ANLA, #11110000B; 屏蔽掉无用的位CJNEA, #11110000B, ROW_1; 如果第 1 行有按钮按下,找列MOVP2, #11111011B; 第 2 行输出低电平MOVA, P2; 读所有的列ANLA, #11110000B; 屏蔽掉无用的位CJNEA, #11110000B, ROW_2; 如果第 2 行有按钮按下,找列MOVP2, #11110111B; 第 3 行输出低电平MOVA, P2; 读所有的列ANLA, #11110000B; 屏蔽掉无用的位CJNEA, #11110000B, ROW_3; 如果第 3 行有按钮按下,找列LJMPK

4、2; 如果没有,则循环ROW_0:MOVDPTR, #KCODE0; 设置 DPTR=第 0 行的起始地址SJMPFIND; 找列ROW_1:MOVDPTR, #KCODE1; 设置 DPTR=第 1 行的起始地址SJMPFIND; 找列ROW_2:MOVDPTR, #KCODE2; 设置 DPTR=第 2 行的起始地址SJMPFIND; 找列ROW_3:MOVDPTR, #KCODE3; 设置 DPTR=第 3 行的起始地址FIND:SWAPAFIND1:RRCA; 看看是否进位 C 为 0JNCMATCH; 如果是 0,就跳到 MATCH 找键值INCDPTR; DPTR 加 1SJMPFIND1; 循环查找MATCH:CLRA; A=0MOVCA, A+DPTR; 用 DPTR 在数据表中找到键值装入 AMOVP1, A; 显示键值LJMPK1; 循环DELAY:; 延时 20ms 程序,省略RET; 键值保存在以下的数据表中,可根据系统实际需要进行修改ORG300H; 数据表起始地址KCODE0: DB1,2,3,T; 第 0 行KCODE1: DB4,5,6,U; 第 1 行KCODE2: DB7,8,9,D; 第 2 行KCODE3: DB*,0,#,C; 第 3 行END

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号