📄 dianjikongzhi.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 + -