汇编程序中函数返回跑飞问题
代码如下:
ORG 0000H
LJMP Start
Start: ACALL Init
Main: ACALL TlTr
LJMP Main
TlTr: MOV 1001H,#03FH ;左移初始值
MOV 1002H,#0FCH ;右移初始值
ACALL TLeft
ACALL TRight
RET //跑飞位置1
TLeft: MOV 1000H,#006H ;循环次数
MOV A,1001H
  USH ACC
LLoop: SETB  1.2
  OP ACC
MOV   0,A
CLR   1.2
RR A
  USH ACC
ACALL Delay
DEC 1000H
MOV A,1000H
JNZ LLoop
RET //跑飞位置1
TRight: MOV 1000H,#006H ;循环次数
MOV A,1002H
  USH ACC
RLoop: SETB  1.2
  OP ACC
MOV   0,A
CLR P1.2
RL A
PUSH ACC
ACALL Delay
DEC 1000H
MOV A,1000H
JNZ RLoop
RET //跑飞位置1
;程序初始化函数
Init: SETB P1.1
MOV P0,#0FFH
CLR P1.1
SETB P1.3
MOV P0,#00H
CLR P1.3
RET
;延时函数
Delay: MOV R5,#0EAH
MOV R6,#060H
DLoop: SETB C
MOV A,R6
SUBB A,#00H
MOV A,R5
SUBB A,#00H
JC DEnd
MOV A,R6
DEC R6
JNZ DLoop
DEC R5
LJMP DLoop
DEnd: RET
END |