单片机汇编吧 关注:121贴子:364
  • 7回复贴,共1

请大神赐教啊

只看楼主收藏回复

ORG 0000H
LJMP START
ORG 0030H
START: MOV A , #0FEH
MOV R3, #7
LOOP1: MOV P2 , A
LCALL YS50MS
RL A
DJNZ R3,LOOP1
LOOP2: MOV P2,A
LCALL YS50MS
RR A
DJNZ R3, LOOP2
LJMP LOOP1
YS50MS: MOV R7 , #200
YS1: MOV R6 , #123
NOP
YS2: DJNZ R6 , $
DJNZ R7 , YS1
RET
END
我本来是想让它先向右移动,移动完之后再向左移动,这样循环下去。但是最终的现象是先往右移动一次,然后再向左移动很多次,再然后向右移动很多次(有点难数,没有去数到底多少次),就这样重复进行了。


IP属地:湖南来自Android客户端1楼2015-10-07 10:58回复
    R3往右移动要重新赋值等于7


    IP属地:越南来自iPhone客户端2楼2015-10-07 19:40
    收起回复
      你在有右移完跳到Loop1也错了,应该是Loop1的上一行


      IP属地:越南来自iPhone客户端3楼2015-10-08 06:59
      回复
        ORG 0000H
        LJMP START
        ORG 0030H
        START: MOV A , #0FEH
        MOV R3, #7
        LOOP1: MOV P2 , A
        LCALL YS50MS
        RL A
        DJNZ R3,LOOP1
        MOV R3, #7
        LOOP2: MOV P2,A
        LCALL YS50MS
        RR A
        DJNZ R3, LOOP2
        MOV R3, #7
        LJMP LOOP1
        YS50MS: MOV R7 , #200
        YS1: MOV R6 , #123
        NOP
        YS2: DJNZ R6 , $
        DJNZ R7 , YS1
        RET
        END


        IP属地:越南4楼2015-10-08 17:11
        回复
          可以了吧??


          IP属地:越南来自iPhone客户端5楼2015-10-09 09:11
          收起回复
            我说呢 你的R3没有重新赋值。在loop1循环结束后R3已经为0了


            IP属地:江苏来自iPhone客户端6楼2015-10-27 14:29
            回复