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

📄 dianjikongzhi.txt

📁 走迷宫的智能小车
💻 TXT
字号:
/********************************************************************************
 *函数原型:  void dc_moto_control(unsigned char *point)                                       	     
 *参数说明:  *point  指向8字节直流电机控制数据,控制数据定义见控制板电机控制命令说明                                        
 *返回值:    无                                                               
 *说明:      设定4路直流电机控制	                                           
 ********************************************************************************/
void dc_moto_control(unsigned char *point)
{								
	unsigned long	i;
        i=0;
        unsigned long	H_Count1,H_Count2,H_Count3,H_Count4;
        H_Count1=0;
        H_Count2=0;
        H_Count3=0;
        H_Count4=0;
        TimerA_100ms_M1 = 0;		//设定各个电机的运行时间0.1MS-25.5S
	TimerA_100ms_M2 = 0;
	TimerA_100ms_M3 = 0;
	TimerA_100ms_M4 = 0;
	MotoTime[0] = *(point+1);
	MotoTime[1] = *(point+3);
	MotoTime[2] = *(point+5);
	MotoTime[3] = *(point+7);
	if(0x80 == *point)	M1_T;	//MOTO1停止
	else if(*point < 0x80)
	{
          M1_L;
          H_Count1 = 10ms + (((0x80 - *point) * 145)/100);  
          while(1)
          {
            i++;
            if(i<=H_Count1)   P2OUT |= BIT3;
            else  P2OUT &= ~BIT3; 
            if(i>=40ms)  i=0;
          } 
	}
	else
	{
          M1_R;
          H_Count1 =  10ms + (((*point - 0x7f) * 145)/100);
          while(1)
          {
            i++;
            if(i<=H_Count1)   P2OUT |= BIT3;
            else  P2OUT &= ~BIT3; 
            if(i>=40ms)  i=0;
          } 
	}
	if(0x80 == *(point+2))	M2_T;	//MOTO2停止
	else if(*(point+2) < 0x80)
	{
	  M2_L;
          H_Count2 = 10ms + (((0x80 - *(point+2)) * 145)/100);  
          while(1)
          {
            i++;
            if(i<=H_Count2)   P2OUT |= BIT2;
            else  P2OUT &= ~BIT2; 
            if(i>=40ms)  i=0;
          } 
	}
	else
	{
	   M2_R;
           H_Count2 = 10ms + (((*(point+2) - 0x7f) * 145)/100);
           while(1)
           {
            i++;
            if(i<=H_Count2)   P2OUT |= BIT2;
            else  P2OUT &= ~BIT2; 
            if(i>=40ms)  i=0;
           } 
	}
	if(0x80 == *(point+4))	M3_T;	//MOTO3停止
	else if(*(point+4) < 0x80)
	{
           M3_L;
           H_Count3 = 10ms + (((0x80 - *(point+4)) * 145)/100);  
           while(1)
           {
            i++;
            if(i<=H_Count3)   P2OUT |= BIT1;
            else  P2OUT &= ~BIT1; 
            if(i>=40ms)  i=0;
           } 
	}
	else
	{
	  M3_R;
          H_Count3 = 10ms + (((*(point+4) - 0x7f) * 145)/100);
          while(1)
          {
            i++;
            if(i<=H_Count3)   P2OUT |= BIT1;
            else  P2OUT &= ~BIT1; 
            if(i>=40ms)  i=0;
          } 
	}
	if(0x80 == *(point+6))	M4_T;	//MOTO4停止
	else if(*(point+6) < 0x80)
	{
           M4_L;
           H_Count4 = 10ms + (((0x80 - *(point+6)) * 145)/100);  
           while(1)
           {
            i++;
            if(i<=H_Count4)   P2OUT |= BIT0;
            else  P2OUT &= ~BIT0; 
            if(i>=40ms)  i=0;
           } 
	}
	else
	{
	  M4_R;
          H_Count4 = 10ms + (((*(point+6) - 0x7f) * 145)/100);
          while(1)
          {
            i++;
            if(i<=H_Count4)   P2OUT |= BIT0;
            else  P2OUT &= ~BIT0; 
            if(i>=40ms)  i=0;
          } 
	}				
}











/********************************************************************************
 *函数原型:  void dc_moto_control(unsigned char *point)                                       	     
 *参数说明:  *point  指向8字节直流电机控制数据,控制数据定义见控制板电机控制命令说明                                        
 *返回值:    无                                                               
 *说明:      设定4路直流电机控制	                                           
 ********************************************************************************/
void dc_moto_control(unsigned char *point)
{								
	TimerA_100ms_M1 = 0;		//设定各个电机的运行时间0.1MS-25.5S
	TimerA_100ms_M2 = 0;
	TimerA_100ms_M3 = 0;
	TimerA_100ms_M4 = 0;
	MotoTime[0] = *(point+1);
	MotoTime[1] = *(point+3);
	MotoTime[2] = *(point+5);
	MotoTime[3] = *(point+7);
	if(0x80 == *point)	M1_T;	//MOTO1停止
	else if(*point < 0x80)
	{
          TBCCR1 = 20000 + (((0x80 - *point) * 35574)/100);
          M1_L;
	}
	else
	{
          TBCCR1 = 20000 + (((*point - 0x7f)  * 35574)/100);
          M1_R;
	}
	if(0x80 == *(point+2))	M2_T;	//MOTO2停止
	else if(*(point+2) < 0x80)
	{
          TBCCR2 = 20000 + (((0x80 - *(point+2)) * 35574)/100);
	  M2_L;
	}
	else
	{
	   TBCCR2 = 20000 + (((*(point+2) - 0x7f)  * 35574)/100);
           M2_R;
	}
	if(0x80 == *(point+4))	M3_T;	//MOTO3停止
	else if(*(point+4) < 0x80)
	{
	   TBCCR3 = 20000 + (((0x80 - *(point+4)) * 35574)/100);
           M3_L;
	}
	else
	{
	   TBCCR3 = 20000 + (((*(point+4) - 0x7f)  * 35574)/100);	
           M3_R;
	}
	if(0x80 == *(point+6))	M4_T;	//MOTO4停止
	else if(*(point+6) < 0x80)
	{
           TBCCR4 = 20000 + (((0x80 - *(point+6)) * 35574)/100);
           M4_L;
	}
	else
	{
	   TBCCR4 = 20000 + (((*(point+6) - 0x7f)  * 35574)/100);
           M4_R;
	}				
}

⌨️ 快捷键说明

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