📄 _io.c
字号:
*g_char_ptr = CN_CUTOPENLW;
g_thvalue = CNCUTTACCE[d_speed][d_counter*2];
g_tlvalue = CNCUTTACCE[d_speed][d_counter*2+1];
Delay_us(CN_10us);
*g_char_ptr = CN_CUTOPENHG;
for(;g_generalbit==TRUE;)
{} /* wait for Timer0 interrupt. */
g_generalbit=TRUE;
if(d_counter==0)
{
break;
}
}
TR0 = 0; /* stop the Timer0. */
}
g_char_ptr = (uchar xdata *)AD_CUMOTOR;
*g_char_ptr = CN_CUTCLOSHG; /* the cutter motor close direction. */
TH0 = CNCUTTACCE[d_speed][0];
TL0 = CNCUTTACCE[d_speed][1];
g_generalbit = TRUE;
TR0 = 1; /* start the Timer0. */
if(TRUE==resetok)
{
for(d_counter=0;d_counter<CN_RESETLIMIT;d_counter++) /* move cutter close, and catch the original point. */
{
g_char_ptr = (uchar xdata *)AD_CUMOTOR;
Reset_Watchdog();
*g_char_ptr = CN_CUTCLOSLW;
g_thvalue = CNCUTTACCE[d_speed][0];
g_tlvalue = CNCUTTACCE[d_speed][1];
Delay_us(CN_10us);
*g_char_ptr = CN_CUTCLOSHG;
if(AD_POSIN==CN_OVERZERO)
{
for(d_filter=0;d_filter<CN_FILTER;d_filter++)
{
if(AD_POSIN==CN_UNDERZERO)
{
d_filter = 0;
break;
}
}
if(d_filter>=CN_FILTER) /* by filter, the cutter is over zero truely. */
{ break; } /* break the open cutter move. */
}
for(;g_generalbit==TRUE;)
{} /* wait for Timer0 interrupt. */
g_generalbit=TRUE;
}
if(d_counter>=CN_RESETLIMIT)
{ resetok = FALSE; }
}
TR0 = 0; /* stop the Timer0. */
return resetok;
}
/***************************************************************************
NAME: Cutter_Openmax
FUNCTION: This procedure will open cutter to max position.
INPUTS: NONE
OUTPUTS: NONE
***************************************************************************/
void Cutter_Openmax()
{
uchar d_counter;
uchar d_filter;
uchar d_speed;
g_char_ptr = (uchar xdata *)(AD_CURPROG+AD_RUNSPEED);
d_speed = *g_char_ptr; /* get the current speed stage. */
AD_POSIN = 1; /* cutter position detect enable. */
g_char_ptr = (uchar xdata *)AD_CUMOTOR;
*g_char_ptr = CN_CUTOPENHG; /* the cutter motor open direction. */
TH0 = CNCUTTACCE[d_speed][0];
TL0 = CNCUTTACCE[d_speed][1];
g_generalbit = TRUE;
d_filter = 0;
TR0 = 1; /* start the Timer0. */
for(d_counter=0;d_counter<CN_RESETLIMIT;d_counter++)
{
g_char_ptr = (uchar xdata *)AD_CUMOTOR;
Reset_Watchdog();
*g_char_ptr = CN_CUTOPENLW;
if(d_counter<CNCUTACCSTEP)
{
g_thvalue = CNCUTTACCE[d_speed][d_counter*2];
g_tlvalue = CNCUTTACCE[d_speed][d_counter*2+1];
}
else
{
g_thvalue = CNCUTTACCE[d_speed][(CNCUTACCSTEP-1)*2];
g_tlvalue = CNCUTTACCE[d_speed][(CNCUTACCSTEP-1)*2+1];
}
Delay_us(CN_10us);
*g_char_ptr = CN_CUTOPENHG;
if(AD_POSIN==CN_UNDERZERO)
{
for(d_filter=0;d_filter<CN_FILTER;d_filter++)
{
if(AD_POSIN==CN_OVERZERO)
{
d_filter = 0;
break;
}
}
}
for(;g_generalbit==TRUE;)
{} /* wait for Timer0 interrupt. */
if(d_filter>=CN_FILTER) /* by filter, the cutter is under zero truely. */
{ break; } /* break the open cutter move. */
g_generalbit=TRUE;
}
for(d_counter=0;d_counter<CN_UNDERZERODIST;d_counter++)
{
g_char_ptr = (uchar xdata *)AD_CUMOTOR;
Reset_Watchdog();
*g_char_ptr = CN_CUTOPENLW;
if((CN_UNDERZERODIST-d_counter)<CNCUTACCSTEP)
{
g_thvalue = CNCUTTACCE[d_speed][(CN_UNDERZERODIST-d_counter-1)*2];
g_tlvalue = CNCUTTACCE[d_speed][(CN_UNDERZERODIST-d_counter-1)*2+1];
}
else
{
g_thvalue = CNCUTTACCE[d_speed][(CNCUTACCSTEP-1)*2];
g_tlvalue = CNCUTTACCE[d_speed][(CNCUTACCSTEP-1)*2+1];
}
Delay_us(CN_10us);
*g_char_ptr = CN_CUTOPENHG;
for(;g_generalbit==TRUE;)
{} /* wait for Timer0 interrupt. */
g_generalbit=TRUE;
}
TR0 = 0; /* stop the Timer0. */
}
/***************************************************************************
NAME: Dbmotor_Movedist
FUNCTION: This procedure will make move two wire motor.
INPUTS: move pulse, move direction.
OUTPUTS: NONE
***************************************************************************/
void Dbmotor_Movedist(uint d_dist, bit d_movedirect)
{
idata uint d_counter;
idata uint d_halfpulse;
idata uchar d_speed;
uchar d_filter;
g_char_ptr = (uchar xdata *)(AD_CURPROG+AD_RUNSPEED);
d_speed = *g_char_ptr; /* get the current wire move speed. */
g_char_ptr = (uchar xdata *)AD_WFMOTOR;
if(d_movedirect==CN_MOTFRONT)
{ *g_char_ptr = CN_DBMOTGOHG; } /* the wire motor go front direction. */
else
{ *g_char_ptr = CN_DBMOTBKHG; } /* the wire motor go back direction. */
TH0 = CNWIREACCE[d_speed][0];
TL0 = CNWIREACCE[d_speed][1];
d_halfpulse =(d_dist/2)+(d_dist%2);
g_generalbit = TRUE;
TR0 = 1; /* start the Timer0. */
for(d_counter=0;d_counter<d_dist;d_counter++)
{
g_char_ptr = (uchar xdata *)AD_WFMOTOR;
Reset_Watchdog();
if(d_movedirect==CN_MOTFRONT)
{ *g_char_ptr = CN_DBMOTGOLW; }
else
{ *g_char_ptr = CN_DBMOTBKLW; }
if(d_counter<d_halfpulse) /* the accelerate stage. */
{
if(d_counter<CNWIRESTEP)
{
g_thvalue = CNWIREACCE[d_speed][d_counter*2];
g_tlvalue = CNWIREACCE[d_speed][d_counter*2+1];
}
else
{
g_thvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2];
g_tlvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2+1];
}
}
else /* the decelerate stage. */
{
if((d_dist-d_counter)<CNWIRESTEP)
{
g_thvalue = CNWIREACCE[d_speed][(d_dist-d_counter-1)*2];
g_tlvalue = CNWIREACCE[d_speed][(d_dist-d_counter-1)*2+1];
}
else
{
g_thvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2];
g_tlvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2+1];
}
}
if(d_counter==CN_SHORTDELEN)
{
AD_LAMPIN = 1; /* lamp detect input enable. */
if(AD_LAMPIN==CN_NOWIRE)
{
for(d_filter=0;d_filter<CN_FILTER1;d_filter++)
{
if(AD_LAMPIN==CN_HAVEWIRE)
{
break;
}
}
if(d_filter==CN_FILTER1)
{
g_wireshort = TRUE; /* wire short. */
if(d_counter<d_dist-CNWIRESTEP)
{
d_counter = d_dist-CNWIRESTEP;
}
}
else
{
g_wireshort = FALSE; /* have wire. */
}
}
}
else
{
Delay_us(CN_10us);
}
if(d_movedirect==CN_MOTFRONT)
{ *g_char_ptr = CN_DBMOTGOHG; }
else
{ *g_char_ptr = CN_DBMOTBKHG; }
for(;g_generalbit==TRUE;)
{} /* wait for Timer0 interrupt. */
g_generalbit=TRUE;
}
TR0 = 0; /* stop the Timer0. */
}
/***************************************************************************
NAME: Frontmotor_Movedist
FUNCTION: This procedure will make move front wire motor.
INPUTS: move pulse, move direction.
OUTPUTS: NONE
***************************************************************************/
void Frontmotor_Movedist(uint d_dist, bit d_movedirect)
{
idata uint d_counter;
idata uint d_halfpulse;
idata uchar d_speed;
g_char_ptr = (uchar xdata *)(AD_CURPROG+AD_RUNSPEED);
d_speed = *g_char_ptr; /* get the current wire move speed. */
g_char_ptr = (uchar xdata *)AD_WFMOTOR;
if(d_movedirect==CN_MOTFRONT)
{ *g_char_ptr = CN_FRMOTGOHG; } /* the wire motor go front direction. */
else
{ *g_char_ptr = CN_FRMOTBKHG; } /* the wire motor go back direction. */
TH0 = CNWIREACCE[d_speed][0];
TL0 = CNWIREACCE[d_speed][1];
d_halfpulse =(d_dist/2)+(d_dist%2);
g_generalbit = TRUE;
TR0 = 1; /* start the Timer0. */
for(d_counter=0;d_counter<d_dist;d_counter++)
{
g_char_ptr = (uchar xdata *)AD_WFMOTOR;
Reset_Watchdog();
if(d_movedirect==CN_MOTFRONT)
{ *g_char_ptr = CN_FRMOTGOLW; }
else
{ *g_char_ptr = CN_FRMOTBKLW; }
if(d_counter<d_halfpulse) /* the accelerate stage. */
{
if(d_counter<CNWIRESTEP)
{
g_thvalue = CNWIREACCE[d_speed][d_counter*2];
g_tlvalue = CNWIREACCE[d_speed][d_counter*2+1];
}
else
{
g_thvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2];
g_tlvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2+1];
}
}
else /* the decelerate stage. */
{
if((d_dist-d_counter)<CNWIRESTEP)
{
g_thvalue = CNWIREACCE[d_speed][(d_dist-d_counter-1)*2];
g_tlvalue = CNWIREACCE[d_speed][(d_dist-d_counter-1)*2+1];
}
else
{
g_thvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2];
g_tlvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2+1];
}
}
Delay_us(CN_10us);
if(d_movedirect==CN_MOTFRONT)
{ *g_char_ptr = CN_FRMOTGOHG; }
else
{ *g_char_ptr = CN_FRMOTBKHG; }
for(;g_generalbit==TRUE;)
{} /* wait for Timer0 interrupt. */
g_generalbit=TRUE;
}
TR0 = 0; /* stop the Timer0. */
}
#if CN_BACKFORUP
/***************************************************************************
NAME: Backmotor_Movedist
FUNCTION: This procedure will make move back wire motor.
INPUTS: move pulse, move direction.
OUTPUTS: NONE
***************************************************************************/
void Backmotor_Movedist(uint d_dist, bit d_movedirect)
{
idata uint d_counter;
idata uint d_halfpulse;
idata uchar d_speed;
g_char_ptr = (uchar xdata *)(AD_CURPROG+AD_RUNSPEED);
d_speed = *g_char_ptr; /* get the current wire move speed. */
g_char_ptr = (uchar xdata *)AD_WFMOTOR;
if(d_movedirect==CN_MOTFRONT)
{ *g_char_ptr = CN_BKMOTGOHG; } /* the wire motor go front direction. */
else
{ *g_char_ptr = CN_BKMOTBKHG; } /* the wire motor go back direction. */
TH0 = CNWIREACCE[d_speed][0];
TL0 = CNWIREACCE[d_speed][1];
d_halfpulse =(d_dist/2)+(d_dist%2);
g_generalbit = TRUE;
TR0 = 1; /* start the Timer0. */
for(d_counter=0;d_counter<d_dist;d_counter++)
{
g_char_ptr = (uchar xdata *)AD_WFMOTOR;
Reset_Watchdog();
if(d_movedirect==CN_MOTFRONT)
{ *g_char_ptr = CN_BKMOTGOLW; }
else
{ *g_char_ptr = CN_BKMOTBKLW; }
if(d_counter<d_halfpulse) /* the accelerate stage. */
{
if(d_counter<CNWIRESTEP)
{
g_thvalue = CNWIREACCE[d_speed][d_counter*2];
g_tlvalue = CNWIREACCE[d_speed][d_counter*2+1];
}
else
{
g_thvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2];
g_tlvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2+1];
}
}
else /* the decelerate stage. */
{
if((d_dist-d_counter)<CNWIRESTEP)
{
g_thvalue = CNWIREACCE[d_speed][(d_dist-d_counter-1)*2];
g_tlvalue = CNWIREACCE[d_speed][(d_dist-d_counter-1)*2+1];
}
else
{
g_thvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2];
g_tlvalue = CNWIREACCE[d_speed][(CNWIRESTEP-1)*2+1];
}
}
Delay_us(CN_10us);
if(d_movedirect==CN_MOTFRONT)
{ *g_char_ptr = CN_BKMOTGOHG; }
else
{ *g_char_ptr = CN_BKMOTBKHG; }
for(;g_generalbit==TRUE;)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -