step motor pic.c

来自「自己编写的步进电机的控制源码」· C语言 代码 · 共 111 行

C
111
字号
#include <htc.h>

unsigned int cw_n, ccw_n, Flag_T0, Flag_LED;
#define TMRB0 0x05;
unsigned char step[4] =
{
  0x0A, 0x06, 0x45, 0x09
};
#define n 2000
int i, j;

void interrupt clkint(void) //定时器中断函数
{
  TMR0 = TMRB0;
  T0IF = 0;
  Flag_T0 = 1;
 if ( i++ > 499 )
  {
    i = 0;
    Flag_LED = 1;
  }

}

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


void intmain()

{

  TRISB = 0x01;
  TRISA = 0x00;
  PORTB=0;
  INTCON = 0xE0;
  OPTION = 0x02;
  TMR0 = TMRB0;
	cw_n=n;
}

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


void cw()
{

  cw_n--; /* decrement cw step number */
  
    j++;
  /* if not zero increment index j */
}

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



void energize()
{
  PORTA = step[(j &0x03)]; /* only step 0-7 needed */
}

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



void main()
{

  intmain();
  
while (1)
  {
    if (Flag_LED)
    {
      Flag_LED = 0;
      RB1 =!RB1;
    }




    if (!RB0)
    {
      while (cw_n)
      {

        //tick_wait(); /* wait for 10ms elapsed */
        if (Flag_T0)
        {
          energize(); /* round-robin execution the following tasks every 10ms */
          cw();
			

          Flag_T0 = 0;

        }
      }
    }
cw_n=n;
PORTA=0x00;
  }
}

⌨️ 快捷键说明

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