初级会员
- 积分
- 123
- 金钱
- 123
- 注册时间
- 2019-11-24
- 在线时间
- 44 小时
|
1金钱
简单的四个子程序,两个原点归零,外部中断0触发.
两个自动左移右移子程序,一个运行设定长度.
一个外中断停止,开机伺服电机速度600左右,
运行几个小时后有可能会一半速度,350左右.
莫名其妙.
/*************手动电机左移归零****/
void Zero_Left() //
{
DOWN=0; //顶退开启
delay100ms(val3); //顶退时间
DOWN=1; //顶退关闭
DIR1=0;
MOTORRUN=1;
while(MOTORRUN) //外部中断关闭标志位
{
CP1=0;
delay(2);
CP1=1;
delay(2);
if(ZERO_FLAG==0)
MOTORRUN=0;
}
}
/*************手动电机右移归零****/
void Zero_Right() //
{
DOWN=0; //顶退开启
delay100ms(val3); //顶退时间
DOWN=1; //顶退关闭
DIR1=1;
MOTORRUN=1;
while(MOTORRUN) //回原点释放按键电机停止
{
CP1=0;
delay(2); //
CP1=1;
delay(2); //
if(ZERO_FLAG==0)
MOTORRUN=0;
}
DIR1=1; //
}
/*************手动电机左移****/
void Motor_Left() //
{
DIR1=0;
MOTORRUN=1;
while(MOTORRUN)
{
for(k=0;k<ScaleFactor;k++) //运行一个比例系数周期
{
CP1=0;
delay(2);
CP1=1;
delay(2);
}
val6=val6+1;
if(val6==val1) //等于0 限位
MOTORRUN=0; //关电机循环标志
}
printf("n1.val=%d\xff\xff\xff",val6);//实际位置
OUT9=1;
}
/*************手动电机右移****************/
/*************外部中断0使能停止***********/
void Motor_Right() //
{
DIR1=1;
while(ZERO_FLAG) //零点标志
{
CP1=0;
delay(2);
CP1=1;
delay(2);
}
val6=0;
printf("n1.val=%d\xff\xff\xff",val6);//实际位置
DIR1=1; //
OUT9=1;
}
|
|