#include #define uchar unsigned char #define uint unsigned int sbit A1=P1^0; sbit B1=P1^1; sbit C1=P1^2; sbit D1=P1^3; #define CIOL_A {A1=1;B1=0;C1=0;D1=0;} #define CIOL_B {A1=0;B1=1;C1=0;D1=0;} #define CIOL_C {A1=0;B1=0;C1=1;D1=0;} #define CIOL_D {A1=0;B1=0;C1=0;D1=1;} #define CIOL_S {A1=0;B1=0;C1=0;D1=0;} void Delay2Ms(int t); void DelayMs(int t); main() { int i=8,speed=3; for(i=8;i>0;i--)//顺时针转动 { CIOL_A; DelayMs(speed); CIOL_B; DelayMs(speed); CIOL_C; DelayMs(speed); CIOL_D; DelayMs(speed); } CIOL_S; for(i=8;i>0;i++)//逆时针转动 { CIOL_D; DelayMs(speed); CIOL_C; DelayMs(speed); CIOL_B; DelayMs(speed); CIOL_A; DelayMs(speed); } CIOL_S; } void Delay2Ms(int t) { while(--t); } void DelayMs(int t) { while(t--) { Delay2Ms(245); Delay2Ms(245);//1ms } }
为什么顺时针转动了1/4圈都不到就开始逆时针转动了,而且还一直逆时针转动。请问各位大神吗为什么会这样,求解释!!感谢
按照如下这样改应该就对了(请注意第二个For循环i的初值):
void main()
}
另外i在定义的时候没必要赋值,反正在For循环里都会赋初值。
貌似是个逻辑问题,
检查一下你的for循环。别的不说,你的第二个for循环是有问题的,i初始化为8,不管怎么+都是>0的,着解释了一直逆时针的现象。
至于前一个,你在修复后一个循环后,再试试,然后参考一下该步进电机的手册就明白了。
希望有帮助
楼上正解。for循环一直累加。。至于为什么是四分之一。。那得看你步进电机参数了。。
而且你这两相四拍好像不对啊