[問題] 8051控制步進馬達程式
我先承認這是學校程式,但不是請大家幫我寫,而是我題目看不太懂
,題意懂了,我就會寫了 (我是用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
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章