注册 登录
编程论坛 单片机编程

单片机汇编语言的跳转

爱闹的娃 发布于 2011-12-27 22:29, 681 次点击
程序代码:
     ORG 8100H
     AJMP MAIN
     ORG 8003H
     AJMP INT
MAIN: SETB EA
      SETB EX0
      CLR IT0
LOOP: MOV R0,#0F3H
      MOV P1,R0
      MOV R7,#1EH
LOOP1: LCALL DELAY
       DJNZ R7,LOOP1
       MOV R0,#0F5H
       MOV P1,R0
       MOV R7,#05H
LOOP2: LCALL DELAY
       DJNZ R7,LOOP2
       MOV R0,#0DEH
       MOV P1,R0
       MOV R7,#1EH
LOOP3: LCALL DELAY
       DJNZ R7,LOOP3
       MOV R0,#0FEH
       MOV P1,R0
       MOV R7,#05H
LOOP4: LCALL DELAY
       DJNZ R7,LOOP4
       AJMP MAIN
      
DELAY: MOV R5,#0
DEL1:  MOV R6,#0
DEL2:  DJNZ R6,DEL2
       DJNZ R5,DEL1
       RET

INT:   MOV P1,#0F6H
       MOV R7,#0AH
T11:   ACALL DELAY
       DJNZ  R7,T11
       MOV P1,R0
       REIT:
     END
怎么 这跳转不能实现呢?
1 回复
#2
lcawen2012-04-10 13:58
DELAY: MOV R5,#0
DEL1:  MOV R6,#0
DEL2:  DJNZ R6,DEL2
       DJNZ R5,DEL1
       RET
导致陷入无限循环了
DELAY: MOV R5,#0
DEL1:  MOV R6,#0
是不能赋0的,赋一个确定的值DJNZ是先减,在判断是否为0,不为0跳转,楼主的汇编代码是不可能为0的,直接死了
1