❶ 如何用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);}
}
}
}
}
}
}
}