标题: 单片机无法停止发送脉冲,求助 [打印本页]

作者: Double_bass    时间: 2017-11-22 19:49
标题: 单片机无法停止发送脉冲,求助
单片机型号为stc12c5a60s2,写了一段程序用来驱动步进电机转动,但发现一旦给过一个脉冲后就一直有脉冲出现在P1^1口,导致步进电机无法停止转动。程序如下,求助!!

#include "reg52.h"
#include "INTRINS.H"
sbit a=P1^1;  //脉冲
sbit b=P1^2;     //方向
void delay(unsigned int x)
{
  unsigned int j;
  for(;x>0;x--)
  {
  for(j=0;j<124;j++);
  }
}
void move()
{
a=1;
delay(500);
a=0;
delay(500);
}
void main(){
  b=1;
  int i=10;
  while(i>0)
  {
   move();
   i--;
  }
  a=0;
}

作者: HC6800-ES-V2.0    时间: 2017-11-23 08:40
问题很简单!
因为你的程序,没有设置终止,单片机执行完main()函数后,会自动再次执行它,所以你的电机不会停了。
解决办法是:
在a=0;语句后,加上while(1);就好了,你试试。
这样做的目的,就是当执行到while(1)时,就永远停在那里循环,不会再从头执行main(),你的电机也就停了。
作者: Double_bass    时间: 2017-11-26 10:32
HC6800-ES-V2.0 发表于 2017-11-23 08:40
问题很简单!
因为你的程序,没有设置终止,单片机执行完main()函数后,会自动再次执行它,所以你的电机不 ...

您好,我试了一下你说的方法,是可以停止的,但是请问一下还有其他的使电机停止的方法吗?因为我是想实现给电机几个脉冲就让它转几下,但是如果用while(1)的话就无法再次启动了,请问这个有解决方法吗?万分感谢!!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1