#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
uchar code step_table[]={0xc4,0xcc,0xc8,0xd8,0xd0,
                    0xf0,0xe0,0xe4};  //进步进电：A相对应的是P0.5，B相对应的是P0.4，
                                      //C相对应的是P0.3，D相对应的是P0.2；其它没用
                                      //到的I/O口：P0.6、P0.7默认为1；P0.1、P0.0 默
                                      //认为0。根据1-2相励磁方式，得到的步进电机正
                                      //向转动编码。
void delay (uint t)  //延时函数
{
 while(t--);
}

void main()
{
	uint i,j;
	P0=00;     //关闭数码管显示
	delay(500);
	dula=1;
	delay(500);
	dula=0;
	for(j=8*64;j>0;j--)  //由于该电机的步进角度是5.625/64，即转子的步进角是5.625，现在是
                             //采用1-2相励磁方式，一个周期有8个节拍，那么实行一个周期脉冲为
                            //45度（5.625×8=45度），那么要转360度，只要8个周期脉冲即可。
                            //但由于输出轴减速比为1：64，那么就要再运行64次输出轴才能得到
                            //360度，即8×64。
	{
		for(i=0;i<8;i++)  //8个工作节拍，依次的送给步进电机，使步进电机正转
		{
			P0=step_table[i];
			delay(200);
		}
	}

	for(j=8*64;j>0;j--)
	{
		for(i=8;i>0;i--)   //8个工作节拍，反向依次的送给步进电机，使步进电机反转
		{
			P0=step_table[i];
			delay(200);
		}
	}
}