找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1783|回复: 3
打印 上一主题 下一主题
收起左侧

请各位大神帮分析一下程序的的各个意思功能

[复制链接]
跳转到指定楼层
楼主
ID:204609 发表于 2017-6-27 14:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
《单片机矩阵式键盘接口技术及编程》
键盘扫描程序:
从以上分析得到单片机键盘扫描程序的流程图如图2所示。程序如下
SCAN: MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT1
SJMP NEXT3
NEXT1: ACALL D20MS
MOV A,#0EFH
NEXT2: MOV R1,A
MOV P1,A
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KCODE;
MOV A,R1
SETB C
RLC A
JC NEXT2
NEXT3: MOV R0,#00H
RET
KCODE: MOV B,#0FBH
NEXT4: RRC A
INC B
JC NEXT4
MOV A,R1
SWAP A
NEXT5: RRC A
INC B
INC B
INC B
INC B
JC NEXT5
NEXT6: MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT6
MOV R0,#0FFH
RET
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2017-6-27 20:18 | 只看该作者
汇编看不懂
回复

使用道具 举报

板凳
ID:215287 发表于 2017-6-27 23:41 | 只看该作者
有图吗?图在哪
回复

使用道具 举报

地板
ID:155507 发表于 2017-6-28 18:51 | 只看该作者
  1. ;《单片机矩阵式键盘接口技术及编程》
  2. ;键盘扫描程序:
  3. ;从以上分析得到单片机键盘扫描程序的流程图如图2所示。程序如下

  4. SCAN:         MOV P1,#0FH ;一个端口(如P1口)就能组成4*4=16个按钮 P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线
  5.                 MOV A,P1 ; 检测当前是否有键被按下。检测的办法是P1.4-P1.7输出全“0”,读取P1.0-P1.3的状态,
  6.                 ANL A,#0FH ; 若P1.0-P1.3为全“1”,则无键闭合,不然有键闭合。
  7.                 CJNE A,#0FH,NEXT1 ; 有键闭合,转移去除键抖动延时
  8.                 SJMP NEXT3  ; 无键闭合,转移
  9. NEXT1:         ACALL D20MS ; 延时20毫秒去除键抖动
  10.                 MOV A,#0EFH ; 若有键被按下,应识别出是哪一个键闭合
  11. NEXT2:         MOV R1,A
  12.                 MOV P1,A
  13.                 MOV A,P1
  14.                 ANL A,#0FH ; A里面的值和0F按位进行与运算!结果保存到A
  15.                 CJNE A,#0FH,KCODE ; 意思就是 2个数相比较 不 相等 则跳转
  16.                 MOV A,R1
  17.                 SETB C ; 使CY=1 (进位标志置位指令) 把寄存器C置为1
  18.                 RLC A  ; 即将A的内容左移一位,将进位位C中的值移到累加器A的最低位,A的最高位移到C里。 #0DFH #0BFH #07FH
  19.                 JC NEXT2 ; 如果进位C位为1 ,转移
  20. NEXT3:         MOV R0,#00H ; 无效标志值
  21.                 RET         ; 返回
  22. KCODE:         MOV B,#0FBH ;,然后可采用计算法将闭合键的行值和列值转换成所定义的键值
  23. NEXT4:         RRC A ;指令就是带进位累加器循环右移 A的最低位移给C,并且C原来的值移给A的最高位。
  24.                 INC B
  25.                 JC NEXT4
  26.                 MOV A,R1
  27.                 SWAP A ;这条指令,将累加器A的高、低4位数据交换,也就是低4位数据进入高4位,高4位数据进入低4位。
  28. NEXT5:         RRC A
  29.                 INC B
  30.                 INC B
  31.                 INC B
  32.                 INC B
  33.                 JC NEXT5
  34. NEXT6:         MOV A,P1 ; 为了保证键每闭合一次CPU 仅作一次处理,必须却除键释放时的抖动。
  35.                 ANL A,#0FH
  36.                 CJNE A,#0FH,NEXT6
  37.                 MOV R0,#0FFH ;有效标志值
  38.                 RET         ;返回


复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表