标题: 单片机控制步进电机,大神来帮助一下吧 [打印本页]

作者: yandao    时间: 2018-5-15 11:18
标题: 单片机控制步进电机,大神来帮助一下吧

写了一个控制步进电机的程序,用来使各个电机依次运动。在Keil调试时单步运行没有问题,全速运行时会提示error65,在Proteus里仿真发现只有前三个电机运动,剩下两个没反应,程序是哪里出问题了吗 ,编译的时候没有提示出现错误


#include<reg51.h>
#define uint unsigned int


sbit CW1=P0^0;      //1号电机方向及时钟
sbit CLK1=P0^1;
sbit CW2=P0^2;   //2号电机方向及时钟
sbit CLK2=P0^3;  
sbit CW3=P0^4;   //3号电机方向及时钟
sbit CLK3=P0^5;  
sbit CW4=P0^6;    //4号电机方向及时钟
sbit CLK4=P0^7;  
sbit CW5=P2^0;    //5号电机方向及时钟
sbit CLK5=P2^1;

void delay(int x)  
{
   int a,b;
    for(a=0;a<x;a++)
     for(b=0;b<120;b++)
         {}
}

void main()
{
    int i,j,l,m,n;
    CW1=1;
    CLK1=0;
    for(i=0;i<201;i++)  
    {
      CLK1=1;
      delay(10);
      CLK1=0;
      delay(10);
      if(i==200)break;
     }
    delay(50);  
    CW2=1;
    CLK2=0;
   for(j=0;j<201;j++)  
   {
     CLK2=1;
     delay(10);
     CLK2=0;
     delay(10);
     if(j==200)break;
    }
   delay(50);
    CW3=1;
   CLK4=0;
for(l=0;l<201;l++)  
{
   CLK3=1;
delay(10);
CLK3=0;
delay(10);
if(l==200)break;
}
CW4=1;
CLK4=0;
for(n=0;n<51;n++)  
{
CLK4=1;
delay(10);
CLK4=0;
delay(10);
if(n==50)break;
}
CW5=1;
CLK5=0;
for(m=0;m<51;m++)  
{
CLK5=1;
delay(10);
CLK5=0;
delay(10);
if(m==50)break;
}

}


作者: zhanghyg    时间: 2018-5-16 10:56
程序这里有问题,你改一下看看

作者: lvyanbing9    时间: 2018-5-16 11:22
楼上说的没错
作者: 2363228374    时间: 2018-5-16 14:35
对,就是这个问题,一楼说的没错
作者: kaikaikaikai123    时间: 2018-5-16 16:06
一楼说的没错
作者: asdwe9669    时间: 2018-5-16 19:13
一楼说的没错
作者: qwerm    时间: 2018-5-16 19:24
是的,很明显一楼说的就是对的

作者: 1742600490    时间: 2018-5-16 19:50
一楼说的没错 我们课设也是这个
作者: 18437955528    时间: 2018-5-19 15:46
是的,一楼说的挺对,我们课设就是这个




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