MC9S12HY64汽车仪表步进电机实验:我的程序中为何一加仪表回零程序马上卡死?望老师指导?谢谢!
/************************************************************/
/* 主函数 */
/************************************************************/
void main(void)
{
DisableInterrupts;
INIT_PLL_24MHz ();
initialize_tim0();
init_motor();
INIT_AD();
EnableInterrupts;
/**for(j=0;j<1080;j++) //逆时针转动180度,指针归位
{
delay200us(1);
motor_step(0,1);
motor_step(1,0);
motor_step(2,1);
motor_step(3,1);
}
oil_actual=0;
water_actual=0;
QY_actual=0;
YW_actual=0;
**/
TIM0_TFLG1_C4F = 1; //清除标志位
TIM0_TC4 = TIM0_TCNT + 125; //设置输出比较时间为4us*125=500us
TIM0_TIE=0x10; //使能通道四中断
TIM0_TFLG1_C7F = 1; //清除标志位
TIM0_TC7 = TIM0_TCNT + 1250; //设置输出比较时间为4us*1250=5000us=5ms
for(;;)
{
POWER=POWER_PT1AD; //读取PT1AD的电平状态赋值给变量POWER
if(POWER==1) //如果POWER的值为1
POWOK=1; //点火开关开启电源工作自锁
else
POWOK=0; //否则关闭电源
if(TIM0_TFLG1_C7F==1) //5ms一个周期
{
TIM0_TFLG1_C7F = 1; //清除标志位
TIM0_TC7 = TIM0_TCNT + 1250; //设置输出比较时间为5ms
AD_in3 = AD_capture(3); //调用带返回值的起动AD转换函数 AD02赋值给AD_in3
AD_in2 = AD_capture(2); //调用带返回值的起动AD转换函数 AD00赋值给AD_in2
AD_in1 = AD_capture(1); //调用带返回值的起动AD转换函数 AD03赋值给AD_in1
AD_in0 = AD_capture(0); //调用带返回值的起动AD转换函数 AD05赋值给AD_in0
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
哈哈,我是专业搞这个的,发完整的程序看看。你用那个型号电机?
我记得当初是这样做,不管指针在哪个位置,程序控制归零,所以会听到指针那个电机齿轮打转的声音
电机里面有个挡块,电机的角度一般330度,
一周热门 更多>