[問題] 8051控制步進馬達程式

看板ASM (組合語言)作者 (:))時間17年前 (2007/10/20 11:39), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/3 (看更多)
我先承認這是學校程式,但不是請大家幫我寫,而是我題目看不太懂 ,題意懂了,我就會寫了 (我是用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
文章代碼(AID): #176NXTo2 (ASM)
文章代碼(AID): #176NXTo2 (ASM)