控制电机转向时,转45°可以,为什么加恢复原状时出现先转90°,再向回转45°

2019-03-24 19:41发布

原程序1:(51单片机P0口输出)
               OUT   EQU   P0
               ORG   0000H
LOOP:    JNB   P1.3,LEFT
               JMP   LOOP
LEFT:     MOV   DPTR,#TABLE  
               MOV   R3,#01H
               MOV   A,R3
               MOVC   A,@A+DPTR
               MOV    OUT,A
               CALL   DELAY
               JMP    STOP
DELAY:   MOV    R7,#100
D1:          MOV    R6,#249
               DJNZ   R6,$
               DJNZ   R7,D1
               RET
STOP:    ORL    P0,#0FFH
TABLE:   DB     1
               END     
源程序2(加恢复后):
               ORG    0000H
LOOP:    JNB    P1.3,LEFT
               JNB    P1.4,RIGHT
               JMP    LOOP
LEFT:     MOV    DPTR,#TABLE  
               MOV    R0,#01H
               MOV    A,R0
               MOVC   A,@A+DPTR
               MOV    P0,A
              CALL   DELAY
              JMP    STOP
RIGHT:   MOV    DPTR,#TABLE  
              MOV    R1,#02H
              MOV    A,R1
              MOVC   A,@A+DPTR
              MOV    P0,A
              CALL   DELAY
              JMP    STOP
DELAY:  MOV    R3,#100
D1:         MOV    R2,#249
              DJNZ   R2,$
              DJNZ   R3,D1
              RET
STOP:   ORL    P0,#0FFH
              JMP    LOOP
TABLE:   DB     1
               DB     9(混合式)
               END
第一个程序是转了45°,第二个程序想让电机左转45°,再右转45°以恢复原状。 但是第二个程序在PROTUES上仿真时点击左转按钮后左转了90°,点击右转按钮时,向右转了45°,结果是向左转了45°,没恢复到原来位置。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
jishuaihu
2019-03-24 21:41
有可能是按键处理的问题吧?试一试在有按键按下之后把相应位置成1再执行转动程序。
LEFT:     SETB  P1.3
               MOV    DPTR,#TABLE  
               MOV    R0,#01H
               MOV    A,R0
               MOVC   A,@A+DPTR
               MOV    P0,A
              CALL   DELAY
              JMP    STOP
RIGHT:   SETB  P1.4
                MOV    DPTR,#TABLE  
              MOV    R1,#02H
              MOV    A,R1
              MOVC   A,@A+DPTR
              MOV    P0,A
              CALL   DELAY
              JMP    STOP

一周热门 更多>