📄 main.c
字号:
if(n>0)
{
for(;n>0;n--)
{
meterright(1); //右电机下拉
}
}
else if(n<0)
{
n=n*(-1);
for(;n>0;n--)
{
meterlift(1); //右电机上拉
}
}
}
else if(n>0&m>0)//两边向物体加绳子
{
if(n>=m)
{
mn=(float)(n)/(float)(m);
ms=0;
mz=0;
for(i=0;i<m;i++)
{
ms=ms+mn-mz;
mz=(int)(ms+0.0001);
meterright(( unsigned int )(mz)); //右电机线下放1CM
meterdergeeright(1); //左电机线下拉1CM
*P_Watchdog_Clear=0x0001;
}
}
else if(n<m)
{
mn=(float)(m)/(float)(n);
ms=0;
mz=0;
for(i=0;i<n;i++)
{
ms=ms+mn-mz;
mz=(int)(ms+0.0001);
meterdergeeright(( unsigned int )(mz)); //左电机线下拉1CM
meterright(1); //右电机线下放1CM
*P_Watchdog_Clear=0x0001;
}
}
}
//-------------------------------------------------------------------
else if(n<0&m<0) //物体两边都减绳子
{
n=-1*n;
m=-1*m;
if(n>=m)
{
mn=(float)(n)/(float)(m);
ms=0;
mz=0;
for(i=0;i<m;i++)
{
ms=ms+mn-mz;
mz=(int)(ms+0.0001);
meterlift(( unsigned int )(mz)); //右电机线下放1CM
meterdergeelift(1); //右电机线上拉1CM
*P_Watchdog_Clear=0x0001;
}
}
else if(n<m)
{
mn=(float)(m)/(float)(n);
ms=0;
mz=0;
for(i=0;i<n;i++)
{
ms=ms+mn-mz;
mz=(int)(ms+0.0001);
meterdergeelift(( unsigned int )(mz)); //左电机线下拉1CM
meterlift(1); //右电机线下放1CM
*P_Watchdog_Clear=0x0001;
}
}
}
//----------------------------------------------------------------------
else if(n>0&m<0)
{
m=-1*m;
if(n>=m)
{
mn=(float)(n)/(float)(m);
ms=0;
mz=0;
for(i=0;i<m;i++)
{
ms=ms+mn-mz;
mz=(int)(ms+0.0001);
meterright(( unsigned int )(mz)); //右电机线下放1CM
meterdergeelift(1); //左电机线下拉1CM
*P_Watchdog_Clear=0x0001;
}
}
else if(n<m)
{
mn=(float)(m)/(float)(n);
ms=0;
mz=0;
for(i=0;i<n;i++)
{
ms=ms+mn-mz;
mz=(int)(ms+0.0001);
meterdergeelift(( unsigned int )(mz)); //左电机线下拉1CM
meterright(1); //右电机线下放1CM
*P_Watchdog_Clear=0x0001;
}
}
}
else if(n<0&m>0)
{
n=-1*n;
if(n>=m)
{
mn=(float)(n)/(float)(m);
ms=0;
mz=0;
for(i=0;i<m;i++)
{
ms=ms+mn-mz;
mz=(int)(ms+0.0001);
meterlift(( unsigned int )(mz)); //右电机线下放1CM
meterdergeeright(1); //左电机线下拉1CM
*P_Watchdog_Clear=0x0001;
}
}
else if(n<m)
{
mn=(float)(m)/(float)(n);
ms=0;
mz=0;
for(i=0;i<n;i++)
{
ms=ms+mn-mz;
mz=(int)(ms+0.0001);
meterdergeeright(( unsigned int )(mz)); //左电机线下拉1CM
meterlift(1); //右电机线下放1CM
*P_Watchdog_Clear=0x0001;
}
}
//----------------------------------------------------------------------
}
}
void delay(int i) //延时程序,i是参数 当i=1时 延时1ms
{ int j;
for(;i>0;i--)
for(j=0;j<32;j++)
{
*P_Watchdog_Clear=0x0001;
}
}
void first()
{
__asm("int off");
UART_Init();
*P_INT_Ctrl=C_IRQ5_2Hz;
*P_TimeBase_Clear=0x0000;
*P_INT_Clear = 0xffff; //先清一下中断标志
__asm("int irq");
}
int main()
{
SP_Init_IOA(0xfff0,0x00f0,0xfff0);
SP_Init_IOB(0xf40f,0xf48f,0xf40f); //IOB7输入,IOB10输出 初始化为高电平
*P_SystemClock=0x000b; //24.576 /8 强振
initlcm(); //初始化液晶
SendCMD(0x0001); //清屏
SendCMD(0x81); display("悬挂运动控制");
SendCMD(0x92); display("控制台");
__asm("int off");
UART_Init();
__asm("int irq");
n=0;
m=0;
KeyFlag = NoKey;
while(1)
{
if(round==1)
{
round=0;
//无线控制画园
}
F_Key_Scan();
*P_Watchdog_Clear=C_WDTCLR;
while(KeyFlag == HaveKey)
{
KeyVal=F_Get_Key();
KeyFlag = NoKey;
////////////////////////////////////////////////////////////////////////////////////
if(KeyVal==15) //100cm确认键
{
SendCMD(0x0001); //清屏
SendCMD(0x82); display("起点坐标值");
SendCMD(0x90); display("X: "); dis_12232num(xb);
SendCMD(0x94); display("Y: "); dis_12232num(yb);
cot=cot+1;
if(cot==2)
{
cot=0;
SendCMD(0x0001); //清屏
SendCMD(0x82); display("走曲线!");
first(); //开 2Hz中断计时
hunderd();
__asm("int off");
alltime=alltime/2;
PlayRespond(12);
Playsoundnum(alltime);
PlayRespond(13);
}
delay(400);
keyadd=0;
KeyVal=0;
SendCMD(0x0001); //清屏
SendCMD(0x82); display("曲线走完!");
}
////////////////////////////////////////////////////////////////////////////////////
if(KeyVal==14) //画园
{
SendCMD(0x0001); //清屏
SendCMD(0x81); display("圆心坐标值");
SendCMD(0x90); display("X: "); dis_12232num(xb);
SendCMD(0x94); display("Y: "); dis_12232num(yb);
// sendsixteenbit(xb); //串口发送数据
// delay(100);
// dis_12232num(yb);
cot=cot+1;
if(cot==2)
{
cot=0;
circlex=xb;
circley=yb;
first(); //开 2Hz中断计时
roundcycle();
__asm("int off");
alltime=alltime/2;
PlayRespond(12);
Playsoundnum(alltime);
PlayRespond(13);
SendCMD(0x0001); //清屏
while(1)
{
*P_Watchdog_Clear=C_WDTCLR; //清看门狗
SendCMD(0x80); display("表演完毕 ***");
SendCMD(0x93); display("谢谢观看!");
}
}
delay(400);
keyadd=0;
KeyVal=0;
/* for(j=0;j<20;j++)
{
m=roundx[j];
n=roundy[j];
go();
}*/
}
////////////////////////////////////////////////////////////////////////////////////
if(KeyVal==13) //黑线
{
while(1)
{
*P_Watchdog_Clear=C_WDTCLR;
System_ServiceLoop();
if(keyadd==1)
meterdergeelift(1); //右电机上拉
else
meterlift(1); //左电机上拉
}
}
////////////////////////////////////////////////////////////////////////////////////
if(KeyVal==10) //按数组走黑白线
{
SendCMD(0x0001); //清屏
SendCMD(0x82); display("GO。。。");
severdata=severdata-1;
black();
SendCMD(0x0001); //清屏
SendCMD(0x82); display("STOP。。。");
}
/////////////////////////////////////////
if(KeyVal==11) //设定数组
{
SendCMD(0x0001); //清屏
SendCMD(0x80);
dis_12232num(starx[0]);
display(",");
dis_12232num(stary[0]);
display(" ");
dis_12232num(starx[1]);
display(",");
dis_12232num(stary[1]);
display(" ");
dis_12232num(starx[2]);
display(",");
dis_12232num(stary[2]);
if(cot==0)
{
SendCMD(0x0001); //清屏
SendCMD(0x80); display("输入坐标数");
SendCMD(0x90); dis_12232num(keyadd);
severdata=keyadd;
}
else
{
if(shuzuchang==0)
{
shuzuchang=1;
starx[adxnu]=keyadd;
adxnu=adxnu+1;
}
else
{
shuzuchang=0;
stary[adynu]=keyadd;
adynu=adynu+1;
}
}
cot=cot+1;
delay(400);
keyadd=0;
KeyVal=0;
}
//////////////////////////////////////////////////////////////////////
if(KeyVal==12) //从原点到设定值坐标
{
SendCMD(0x0001); //清屏
SendCMD(0x81); display("终点坐标值");
SendCMD(0x90); display("X: "); dis_12232num(xb);
SendCMD(0x94); display("Y: "); dis_12232num(yb);
// sendsixteenbit(xb); //串口发送数据
// delay(100);
// dis_12232num(yb);
cot=cot+1;
if(cot==2)
{
cot=0;
setx=xb;
sety=yb;
first(); //开 2Hz中断计时
ooo();
__asm("int off");
alltime=alltime/2;
PlayRespond(12);
Playsoundnum(alltime);
PlayRespond(13);
SendCMD(0x0001); //清屏
SendCMD(0x81); display("已达设定点");
SendCMD(0x95); display("谢谢!");
}
delay(400);
keyadd=0;
KeyVal=0;
}
////////////////////////////////////////////////////////////////////////////////////
else
{
keyadd=(keyadd*10+KeyVal);
if(cot==0)
{
SendCMD(0x0001); //清屏
SendCMD(0x80); display("请输入X: ");
SendCMD(0x90); dis_12232num(keyadd);
xb=keyadd;
}
if(cot==1)
{
SendCMD(0x0001); //清屏
SendCMD(0x80); display("请输入Y: ");
SendCMD(0x90); dis_12232num(keyadd);
yb=keyadd;
}
else
{
SendCMD(0x0001); //清屏
SendCMD(0x80); dis_12232num(shuzuchang);
SendCMD(0x90); dis_12232num(keyadd);
delay(200);
}
delay(400); //消除连续按键
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -