求助!!


我是新手,看书时调下面这段程序:一个按键中断程序,怎么看感觉程序没错啊,可结果总是出不来,郁闷死我呢!
在一单片机群里咋都没人理我,只好来论坛里求救各位大哥大姐呢,小弟万分感激!
ORG  0000H
AJMP MAIN
ORG  0003H
AJMP KEY
ORG  0030H
MAIN:
      MOV  SP,#70H
      MOV  TCON,#00H
      MOV  IE,#81H
      MOV  IP,#01H
HERE: AJMP HERE
KEY:  MOV  A,P2
      ANL  A,0FH
      MOV  20H,A
      ACALL DELAY
      MOV  A,P2
      CJNE A,20H,KEYE
      JNB  00H,KEY0
      JNB  01H,KEY1
      JNB  02H,KEY2
      JNB  03H,KEY3
KEYE: RETI
KEY0:MOV  60H,#00H
     ACALL LED
     RETI
KEY1:MOV  60H,#01H
     ACALL LED
     RETI
KEY2:MOV  60H,#02H
     ACALL LED
     RETI
KEY3:MOV  60H,#03H
     ACALL LED
     RETI
LED: MOV A,60H        ;延时大于10ms
     MOV DPTR,#SCAN
     MOVC A,@A+DPTR
     MOV P0,A
     RET
DELAY:
      MOV R2,#20
LOOP1:MOV R1,#250
LOOP2JNZ R1,LOOP2
      DJNZ R2,LOOP1
      RET
SCANB 3FH,06H,5BH,4FH;显示0,1,2,3
END


截图00.jpg


我也来说两句 查看全部回复

最新回复

  • zhangxf (2008-9-30 15:40:25)

    把ANL A,0FH换成  ANL  A,#0FH试试。
  • meijun0202 (2008-9-30 17:07:50)

    我在中断子程序段里加了CLR  P1.0
    显示进入中断了的
    可是P0口还是一点输出都没有
  • zhangxf (2008-10-01 08:34:50)

    LOOP2JNZ R1,LOOP2 这条指令格式不对......................
  • budhy (2008-10-01 08:54:08)

    QUOTE:

    原帖由 zhangxf 于 2008-10-1 08:34 发表
    LOOP2JNZ R1,LOOP2 这条指令格式不对......................
    楼主写对了,不过显示不正确。

    CODE:

    LOOP2:  DJNZ R1,LOOP2
  • budhy (2008-10-01 10:23:00)

    QUOTE:

    原帖由 meijun0202 于 2008-9-30 14:21 发表
    我是新手,看书时调下面这段程序:一个按键中断程序,怎么看感觉程序没错啊,可结果总是出不来,郁闷死我呢!
    在一单片机群里咋都没人理我,只好来论坛里求救各位大哥大姐呢,小弟万分感激!
    ...
    给你查过了,致命的错误在于:

    CODE:

          ANL  A,#0FH
          MOV  20H,A
          ACALL DELAY
          MOV  A,P2
          CJNE A,20H,KEYE
    第一次取 P2 时你先 ANL  A,#0FH,第二次取 P2 就马上       CJNE A,20H,KEYE , 结果每次都传跳到 KEYE 去。

    我也整顿一下你的程序,如下:

    CODE:

          ORG   0000H
          AJMP  MAIN

          ORG   0003H
          AJMP  KEY

          ORG   0030H
    MAIN:
          SETB  IT0
          SETB  EX0
          SETB  EA
    HERE:
          AJMP  HERE

    KEY:
          CPL   P1.0
          MOV   A,P2
          JNB   ACC.0,KEY0
          JNB   ACC.1,KEY1
          JNB   ACC.2,KEY2
          JNB   ACC.3,KEY3
    KEYE:
          RETI

    KEY0:
          MOV   A,#00H
          SJMP  LED

    KEY1:
          MOV   A,#01H
          SJMP  LED

    KEY2:
          MOV   A,#02H
          SJMP  LED

    KEY3:
          MOV   A,#03H

    LED:
          MOV   DPTR,#SCAN
          MOVC  A,@A+DPTR
          MOV   P0,A
          RETI

    SCAN:
          DB    3FH,06H,5BH,4FH   ;显示0,1,2,3
          END

    switches.rar
    (2008-10-01 10:23:00, Size: 16 KB, Downloads: 3)

  • meijun0202 (2008-10-01 12:16:42)

    大哥,太感谢你呢
    怪我不细心真太感谢你呢
    这感谢之情如滔糕流水,绵绵不绝!
    呵呵
    真非常感谢
    还上面的各位大哥,非常感谢你们的帮助
    以后多细心些!
  • budhy (2008-10-01 12:27:04)

    QUOTE:

    原帖由 meijun0202 于 2008-10-1 12:16 发表
    大哥,太感谢你呢
    怪我不细心真太感谢你呢
    这感谢之情如滔糕流水,绵绵不绝!
    呵呵
    真非常感谢
    还上面的各位大哥,非常感谢你们的帮助
    以后多细心些! ...
    在 SWITCHES.RAR 中,有完整的仿真图还有程序,你下载看看吧。