❶ 如何用C語言控制步進電機 正轉後自動反轉
中斷2,啟動-停止切換(通過切換flag_status),顯示狀態。do-while是延時。
中斷1,計數器count增1,如果達到預設的數值tab[sp],計數器歸零,標志flag置1。這個好像與速度有關。通過調整延時時間來調整速度。
中斷0,讀鍵盤。沒有scan_key()的源代碼,不知道裡面有些什麼操作。
while(1){...}循環是電機運轉,flag_status是狀態,1轉動,0停止。
沒有看到與正轉反轉有關的代碼。也許在motor_cw_ccw();函數裡面,這個就是電機動一下的函數。
原程序不完整,沒有相應函數、變數的定義及意義說明。難以確切理解。
❷ C語言控制機器人走路的程序
//設置左右馬達參數
void ZYMotor(unsigned char ZState, unsigned char ZSpeed, unsigned char YState, unsigned char YSpeed)
{
SetMotor(_MOTOR_ZuoMotor_, ZState, ZSpeed);
SetMotor(_MOTOR_YouMotor_, YState, YSpeed);
}
//確認各個埠的狀態
void ShiBieXian()
{
n=1;
XJ[1]= GetADScable(_SCABLEAD_HB1_);
XJ[2]= GetADScable(_SCABLEAD_HB2_);
XJ[3]= GetADScable(_SCABLEAD_HB3_);
XJ[4]= GetADScable(_SCABLEAD_HB4_);
XJ[5]= GetADScable(_SCABLEAD_HB5_);
while(n<=5)
{
if(XJ[n]>FZ[n])
{HB[n]=0;}
else
{HB[n]=1;}
n++;
}
}
void GoOnLine()
{
if(HB[2]&&HB[3]&&HB[4])
{ZYMotor(0,60,0,60);}
else
{
if(HB[2]&&HB[3])
{ZYMotor(2,20,0,80);}
else
{
if (HB[2])
{ZYMotor(2,50,0,80);}
else
{
if(HB[3]&&HB[4] )
{ZYMotor(0,80,2,20);}
else
{
if(HB[4])
{ZYMotor(0,80,2,50);}
else
{
if (HB[1]&&!HB[2]&&!HB[3]&&!HB[4]&&!HB[5])
{ZYMotor(2, 80, 0, 80);}
else
{
if (!HB[1]&&!HB[2]&&!HB[3]&&!HB[4]&&HB[5])
{ZYMotor(0, 80, 2, 80);}
else
{ZYMotor(0, 60, 0, 60);}
}
}
}
}
}
}
}