找回密码
 立即注册

QQ登录

只需一步,快速开始

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

这个汇编程序 为什么数码管只能显示0呢,键盘没有反应

[复制链接]
跳转到指定楼层
楼主
ID:729389 发表于 2020-4-15 11:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ORG 0000H
      LJMP MAIN
      ORG 0030H
MAIN: ACALL KEYSCAN
      MOV A,30H
   MOV DPTR,#TABLE
   MOVC A,@A+DPTR
   MOV P2,A
   ACALL DELAY
   SJMP MAIN
KEYSCAN: MOV P3,#0FH
         MOV A,P3
   ANL A,#0FH
   MOV R3,A
   MOV P3,#0F0H
   MOV A,P3
   ANL A,#0F0H
   ORL A,R3
   CJNE A,#0FFH,KEYPRO
   RET
KEYPRO: MOV R3,A
        MOV DPTR,#KEYVALUE
  MOV R4,#0FFH
KEY1: INC R4
      MOV A,R4
   MOV DPTR,#KEYVALUE
      MOVC A,@A+DPTR
      MOV 20H,R3
       CJNE A,20H,KEY1
    MOV A,R4
    MOV 30H,A
       RET
DELAY:MOV R5,#40H
      NEXT1:MOV R6,#80H
      NEXT2:MOV R7,#90H
      DJNZ R7,$
   DJNZ R1,NEXT2
   DJNZ R0,NEXT1
   RET
KEYVALUE:DB 0E7H,0D7H,0B7H,77H,0EBH,0DBH,0BBH,7BH
         DB 0EDH,0DDH,0BDH,7DH,0EEH,0DEH,0BEH,7EH
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH
      END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:267719 发表于 2020-4-16 10:17 | 只看该作者
当按键抖动的时候,你得到的P3口的值并不是你KEYVALUE中的任何值,导致死循环在KEY1:和CJNE A,20H,KEY1之间不会退出。所以只能显示开始的0.

KEY1: INC R4
      MOV A,R4
   MOV DPTR,#KEYVALUE
      MOVC A,@A+DPTR
      MOV 20H,R3
       CJNE A,20H,KEY2
    MOV A,R4
    MOV 30H,A
       RET
KEY2:CJNE R4,#10H,KEY1  ;如果16个都不是 则返回
    RET

另外,DELAY中的错误:DJNZ R1,NEXT2 应该为 DJNZ R6,NEXT2
DJNZ R0,NEXT1 应该为 DJNZ R5,NEXT1
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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