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

📄 moto.c

📁 电机驱动!四相五线的步进电机用C8051F020驱动
💻 C
字号:
#include <C8051F020.H>
#include <absacc.h>
#include <intrins.h>
#include<string.h>
#define uchar unsigned char
#define uint  unsigned int

#define BAUDRATE     9600            // Baud rate of UART in bps
#define SYSCLK       22118400          // SYSCLK frequency in Hz



uchar code moto_rd[8]={0x8,0xc,0x4,0x6,0x2,0x3,0x1,0x9,}; 
//uchar code moto_rd[8]={0xc,0xc,0x6,0x6,0x3,0x3,0x9,0x9,}; 
//uchar code moto_rd[8]={0x3,0x3,0x6,0x6,0xc,0xC,0x9,0x9,};
uchar mty;


void SYSCLK_Init (void)
{
   int i;                              // delay counter

   OSCXCN = 0x67;                      // start external oscillator with
                                       // 22.1184MHz crystal

   for (i=0; i < 256; i++) ;           // XTLVLD blanking interval (>1ms)
   
   while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle

   OSCICN = 0x88;                      // select external oscillator as SYSCLK
                                       // source and enable missing clock
                                       // detector
	
							  				 
	
}


void xspdelay(unsigned int x)
{
while(x--){}
}

void mb_moto_y(bit fx,unsigned int i)
{
   unsigned int ii;
   unsigned char mt;

   mt=moto_rd[mty]<<4;
   P6=mt;
   xspdelay(1000);
   for (ii=0;ii<i;ii++)
   {
     if(fx==1) mty=(mty+1)&0x07;
	 else mty=(mty-1)&0x07;
     mt=moto_rd[mty]<<4;	 
	 P6=mt;
     
     xspdelay(1000);
     
   }

   
}   

void main()
{      
       WDTCN = 0xde;                       // disable watchdog timer
       WDTCN = 0xad;
	         
          
       SYSCLK_Init ();

	   P74OUT |= 0x30;
	   P6=0;
	    
	   mb_moto_y(1,500);
	   while(1)
	   {
//	   mb_moto_y(0,500);
	  

	   P6=0;
	   }
	  
}

⌨️ 快捷键说明

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