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

📄 main.c

📁 c8051f020模块.rar
💻 C
字号:
#include <c8051f020.h>

#define uint8 unsigned char
#define uint16 unsigned int

#define FORWORD 0XC0
#define BACK 0XE0
#define STOP 0X00


void DELAY(uint16 time)//控制电机的延时 ,1为1.9us
{
  while(time--);
}

void Init_PORT(void)
{
   XBR0=0X06;
   XBR2=0X40;
   //P0MDOUT=0XFF;
   //P0=0;



}



void Init_Spi(void)
{
  SPI0CN=0X03;
  SPI0CFG=0Xc7;
  SPI0CKR=199;
}

void Write_spi(uint8 DATA)
{
  while(TXBSY);
  //CS=0;
  SPI0DAT=DATA;
  //CS=1;
}






//----------------------左电机初始化------------------//
void Init_Ch1Duty(uint8 duty) //7f为50%
{
  Write_spi(0x53);
  //DELAY(3000);
  
  DELAY(200);
  Write_spi(duty);
  //DELAY(3000);
  DELAY(200);
}


void Init_Ch1Mode(uint8 NUM) 
{
  Write_spi(0x50);
  //DELAY(3000);
  DELAY(200);
  Write_spi(NUM);
  //DELAY(3000);
  DELAY(200);
}


//----------------------右电机初始化--------------------//
void Init_Ch2Duty(uint8 duty) 
{
  Write_spi(0x57);
  //DELAY(3000);
  DELAY(200);
  Write_spi(duty);
  //DELAY(3000);
  DELAY(200);
}


void Init_Ch2Mode(uint8 NUM) 
{
  Write_spi(0x54);
  //DELAY(3000);
  DELAY(200);
  Write_spi(NUM);
  //DELAY(3000);
  DELAY(200);
}


//----------------左电机状态控制-----------------------//
void Ch1_Forword(void) 
{
  Init_Ch1Duty(0xee);
   DELAY(5000);
  Init_Ch1Mode(FORWORD);
  DELAY(5000);
}


void Ch1_Back(void) 
{
  Init_Ch1Duty(0xee);
  DELAY(5000);
  Init_Ch1Mode(BACK);
  DELAY(5000);
}

void Ch1_Stop(void) 
{
  Init_Ch1Duty(0x00);
  DELAY(5000);
  Init_Ch1Mode(STOP);
  DELAY(5000);
}
 
 
 
//-------------右电机状态控制--------------------------//
void Ch2_Forword(void) 
{
  Init_Ch2Duty(0xee);
  DELAY(5000);
  Init_Ch2Mode(FORWORD);
  DELAY(5000);
}


void Ch2_Back(void) 
{
  Init_Ch2Duty(0xde);
  DELAY(5000);
  Init_Ch2Mode(BACK);
  DELAY(5000);
}


void Ch2_Stop(void) 
{
  Init_Ch2Duty(0x00);
  DELAY(5000);
  Init_Ch2Mode(STOP);
  DELAY(5000);
}


void Init_SYSCLK(void)
{ 
  uint8 i;
  OSCXCN = 0X67;//开始外部22.1184M晶振
  for(i = 0;i < 128;i++); //等待外部起振
  while(!(OSCXCN & 0X80));	//查询标志位
  OSCICN = 0X88;//用外部晶振,并使能始终丢
}




//-----------------主函数---------------------------------//
void main(void) 
{
  WDTCN = 0xde;
  WDTCN = 0xad;//关闭看门狗

  Init_SYSCLK();
  Init_PORT();
  
  
  DELAY(27);//延时60us	
  Init_Spi(); 
  //Init_Ch1Duty(0xEE);
  //DELAY(2000);
 // DELAY(10);//延时60us
  //Init_Ch1Mode(BACK);
  
  
  //DELAY(1000);
  Ch2_Forword();
 // DELAY(10000);
  //DELAY(1000);
  Ch1_Forword();
  //EnableInterrupts;  

  while(1) 
  {
	 // Ch2_Forword();
 // DELAY(15000);
  //DELAY(1000);
  //Ch1_Forword();
	 /*P0=~P0;
     DELAY(1);*/
    //DELAY(15);
  } /* wait forever */
  /* please make sure that you never leave this function */
}

⌨️ 快捷键说明

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