寫了一個控制步進電機的程序,用來使各個電機依次運動。在Keil調試時單步運行沒有問題,全速運行時會提示error65,在Proteus里仿真發(fā)現只有前三個電機運動,剩下兩個沒反應,程序是哪里出問題了嗎 ,編譯的時候沒有提示出現錯誤
#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;
} } |