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

📄 main.c

📁 步进电机程序 配合相应的硬件能够实现电机的正反转
💻 C
字号:
/****************************************Copyright (c)

**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info----------------------------------------------

---------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**---------------------------------------------------------------------

---------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**---------------------------------------------------------------------

---------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
************************************************************************

********************************/
#include "config.h"
uint8  SAT=0;
uint16 TAB[4]={0x01,0x02,0x05,0x0A};
uint16 h=0;
const uint32 KEY1=1<<16;
/***********************************************************************

**********************************
**Timer0_InitExt()
**TIMER0初始化
************************************************************************

********************************/
void Timer0_InitExt(void)
{
  T0TC =0;
  T0PR =0;
  T0MCR =0x03;
  T0MR0 =Fpclk/20;
  T0TCR =0x01;
}

//-----------------delayns----------------------
void delays(void)
{ uint8 i,j;
   for(i=100;i>0;i--)
     for(j=50;j>0;j--);
}
/*-----------------------------------------------*/


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

**********************************
**IRQ_Timer0()
**TIMER0中断服务程序
************************************************************************

********************************/
void __irq IRQ_Timer0(void)
{
  SAT = 1;                                                               

                                
  T0IR=0x01;
 VICVectAddr=0;
}

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

**********************************
**IRQ_Init()
**设置定时器0中断IRQ
************************************************************************

********************************/
void IRQ_Init(void)
{
   VICIntSelect=0x00;
   VICVectCntl0=0x20|0x04;
   VICVectAddr0=(uint32)IRQ_Timer0;      //设置中断服务程序地址
   VICIntEnable=(1<<0x04);               //使能定时器0中断
}

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

**********************************
**main()
**控制步进电机正反转(给脉冲的顺序,正给,反给)
  控制步进电机旋转的快慢(用定时器控制每给一个脉冲的时间)
************************************************************************

********************************/
int main (void)
{  
    uint8 zx=0;
    PINSEL0=0x00000000;
    IO0DIR=0x000200F0;     //将P0.0~P0.3设置为输出状态
    Timer0_InitExt();
    IRQ_Init();
    IRQEnable();
    IO0CLR = 0x0f;
  while(1)
  {
  //uint8 K;
  //IO0CLR = 0x0f;
  if(SAT == 1)
  {
   IOCLR=0x0f0;
   IOSET=TAB[h]<<4;
   //K = IO0PIN;
   //K = K&0xffff0000;
  if((IO0PIN&KEY1)==0)         //正转
     {
     zx = 1;
     }
   else                //反转
     {
      zx = 0;
      }
   if(zx == 1)
    {
     h++;
     if(h>=4) 
      {
       h = 0;
      }
     }
    else
     {
      h--;
      if(h==0xffff)
       {
        h = 3;
       }
     }  
    
   //IOCLR=TAB[h];
   //IOSET=TAB[h];
   SAT = 0;
   }
  } 
    return 0;
}
/***********************************************************************

**********************************
**                            End Of File
************************************************************************

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

⌨️ 快捷键说明

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