找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2001|回复: 2
打印 上一主题 下一主题
收起左侧

单片机无法停止发送脉冲,求助

[复制链接]
跳转到指定楼层
楼主
ID:252403 发表于 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;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

使用道具 举报

板凳
ID:252403 发表于 2017-11-26 10:32 | 只看该作者
HC6800-ES-V2.0 发表于 2017-11-23 08:40
问题很简单!
因为你的程序,没有设置终止,单片机执行完main()函数后,会自动再次执行它,所以你的电机不 ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表