⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bskz.c

📁 这是9个步进电机控制程序,每个都编译通过,并在使用中,可以共同商讨.联系:guanggu346 @163.com
💻 C
字号:

/*步进电机变速控制*/
/*2007年7月14日*/

#include<reg51.h>
#define uchar unsigned char
uchar sn=10;     /*步数*/
uchar idata nowrate[2]={0x00,0x00}; /*匀速定时器初值*/
uchar idata *pp;
bit pf=1;        /*中断标志*/

void contrl(direct,mode)
bit direct;  /*方向*/
uchar mode;  /*速度控制*/

{  
  uchar i;
  uchar idata *cmode;
  uchar idata rise[20];  /*加速*/
  uchar idata fall[20];  /*减速*/
  uchar idata plus[7]={0x01,0x03,0x02,0x06,0x04,0x05,0x00}; /*正转*/
  uchar idata minu[7]={0x05,0x04,0x06,0x02,0x03,0x01,0x00}; /*反转*/

  if(direct) cmode=plus;
     else cmode=minu;
  switch(mode)
  {
   case 1:pp=rise;break;  /*pp指向定时器初值*/
   case 2:pp=nowrate;break;
   case 3:pp=fall;break;
   default:pp=nowrate;break;
   }

  do
    {
	 P1=cmode[i];  /*输出转动控制字*/
	 if(cmode[++i]==0x00)i=0;
        while(pf);   /*等待定时时间到*/
		pf=1;
	   if((mode==1)||(mode==3))pp+=2;  /*定时器初值变化*/
	  }
	   while(sn--);
   }


   void intt0(void) interrupt 1    /*T/C0中断服务*/
   {
    TL0=*pp;nowrate[0]=TL0;  /*赋T/C0初值,记录当前定时器初值*/
	TH0=*(pp+1);nowrate[1]=TH0;
	pf=0;
	}

	void main (void)
	{
	TMOD=0X01;
	TH0=0x00;
	TL0=0X00;
	TR0=1;
	ET0=1;
	EA=1;
	contrl(1,1);
	sn=10;
	contrl(1,2);
	sn=10;
	contrl(1,3);
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -