📄 mainbak.c
字号:
vPauseTime=200;
VMotorOut(SIN16[currentCount]) ;
}
else
{
++accDecCount;
vSoftTimer0=DECTABLE[accDecCount]/250;
}
// VMotorOut(SIN16[currentCount+1]) ;
break;
case ACCELERATION:
if(currentCount==0)
currentCount=15;
else
--currentCount;
VMotorOut(SIN16[currentCount]) ;
--vAbsolutionPosition;
if(accDecCount==15)
{
vSoftTimer0=ACCTABLE[accDecCount]/250;
accDecCount=0;
vPresetPosition=vPresetPosition+16;
vAccDecFlag=NORMALMOTION;
}
else
{
vSoftTimer0=ACCTABLE[accDecCount]/250;
++accDecCount;
}
break;
case NORMALMOTION:
if(vPresetPosition!=vAbsolutionPosition)
{
if(currentCount==0)
currentCount=15;
else
--currentCount;
VMotorOut(SIN16[currentCount]) ;
--vAbsolutionPosition;
vSoftTimer0=-80;
// vSoftTimer0=ACCDEC[accDecCount];
}
else
vAccDecFlag=DECELERATION;
break;
}
break;
}
}
break;
case MULMOTION :
if(!vOrientFlag)
{
if(vPresetPosition>vAbsolutionPosition)
vOrientFlag=1;
// else if(vPresetPosition==vAbsolutionPosition) TR2=0;
else
vOrientFlag=-1;
}
//
switch(vOrientFlag)
{
default:break;
case 1:
{
switch(vAccDecFlag)
{
default :break;
case PAUSE:
if(!(vPauseTime--))
{
vAccDecFlag=ACCELERATION;
vOrientFlag=0;
if( (vMulPointCount>=0)&&(vMulPointCount<=3))
{
vPresetPosition=VMulPoint[vMulPointCount];
vMulPointCount++;
}
else if( (vMulPointCount>=4)&&(vMulPointCount<=6))
{
vPresetPosition=VMulPoint[8-vMulPointCount];
vMulPointCount++;
}
else
{
vPresetPosition=VMulPoint[8-vMulPointCount];
vMulPointCount=0;
}
}
break;
case DECELERATION:
if(currentCount==15)
currentCount=0;
else
++currentCount;
VMotorOut(SIN16[currentCount]) ;
++vAbsolutionPosition;
if(accDecCount==15)
{
vSoftTimer0=DECTABLE[accDecCount]/250;
accDecCount=0;
vAccDecFlag=PAUSE;
vPauseTime=50;
VMotorOut(SIN16[currentCount]) ;
}
else
{
vSoftTimer0=DECTABLE[accDecCount]/250;
++accDecCount;
}
// VMotorOut(SIN16[currentCount-1]) ;
break;
case ACCELERATION:
if(currentCount==15)
currentCount=0;
else
++currentCount;
VMotorOut(SIN16[currentCount]) ;
++vAbsolutionPosition;
if(accDecCount==15)
{
vSoftTimer0=ACCTABLE[accDecCount]/250;
accDecCount=0;
vAccDecFlag=NORMALMOTION;
vPresetPosition=vPresetPosition-16;
}
else
{
vSoftTimer0=ACCTABLE[accDecCount]/250;
++accDecCount;
}
break;
case NORMALMOTION:
if(vPresetPosition!=vAbsolutionPosition)
{
if(currentCount==15)
currentCount=0;
else
++currentCount;
VMotorOut(SIN16[currentCount]) ;
++vAbsolutionPosition;
vSoftTimer0=-2000;
// vSoftTimer0=ACCDEC[accDecCount];
}
else
vAccDecFlag=DECELERATION;
break;
}
break;
}
case -1:
{
switch(vAccDecFlag)
{
default :break;
case PAUSE:
if(!(vPauseTime--))
{
vAccDecFlag=ACCELERATION;
vOrientFlag=0;
if( (vMulPointCount>=0)&&(vMulPointCount<=3))
{
vPresetPosition=VMulPoint[vMulPointCount];
vMulPointCount++;
}
else if( (vMulPointCount>=4)&&(vMulPointCount<=6))
{
vPresetPosition=VMulPoint[8-vMulPointCount];
vMulPointCount++;
}
else
{
vPresetPosition=VMulPoint[8-vMulPointCount];
vMulPointCount=0;
}
}
break;
case DECELERATION:
if(currentCount==0)
currentCount=15;
else
--currentCount;
VMotorOut(SIN16[currentCount]) ;
--vAbsolutionPosition;
if(accDecCount==15)
{
vSoftTimer0=DECTABLE[accDecCount]/250;
accDecCount=0;
vAccDecFlag=PAUSE;
vPauseTime=50;
VMotorOut(SIN16[currentCount]) ;
}
else
{
++accDecCount;
vSoftTimer0=DECTABLE[accDecCount]/250;
}
// VMotorOut(SIN16[currentCount+1]) ;
break;
case ACCELERATION:
if(currentCount==0)
currentCount=15;
else
--currentCount;
VMotorOut(SIN16[currentCount]) ;
--vAbsolutionPosition;
if(accDecCount==15)
{
vSoftTimer0=ACCTABLE[accDecCount]/250;
accDecCount=0;
vPresetPosition=vPresetPosition+16;
vAccDecFlag=NORMALMOTION;
}
else
{
vSoftTimer0=ACCTABLE[accDecCount]/250;
++accDecCount;
}
break;
case NORMALMOTION:
if(vPresetPosition!=vAbsolutionPosition)
{
if(currentCount==0)
currentCount=15;
else
--currentCount;
VMotorOut(SIN16[currentCount]) ;
--vAbsolutionPosition;
vSoftTimer0=-2000;
// vSoftTimer0=ACCDEC[accDecCount];
}
else
vAccDecFlag=DECELERATION;
break;
}
break;
}
}
break;
case SINGLEMOTION :
if(!vOrientFlag)
{
if(vPresetPosition>vAbsolutionPosition)
vOrientFlag=1;
else if(vPresetPosition==vAbsolutionPosition) TR2=0;
else
vOrientFlag=-1;
}
//
switch(vOrientFlag)
{
default:break;
case 1:
{
switch(vAccDecFlag)
{
default :break;
case DECELERATION:
if(currentCount==15)
currentCount=0;
else
++currentCount;
VMotorOut(SIN16[currentCount]) ;
++vAbsolutionPosition;
if(accDecCount==15)
{
vSoftTimer0=DECTABLE[accDecCount]/250;
accDecCount=0;
TR2=0;
vAccDecFlag=0;
vOrientFlag=0;
VMotorOut(SIN16[currentCount]) ;
}
else
{
vSoftTimer0=DECTABLE[accDecCount]/250;
++accDecCount;
}
// VMotorOut(SIN16[currentCount-1]) ;
break;
case ACCELERATION:
if(currentCount==15)
currentCount=0;
else
++currentCount;
VMotorOut(SIN16[currentCount]) ;
++vAbsolutionPosition;
if(accDecCount==15)
{
vSoftTimer0=ACCTABLE[accDecCount]/250;
accDecCount=0;
vAccDecFlag=NORMALMOTION;
vPresetPosition=vPresetPosition-16;
}
else
{
vSoftTimer0=ACCTABLE[accDecCount]/250;
++accDecCount;
}
break;
case NORMALMOTION:
if(vPresetPosition!=vAbsolutionPosition)
{
if(currentCount==15)
currentCount=0;
else
++currentCount;
VMotorOut(SIN16[currentCount]) ;
++vAbsolutionPosition;
vSoftTimer0=-2000;
// vSoftTimer0=ACCDEC[accDecCount];
}
else
vAccDecFlag=DECELERATION;
break;
}
break;
}
case -1:
{
switch(vAccDecFlag)
{
default :break;
case DECELERATION:
if(currentCount==0)
currentCount=15;
else
--currentCount;
VMotorOut(SIN16[currentCount]) ;
--vAbsolutionPosition;
if(accDecCount==15)
{
vSoftTimer0=DECTABLE[accDecCount]/250;
accDecCount=0;
TR2=0;
vAccDecFlag=0;
vOrientFlag=0;
VMotorOut(SIN16[currentCount]) ;
}
else
{
++accDecCount;
vSoftTimer0=DECTABLE[accDecCount]/250;
}
// VMotorOut(SIN16[currentCount+1]) ;
break;
case ACCELERATION:
if(currentCount==0)
currentCount=15;
else
--currentCount;
VMotorOut(SIN16[currentCount]) ;
--vAbsolutionPosition;
if(accDecCount==15)
{
vSoftTimer0=ACCTABLE[accDecCount]/250;
accDecCount=0;
vPresetPosition=vPresetPosition+16;
vAccDecFlag=NORMALMOTION;
}
else
{
vSoftTimer0=ACCTABLE[accDecCount]/250;
++accDecCount;
}
break;
case NORMALMOTION:
if(vPresetPosition!=vAbsolutionPosition)
{
if(currentCount==0)
currentCount=15;
else
--currentCount;
VMotorOut(SIN16[currentCount]) ;
--vAbsolutionPosition;
vSoftTimer0=-2000;
// vSoftTimer0=ACCDEC[accDecCount];
}
else
vAccDecFlag=DECELERATION;
break;
}
break;
}
}
break;
case STOPROTATION :
switch(vOrientFlag)
{
default :break;
case 1:
// case DECELERATION:
if(currentCount==15)
currentCount=0;
else
++currentCount;
VMotorOut(SIN16[currentCount]) ;
++vAbsolutionPosition;
if(accDecCount==15)
{
vSoftTimer0=DECTABLE[accDecCount]/250;
accDecCount=0;
TR2=0;
vAccDecFlag=0;
vOrientFlag=0;
VMotorOut(SIN16[currentCount]) ;
}
else
{
vSoftTimer0=DECTABLE[accDecCount]/250;
++accDecCount;
}
// VMotorOut(SIN16[currentCount-1]) ;
break;
case -1:
// case DECELERATION:
if(currentCount==0)
currentCount=15;
else
--currentCount;
VMotorOut(SIN16[currentCount]) ;
--vAbsolutionPosition;
if(accDecCount==15)
{
vSoftTimer0=DECTABLE[accDecCount]/250;
accDecCount=0;
TR2=0;
vAccDecFlag=0;
vOrientFlag=0;
VMotorOut(SIN16[currentCount]) ;
}
else
{
++accDecCount;
vSoftTimer0=DECTABLE[accDecCount]/250;
}
// VMotorOut(SIN16[currentCount+1]) ;
break;
}
break;
}
}
}
void horizonalmotor(void) interrupt TF2_VECTOR
{
static unsigned char currentCount=0;
static unsigned char accDecCount=0;
TF2=0;
switch(hRotationManner)
{
default:break;
case FREEMOTION:
{
switch(hOrientFlag)
{
default:break;
case 1:
{
switch(hAccDecFlag)
{
default :break;
case ACCELERATION:
if(currentCount==15)
currentCount=0;
else
++currentCount;
HMotorOut(SIN16[currentCount]) ;
if(hAbsolutionPosition==3999)
hAbsolutionPosition=0;
else
++hAbsolutionPosition;
if(accDecCount==15)
{
RCAPT2=ACCTABLE[accDecCount];
accDecCount=0;
hAccDecFlag=NORMALMOTION;
}
else
{
RCAPT2=ACCTABLE[accDecCount];
++accDecCount;
}
break;
case NORMALMOTION:
if(currentCount==15)
currentCount=0;
else
++currentCount;
HMotorOut(SIN16[currentCount]) ;
if(hAbsolutionPosition==3999)
hAbsolutionPosition=0;
else
++hAbsolutionPosition;
RCAPT2=-2000;
// RCAPT2=ACCDEC[accDecCount];
break;
}
break;
}
case -1:
{
switch(hAccDecFlag)
{
default :break;
case ACCELERATION:
if(currentCount==0)
currentCount=15;
else
--currentCount;
HMotorOut(SIN16[currentCount]) ;
if(hAbsolutionPosition==0)
hAbsolutionPosition=3999;
else
--hAbsolutionPosition;
if(accDecCount==15)
{
RCAPT2=ACCTABLE[accDecCount];
accDecCount=0;
hAccDecFlag=NORMALMOTION;
}
else
{
RCAPT2=ACCTABLE[accDecCount];
++accDecCount;
}
break;
case NORMALMOTION:
if(currentCount==0)
currentCount=15;
else
--currentCount;
HMotorOut(SIN16[currentCount]) ;
if(hAbsolutionPosition==0)
hAbsolutionPosition=3999;
else
--hAbsolutionPosition;
RCAPT2=-2000;
// RCAPT2=ACCDEC[accDecCount];
break;
}
break;
}
}
break;
}
case DOUBLEMOTION :
if(!hOrientFlag)
{
if(hPresetPosition>hAbsolutionPosition)
{
if((hPresetPosition-hAbsolutionPosition)<2000)
hOrientFlag=1;
else
hOrientFlag=-1;
}
// else if(hPresetPosition==hAbsolutionPosition) TR2=0;
else
{
if((hAbsolutionPosition-hPresetPosition)<2000)
hOrientFlag=-1;
else
hOrientFlag=1;
}
}
//
switch(hOrientFlag)
{
default:break;
case 1:
{
switch(hAccDecFlag)
{
default :break;
case PAUSE:
if(!(hPauseTime--))
{
hAccDecFlag=ACCELERATION;
if(hAbsolutionPosition==hPresetPosition1)
hPresetPosition=hPresetPosition2;
else
hPresetPosition=hPresetPosition1;
hOrientFlag=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -