步进电机

无刷电机
电话:0755-29030191
当前位置:首页 > 新闻中心 > 行业新闻 >
新闻中心
产品中心
联系我们

深圳市东么川伺服控制技术有限公司

电话:0755-29030191

邮箱:609708814@qq.com

地址:深圳市龙华区雪岗北路清湖动力园A6栋二楼A区

步进电机控制之二:中断实现正反转控制


步进电机控制之二:中断实现正反转控制

步进电机控制之二:中断实现正反转控制

/*设计思路:采用按键对标志位flag1、flag2的

奇偶性判断不同的键值含义;步进电机采用四

相四拍的工作方式;Proteus不支持八拍工作模式,

该程序在Keil5下运行,低版本需修改头文件为:

#include<reg51.h>*/

/*优点:执行效率高,无需键盘扫描,无需松手检测;

缺点:不具备键盘消抖功能*/

#include <STC89C5xRC.H>

#define uint unsigned int

#define uchar unsigned char

uchar code num[]={0x01,0x02,0x04,0x08};

bit flag1,flag2;

void init_exint();

void delay_ms(uint z);

void motorzz();

void motorfz();

void motorstop();

void main()

{

init_exint();

while(1)

{

if(flag1==0)

motorstop();

else if(flag2==0)

motorzz();

else

motorfz();

}

}

void init_exint()

{

EA=1;

EX0=1;

EX1=1;

IT0=1;

IT1=1;

}

void delay_ms(uint z)

{

uchar i;

while(z--)

for(i=0;i<120;i++);

}

void motorstop()

{

P0=0X00;

}

void motorzz()

{

uchar i;

for(i=0;i<4;i++)

{

P0=num[i];

delay_ms(20);

}

}

void motorfz()

{

char i;

/*注意:此处定义为有符号字符型,如果定义为

无符号字符型,i=0,i-1=255,i=255,for循

环依旧成立,而num[255]是一个未知数*/

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

{

P0=num[i];

delay_ms(20);

}

}

/*以上motorfz()函数又等价于

void motorfz()

{

  uchar i;

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

  {

P0=num[i-1];

delay_ms(20);   

  }

}

*/

void ext0() interrupt 0

{

flag1=~flag1;

}

void ext1() interrupt 2

{

flag2=~flag2;

}

 


    热门产品:三相步进电机



    热门产品:三相步进驱动器



    热门产品:直流无刷驱动器