--
--
只为初学者的步进电机正反控制程序
#include
#define uchar unsigned char
#define uintunsigned int
#define MotorData P2// 步进电机控制接口定义
sbit zheng=P3^0;
sbit fan=P3^1;
sbit stop=P3^2;
uchar phasecw[8] ={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//正转
uchar phaseccw[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};//反转
//ms 延时函数
void delay(uint t)
{
uint k;
while(t--)
{
for(k=0; k<125; k++);
}
}
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i
for(j=0;j<112;j++);
}
//顺时针转动
void Motor_work(uint t)
{
uchar i,j;
switch(t)
{
case 0:
while(1)
{if(stop==0)
break;
for(i=0;i<8;i++)
{MotorData=phasecw[i];
delay(50);// 转速调节
}
}
break;
case 1:
while(1)
{if(stop==0)
break;
for(j=0;j<8;j++)
{MotorData=phaseccw[j];
delay(50);// 转速调节
}
}
break;
}
}
//停止转动
void Motor_test(void)
{
if(zheng==0)
{ Delay_xms(10); if(zheng==0) Motor_work(0);
}
if(fan==0)
{ Delay_xms(10); if(fan==0) Motor_work(1);
}
}
//主函数
void main(void)
{
Delay_xms(10);// 等待系统稳定
while(1)
{
Motor_test();
}
}