写了个步进电机小程序, 不知道哪里出问题了,请教各位大神。
说明: P0.0正转按键, P0.1反转按键。 步进电机接P1引脚的高4位。
症状: 当按下反转键时, 电机正常反转, 但是如果按下正转, 电机内部在运行,但是不转,可以感觉到震动。
于是就把P1的高4位连接到LED上看脉冲时序。
结果发现, 当按下反转时, 电机是按照P2.7-P2.6-P2.5-P2.4 -P2.7-P2.6-P2.5-P2.4.......这样的顺序发出脉冲,电机是正常在反转。
但是按下正转键时, 电机是按照P2.7-P2.6-P2.5-P2.4-P2.5-P2.6-P2.7-P2.6-P2.5-P2.4-P2.5..........是迂回的顺序,所以电机虽然震动,内部转自在转,却是几步在往复运动,所以不转。
请各位看看, 我哪里写错了。谢谢了。
ORG 0000H
LJMP START
ORG 0100H
START: MOV R2,#00H
MOV R3,#00H
MOV R4,#00H
MOV P0,#00H
MOV P1,#00H
SCAN: MOV P0,#03H
JNB P0.0, ZZ
JNB P0.1, FZ
SJMP SCAN
ZZ: MOV R2,#00H
LOOP1: MOV A,R2
MOV DPTR,#TAB1
MOVC A,@A+DPTR
JZ ZZ
MOV P1,A
LCALL DELAY
INC R2
LCALL SCN
LJMP LOOP1
FZ: MOV R2,#00H
LOOP2: MOV A,R2
MOV DPTR,#TAB2
MOVC A,@A+DPTR
JZ FZ
MOV P1,A
LCALL DELAY
INC R2
LCALL SCN
LJMP LOOP2
SCN: JNB P0.0,LOOP1
JNB P0.1,LOOP2
RET
DELAY: MOV R3,#60H
M1: MOV R4,#60H
DJNZ R4,$
DJNZ R3,M1
RET
TAB1: DB 80H,40H,20H,10H
TAB2: DB 10H,20H,40H,80H
END
|