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

📄 stepmotor.c

📁 单片机控制步进电机加减速C语言源程序
💻 C
字号:
/////////////////////////////////////
//  Generated Initialization File  //
/////////////////////////////////////

#include "C8051F120.h"
#define T1 1843
#define T2 3000
#define T3 1843
#define T4 922
sbit p   = P3 ^ 3;  //平移电机脉冲
sbit eud = P3 ^ 7;	//升降电机使能
sbit p1  = P3 ^ 2;  //升降电机脉冲
sbit elr = P3 ^ 5;	//平移电机使能
char a = 0;	        //标志位
char b = 0;
char c = 0;
char d = 0;
// Peripheral specific initialization functions,
// Called from the Init_Device() function
void Reset_Sources_Init()
{
    WDTCN     = 0xDE;
    WDTCN     = 0xAD;
}

void Port_IO_Init()
{
    // P0.0  -  TX0 (UART0), Open-Drain, Digital
    // P0.1  -  RX0 (UART0), Open-Drain, Digital
    // P0.2  -  TX1 (UART1), Open-Drain, Digital
    // P0.3  -  RX1 (UART1), Open-Drain, Digital
    // P0.4  -  Unassigned,  Open-Drain, Digital
    // P0.5  -  Unassigned,  Open-Drain, Digital
    // P0.6  -  Unassigned,  Open-Drain, Digital
    // P0.7  -  Unassigned,  Open-Drain, Digital

    // P1.0  -  Unassigned,  Open-Drain, Digital
    // P1.1  -  Unassigned,  Open-Drain, Digital
    // P1.2  -  Unassigned,  Open-Drain, Digital
    // P1.3  -  Unassigned,  Open-Drain, Digital
    // P1.4  -  Unassigned,  Open-Drain, Digital
    // P1.5  -  Unassigned,  Open-Drain, Digital
    // P1.6  -  Unassigned,  Open-Drain, Digital
    // P1.7  -  Unassigned,  Open-Drain, Digital

    // P2.0  -  Unassigned,  Open-Drain, Digital
    // P2.1  -  Unassigned,  Open-Drain, Digital
    // P2.2  -  Unassigned,  Open-Drain, Digital
    // P2.3  -  Unassigned,  Open-Drain, Digital
    // P2.4  -  Unassigned,  Open-Drain, Digital
    // P2.5  -  Unassigned,  Open-Drain, Digital
    // P2.6  -  Unassigned,  Open-Drain, Digital
    // P2.7  -  Unassigned,  Open-Drain, Digital

    // P3.0  -  Unassigned,  Push-Pull,  Digital
    // P3.1  -  Unassigned,  Push-Pull,  Digital
    // P3.2  -  Unassigned,  Push-Pull,  Digital
    // P3.3  -  Unassigned,  Push-Pull,  Digital
    // P3.4  -  Unassigned,  Push-Pull,  Digital
    // P3.5  -  Unassigned,  Push-Pull,  Digital
    // P3.6  -  Unassigned,  Push-Pull,  Digital
    // P3.7  -  Unassigned,  Push-Pull,  Digital

    SFRPAGE   = CONFIG_PAGE;
    P3MDOUT   = 0xFF;
    P4MDOUT   = 0xFF;
    P5MDOUT   = 0xFF;
    P6MDOUT   = 0xFF;
    P7MDOUT   = 0xFF;
    XBR0      = 0x04;
    XBR2      = 0x44;
}

void Oscillator_Init()
{  
	int i = 0;
    SFRPAGE   = CONFIG_PAGE;
    OSCXCN    = 0x67;
    for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
    while ((OSCXCN & 0x80) == 0);
    CLKSEL    = 0x01;  	

}

// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
    Reset_Sources_Init();
    Port_IO_Init();
    Oscillator_Init();
	eud = 0;
	elr = 0;
}

 /******************************************************************************
函数:Timer0Isr
描述:定时器3中断服务程序,Timer0
参数:无
返回:无                          
******************************************************************************/
void Timer0Isr (void) interrupt 1 using 1
{   p = !p;
    p1 = !p1;	  
   	 if(a == 1)
	  { TH0 = -T1/256;           
   	    TL0 = -T1%256; 
      }
else if(b == 1)
      { TH0 = -T2/256;           
   	    TL0 = -T2%256; 
	  }
else if(c == 1)
	  { TH0 = -T3/256;           
   	    TL0 = -T3%256; 
	  }
else if(d == 1)
	  { TH0 = -T4/256;           
   	    TL0 = -T4%256; 
	  }
}
/* void delay(long t)
{   
  for(;t>=0;t--);

}  */
void pulse(void)
{   p = 0;
    p1 = 0;
    SFRPAGE   = TIMER01_PAGE;
    TMOD|= 0x01;               //TMOD: timer 0, mode 1, 16-bit timer
   	TH0 = -T1/256;             //Timer0 TH0 high byte reload initial value
   	TL0 = -T1%256;             //Timer0 TL0 low byte write initial value(1ms)
   	EA = 1;	
    ET0 = 1;                  //Timer0 Interrupt enable(IE.1)
 	TR0 = 1;
	
 }

main()
{      Init_Device(); 
       pulse();    
	   c = 1;
	   eud = 1;
	   elr = 1;
	   while(1);
}

⌨️ 快捷键说明

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