51单片机 a4988驱动器 测试代码

/*-----------------------------------------------

名称:步进电机

------------------------------------------------*/


#include <reg52.h>


sbit step=P1^0; //步进脉冲,一个正脉冲就转一个步距角

sbit dir=P1^1; //1为正转,0为反转。

sbit sleep=P1^2;

sbit res=P1^3;

unsigned char sum=0;

unsigned char i=200;


/********************毫秒延时函数***************************/

void Delay(unsigned int xms)

{

unsigned int i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}


void ISR_Key(void) interrupt 2 //外部中断1

{

Delay(20);

sum++;

if(sum==1)

{

dir=~dir;

}

if(sum==1) sum=0;


}

/******************************************************************/

/* 主函数 */

/******************************************************************/

main()

{


dir=1; //正转

sleep=1; //休眠无效

res=1; //复位无效

step=1;


EX1=1; //外部中断1开

IT1=1; //边沿触发

EA=1; //全局中断开


while(i)

{

step=~step;

Delay(2);

i--;

//需要延时,不延时电机不动,延时太久也不动。改变这个参数可以调整电机转速 ,数字越小,转速越大。


}

dir=1; //反转

while(1)

{

step=~step;

Delay(2);

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容