原程序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°,没恢复到原来位置。
此帖出自
小平头技术问答
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
小菜鸟希望和单片机爱好者交流
一周热门 更多>