打印

请教大家:我的4x3键盘老是不能正常工作

[复制链接]
1623|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ryandang|  楼主 | 2009-10-26 16:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
XDJM:
  我在Protues下学习单片机,编了一个小程序,但键盘老是不能正常工作:
  1)只有1/4/7/*这四个键有反应,但是键值不对,按键1/4/7/*,数码管确显示的3/6/9/0
  2)除了1/4/7/*四个键有反应外,其它键都没有反应。
  请大家帮我看看
  谢谢了!!
       ORG        0000H
       AJMP       MAIN
       ORG        0030H
MAIN:     LCALL      SCAN_KEY
             JZ            MAIN
             LCALL      DEL10MS
             LCALL      SCAN_KEY
             JZ           MAIN
             MOV        P3,#0CFH
             JNB        P3.0,L3
             JNB        P3.1,L6
             JNB        P3.2,L9
             MOV        P3,#0AFH
             JNB        P3.0,L2
             JNB        P3.1,L5
             JNB        P3.2,L8
             JNB        P3.3,L0
             MOV       P3,#07FH
             JNB        P3.0,L1
             JNB        P3.1,L4
             JNB        P3.2,L7
             AJMP      MAIN
L0:       MOV        A,#00H
          AJMP       GOON
L1:       MOV        A,#01H
          AJMP       GOON
L2:       MOV        A,#02H
          AJMP       GOON
L3:       MOV        A,#03H
          AJMP       GOON
L4:       MOV        A,#04H
          AJMP       GOON
L5:       MOV        A,#05H
          AJMP       GOON
L6:       MOV        A,#06H
          AJMP       GOON
L7:       MOV        A,#07H
          AJMP       GOON
L8:       MOV        A,#08H
          AJMP       GOON
L9:       MOV        A,#09H
          AJMP       GOON
GOON:     MOV        30H,A
          MOV        DPTR,#DIS_TAB
       MOVC       A,@A+DPTR
       MOV        P2,A
       MOV        A,30H
       MOV        DPTR,#TAB
       MOVC       A,@A+DPTR
       MOV        DPTR,#DIS_TAB
       PUSH       ACC
       ANL        A,#0FH
       MOVC       A,@A+DPTR
          MOV        P1,A
       POP        ACC
       SWAP       A
       ANL        A,#0FH
       MOVC       A,@A+DPTR
       MOV        P0,A
       LCALL      DEL10MS
       LJMP       MAIN
       ORG        0200H
SCAN_KEY: MOV        P3,#07H
          MOV        A,P3
       ORL        A,#0F0H
       CPL        A
       RET
       ORG        0250H
DEL10MS:  MOV        R5,#0BH
F1:       MOV        R7,#02H
F2:       MOV        R6,#0FFH
F3:       DJNZ       R6,F3
          DJNZ       R7,F2
       DJNZ       R5,F1
       RET
       ORG        0300H
TAB:      DB         00H,01H,04H,09H,016H
          DB         025H,036H,049H,064H,081H
       ORG        0350H
DIS_TAB:  DB         0C0H,0F9H,0A4H,0B0H
          DB         099H,092H,082H,0F8H
       DB         080H,090H,088H,083H
       DB         0C6H,0A1H,086H,08EH
       END

Protues schematic:

protues schematic.JPG (281.51 KB )

protues schematic.JPG

相关帖子

沙发
hans00911| | 2009-10-26 17:08 | 只看该作者
加入单片机、ARM技术交流群:94269578,共同交流提高

使用特权

评论回复
板凳
hans00911| | 2009-10-26 17:10 | 只看该作者
不过说实在的,小弟你用汇编看起来太费劲了

使用特权

评论回复
地板
草履虫| | 2009-10-26 21:21 | 只看该作者
先不说程序,就我看来,你的原理图好像画的都有问题。
从左边数,第一个LED的电路有问题。

使用特权

评论回复
5
ryandang|  楼主 | 2009-10-28 21:24 | 只看该作者
呵呵,大哥见谅
我是初学者,先准备大概学一下汇编
然后在学C
以前在学校的时候学过Turbo C

使用特权

评论回复
6
awmc_m| | 2009-10-28 22:05 | 只看该作者
扫描键盘,输入的pin都接上上拉电阻。
数码管要接限流电阻,p0口要接上拉电阻。
程序没有认真看,但是以下程序似乎有点问题
SCAN_KEY: MOV        P3,#07H
          MOV        A,P3
       ORL        A,#0F0H
       CPL        A

电路图中p3.0-p3.3是行,p3.5-p3.7是列,应该初始化mov    p3,#0fh才不会漏掉最下面一行键。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝