📄 main.c
字号:
inStep(GFinStep,GFinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
if((IO1PIN & K2) == 0) //往上的按钮按下
{
K2Flag = 1;
}
if(((IO1PIN & K2)>>24 == 1) & K2Flag == 1 & GFinStep > 0) //往上的按钮弹起
{
GFinStep--;
Motor(2,0,1,4);
K2Flag = 0;
inStep(GFinStep,GFinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
}
}
else
{
if(GFinStep < 99)
{
if((IO1PIN & K1) == 0) //往下的按钮按下
{
K1Flag = 1;
}
if(((IO1PIN & K1)>>25 == 1) & K1Flag == 1) //往下的按钮弹起
{
GFinStep++;
Motor(2,1,1,4);
K1Flag = 0;
inStep(GFinStep,GFinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
if((IO1PIN & K2) == 0) //往上的按钮按下
{
K2Flag = 1;
}
if(((IO1PIN & K2)>>24 == 1) & K2Flag == 1 & GFinStep > 0) //往上的按钮弹起
{
GFinStep--;
Motor(2,0,1,4);
K2Flag = 0;
inStep(GFinStep,GFinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
}
}
else
{
if(GFinStep < 99)
{
if((IO1PIN & K1) == 0) //往下的按钮按下
{
K1Flag = 1;
}
if(((IO1PIN & K1)>>25 == 1) & K1Flag == 1) //往下的按钮弹起
{
GFinStep++;
Motor(2,1,1,4);
K1Flag = 0;
inStep(GFinStep,GFinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
if((IO1PIN & K2) == 0) //往上的按钮按下
{
K2Flag = 1;
}
if(((IO1PIN & K2)>>24 == 1) & K2Flag == 1 & GFinStep > 0) //往上的按钮弹起
{
GFinStep--;
Motor(2,0,1,4);
K2Flag = 0;
inStep(GFinStep,GFinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
}
}
}
void CL() //对准清洗槽
{
M2Position_ini(); //上下电机初始化
M3Position_ini(); //左右电机初始化
Motor(3,0,80,4); //顺转,走固定80步
while((IO1PIN & M3P)>>21 == 1) //逆转,走到3不挡为止
{
Motor(3,1,1,4);
}
Motor(3,1,CleanHole,4); //逆转,走固定100步
Motor(2,1,80,4); //先向下走80步
while((IO1PIN & M2D)>>17 == 1) //往下,走到6不挡为止
{
Motor(2,1,1,4);
}
Motor(2,1,80,4); //再向下走80步
}
void CLin() //调进入深度
{
while(CLinFlag == 1)
{
ENABLE();
inStep(CLinStep,CLinStepF); //微调步数统计
USB_WriteEndpoint(3, 10, CLinStepF);//GenEpBuf); /* 发送10个字节到PC */
//usbserve(); /* 处理USB事件,如USB控制传输,USB总线复位等等 */
if(bEPPflags.bits.configuration == 1)
{
if(bEPPflags.bits.ep1_rxdone == 1)
{ /* 逻辑端点1收到数据 */
DISABLE();
bEPPflags.bits.ep1_rxdone = 0; /* 清除逻辑端点1收到数据标志 */
if(GenEpBuf[0]=='c' & GenEpBuf[1]=='l' & GenEpBuf[2]=='s' & GenEpBuf[3]=='t' & GenEpBuf[4]=='o' & GenEpBuf[5]=='p')
{
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
//if(GenEpBuf[6]=='#')
//{
// CLRStep = 0;
//}
//else if(GenEpBuf[7]=='#')
//{
// CLRStep = GenEpBuf[6] - 0x30;
//}
//else if(GenEpBuf[8]=='#')
//{
// CLRStep = (GenEpBuf[6] - 0x30) * 10 + (GenEpBuf[7] - 0x30);
//}
//else if(GenEpBuf[9]=='#')
//{
// CLRStep = (GenEpBuf[6] - 0x30) * 100 + (GenEpBuf[7] - 0x30) * 10 + (GenEpBuf[8] - 0x30);
//}
//
//USB_WriteEndpoint(3, 10, ReceiveOK);
CLinFlag = 0;
//Motor(2,0,CLRStep+30,4); //先往上多走30步
//while((IO1PIN & M2D)>>17 == 1) //往下,走到6不挡为止
//{
// Motor(2,1,1,4);
//}
//Motor(2,1,CLRStep,4);
//USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else
{
if(CLinStep < 200)
{
if((IO1PIN & K1) == 0) //往下的按钮按下
{
K1Flag = 1;
}
if(((IO1PIN & K1)>>25 == 1) & K1Flag == 1) //往下的按钮弹起
{
CLinStep++;
Motor(2,1,1,4);
K1Flag = 0;
inStep(CLinStep,CLinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, CLinStepF);//GenEpBuf); /* 发送10个字节到PC */
if((IO1PIN & K2) == 0) //往上的按钮按下
{
K2Flag = 1;
}
if(((IO1PIN & K2)>>24 == 1) & K2Flag == 1 & CLinStep > 0) //往上的按钮弹起
{
CLinStep--;
Motor(2,0,1,4);
K2Flag = 0;
inStep(CLinStep,CLinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, CLinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
}
}
else
{
if(CLinStep < 200)
{
if((IO1PIN & K1) == 0) //往下的按钮按下
{
K1Flag = 1;
}
if(((IO1PIN & K1)>>25 == 1) & K1Flag == 1) //往下的按钮弹起
{
CLinStep++;
Motor(2,1,1,4);
K1Flag = 0;
inStep(CLinStep,CLinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, CLinStepF);//GenEpBuf); /* 发送10个字节到PC */
if((IO1PIN & K2) == 0) //往上的按钮按下
{
K2Flag = 1;
}
if(((IO1PIN & K2)>>24 == 1) & K2Flag == 1 & CLinStep > 0) //往上的按钮弹起
{
CLinStep--;
Motor(2,0,1,4);
K2Flag = 0;
inStep(CLinStep,CLinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, CLinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
}
}
else
{
if(CLinStep < 200)
{
if((IO1PIN & K1) == 0) //往下的按钮按下
{
K1Flag = 1;
}
if(((IO1PIN & K1)>>25 == 1) & K1Flag == 1) //往下的按钮弹起
{
CLinStep++;
Motor(2,1,1,4);
K1Flag = 0;
inStep(CLinStep,CLinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, CLinStepF);//GenEpBuf); /* 发送10个字节到PC */
if((IO1PIN & K2) == 0) //往上的按钮按下
{
K2Flag = 1;
}
if(((IO1PIN & K2)>>24 == 1) & K2Flag == 1 & CLinStep > 0) //往上的按钮弹起
{
CLinStep--;
Motor(2,0,1,4);
K2Flag = 0;
inStep(CLinStep,CLinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, CLinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
}
}
}
void SD() //对准样品盘
{
M2Position_ini(); //上下电机初始化
M3Position_ini(); //左右电机初始化
M4Position_ini(); //盘电机初始化
Motor(3,0,80,4); //顺转,走固定80步
while((IO1PIN & M3P)>>21 == 1) //逆转,走到3不挡为止
{
Motor(3,1,1,4);
}
Motor(3,1,DiskNum01,4); //逆转,走固定380步
Motor(2,1,80,4); //先向下走80步
while((IO1PIN & M2D)>>17 == 1) //往下,走到6不挡为止
{
Motor(2,1,1,4);
}
Motor(2,1,40,4); //再向下走40步
}
void SDin() //调进入深度
{
while(SDinFlag == 1)
{
ENABLE();
inStep(SDinStep,SDinStepF); //微调步数统计
USB_WriteEndpoint(3, 10, SDinStepF);//GenEpBuf); /* 发送10个字节到PC */
//usbserve(); /* 处理USB事件,如USB控制传输,USB总线复位等等 */
if(bEPPflags.bits.configuration == 1)
{
if(bEPPflags.bits.ep1_rxdone == 1)
{ /* 逻辑端点1收到数据 */
DISABLE();
bEPPflags.bits.ep1_rxdone = 0; /* 清除逻辑端点1收到数据标志 */
if(GenEpBuf[0]=='s' & GenEpBuf[1]=='d' & GenEpBuf[2]=='s' & GenEpBuf[3]=='t' & GenEpBuf[4]=='o' & GenEpBuf[5]=='p')
{
USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
//if(GenEpBuf[6]=='#')
//{
// SDRStep = 0;
//}
//else if(GenEpBuf[7]=='#')
//{
// SDRStep = GenEpBuf[6] - 0x30;
//}
//else if(GenEpBuf[8]=='#')
//{
// SDRStep = (GenEpBuf[6] - 0x30) * 10 + (GenEpBuf[7] - 0x30);
//}
//else if(GenEpBuf[9]=='#')
//{
// SDRStep = (GenEpBuf[6] - 0x30) * 100 + (GenEpBuf[7] - 0x30) * 10 + (GenEpBuf[8] - 0x30);
//}
//
//USB_WriteEndpoint(3, 10, ReceiveOK);
SDinFlag = 0;
//Motor(2,0,SDRStep+30,4); //先往上多走30步
//while((IO1PIN & M2D)>>17 == 1) //往下,走到6不挡为止
//{
// Motor(2,1,1,4);
//}
//Motor(2,1,SDRStep,4);
//USB_WriteEndpoint(3, 10, ControlOK);//GenEpBuf); /* 发送10个字节到PC */
}
else
{
if(SDinStep < 200)
{
if((IO1PIN & K1) == 0) //往下的按钮按下
{
K1Flag = 1;
}
if(((IO1PIN & K1)>>25 == 1) & K1Flag == 1) //往下的按钮弹起
{
SDinStep++;
Motor(2,1,1,4);
K1Flag = 0;
inStep(SDinStep,SDinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, SDinStepF);//GenEpBuf); /* 发送10个字节到PC */
if((IO1PIN & K2) == 0) //往上的按钮按下
{
K2Flag = 1;
}
if(((IO1PIN & K2)>>24 == 1) & K2Flag == 1 & SDinStep > 0) //往上的按钮弹起
{
SDinStep--;
Motor(2,0,1,4);
K2Flag = 0;
inStep(SDinStep,SDinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, SDinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
}
}
else
{
if(SDinStep < 200)
{
if((IO1PIN & K1) == 0) //往下的按钮按下
{
K1Flag = 1;
}
if(((IO1PIN & K1)>>25 == 1) & K1Flag == 1) //往下的按钮弹起
{
SDinStep++;
Motor(2,1,1,4);
K1Flag = 0;
inStep(SDinStep,SDinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, SDinStepF);//GenEpBuf); /* 发送10个字节到PC */
if((IO1PIN & K2) == 0) //往上的按钮按下
{
K2Flag = 1;
}
if(((IO1PIN & K2)>>24 == 1) & K2Flag == 1 & SDinStep > 0) //往上的按钮弹起
{
SDinStep--;
Motor(2,0,1,4);
K2Flag = 0;
inStep(SDinStep,SDinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, SDinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
}
}
else
{
if(SDinStep < 200)
{
if((IO1PIN & K1) == 0) //往下的按钮按下
{
K1Flag = 1;
}
if(((IO1PIN & K1)>>25 == 1) & K1Flag == 1) //往下的按钮弹起
{
GFinStep++;
Motor(2,1,1,4);
K1Flag = 0;
inStep(GFinStep,GFinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, SDinStepF);//GenEpBuf); /* 发送10个字节到PC */
if((IO1PIN & K2) == 0) //往上的按钮按下
{
K2Flag = 1;
}
if(((IO1PIN & K2)>>24 == 1) & K2Flag == 1 & SDinStep > 0) //往上的按钮弹起
{
SDinStep--;
Motor(2,0,1,4);
K2Flag = 0;
inStep(SDinStep,SDinStepF); //微调步数统计
//USB_WriteEndpoint(3, 10, GFinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
USB_WriteEndpoint(3, 10, SDinStepF);//GenEpBuf); /* 发送10个字节到PC */
}
}
}
}
////////////////////////////////////////////////////////////////
void Clean() //清洗
{
int i;
if(SetFlag == 1)
{
//CL(); //对准清洗槽
//Motor(2,1,SetCLStep,4); //先向下走SetCLStep步,进入清洗槽
//UART1_SendStr(PumpIniQ); //向串口发送字符串,泵初始化
//DelayNS(200); //延时
//UART1_SendStr(PumpCln);
//DelayNS(900); //延时
//UART1_SendStr(PumpIniS); //向串口发送字符串,泵初始化
//DelayNS(800); //延时
CL(); //对准清洗槽
Motor(2,1,SetCLStep,4); //向下走SetCLStep步,进入清洗槽
UART1_SendStr(PumpIniQ); //向串口发送字符串,泵初始化
DelayNS(800); //延时
for(i=0;i<OlnyCleanNum;i++)
{
UART1_SendStr(PumpCln);
DelayNS(900); //延时
UART1_SendStr(PumpCln);
DelayNS(900); //延时
}
UART1_SendStr(PumpIni); //向串口发送字符串,泵初始化
DelayNS(800); //延时
M2Position_ini(); //往上走到初始位置
OlnyCleanNum = 0;
}
else
{
USB_WriteEndpoint(3, 10, NoSet);//GenEpBuf); /* 发送10个字节到PC */
}
}
void MoveDisk(int disknum) //走杯号
{
int i;
if(DiskNumNow == 0) //如果一开机盘没有初始化过
{
M4Position_ini(); //盘电机初始化
}
if(disknum > 0)
{
if(disknum < 21) //1~20号杯
{
if(DiskNumNow < 21)
{
if((disknum - DiskNumNow) > 0)
{
for(i=0;i<(disknum - DiskNumNow);i++)
{
if((IO1PIN & M4D)>>20 == 0)//正好对着光耦2了(为了接下来的“逆转,走到2不挡为止”顺利进行)
{
if((60-CDiskStep) >= 0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -