作者typecommand (:))
看板ASM
标题[问题] 8051控制步进马达程式
时间Sat Oct 20 11:39:08 2007
我先承认这是学校程式,但不是请大家帮我写,而是我题目看不太懂
,题意懂了,我就会写了 (我是用Keil C去模拟port的讯号)
一)P1 pin 0-3 are input, pin 4-7 are output and are used to drive motor.
(P1有可能同时做为input port和output port吗? 我是把P2设为output port)
(1)if key pressed(port P1 pin 0) , the motor loop forward 2 step per second
(是不是说在P1的pin 0打勾,就要让马达每秒钟正转2个半步)
(2)if key pressed(port P1 pin 1) , the motor loop backward 2 step per second.
(同上)
(3)if switch on (port P1 pin 2==1) , using Full step control, else half step
(是不是pin2 和 pin0同时打勾,就正转全步)
( pin2 和 pin1 反 )
Step motor control:
Full step
step[0] = 1; { binary 0001 }
step[1] = 4; { binary 0100 }
step[2] = 2; { binary 0010 }
step[3] = 8; { binary 1000 }
(1 4 2 8 什麽意思,完全看不太懂)
half-step control:
step[0] = 1; { binary 0001 }
step[1] = 5; { binary 0101 }
step[2] = 4; { binary 0100 }
step[3] = 6; { binary 0110 }
step[4] = 2; { binary 0010 }
step[5] = 10; { binary 1010 }
step[6] = 8; { binary 1000 }
step[7] = 9; { binary 1001 }
(1 5 4 6 2 10 8 9 也完全看不懂)
procedure onestep( direction );
begin
step := step + direction;
if step > maxstep then step := 0
else if step < 0 then step := maxstep;
write( motor, steptab[step] );
end;
(上述的虚拟码是不是在说,步进马达不能一次转动太多,不能超
过maxstep。另外direction有可能是负的吗?否则干嘛判断step<0
的时候,step = maxstep,还是说direction负的表示反转)
又臭又长,感谢大家努力的看完它,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.225.163.118