c语言子程序的写法,子函数main函数写哪,还用写吗

如上问,程序如下,程序本身好使,能循迹,把他写成子程序给其他程序调用时候出现问题:调用xunji那块不好使,而调用其他转弯啦,直走啦,停止啦,都可以,为啥循迹不好使呢,请... 如上问,程序如下,程序本身好使,能循迹,把他写成子程序给其他程序调用时候出现问题:调用xunji那块不好使,而调用其他转弯啦,直走啦,停止啦,都可以,为啥循迹不好使呢,请帮我分析一下,谢谢,可以加分xunji()本来是main()的,然后while(1)我也去掉了。。
字数有限制,只能上传一部分程序
// #include <AT89X52.h>
/************************************************************************/
void delay1(unsigned int k) //延时函数
{
unsigned int x,y;
for(x=0;x<k;x++)
for(y=0;y<2000;y++);
}
/************************************************************************/
void run(void) //前进函数
{
push_val_left =2; //PWM 调节参数1-10 1为最慢,10是最快 改这个值可以改变其速度
push_val_right =2; //PWM 调节参数1-10 1为最慢,10是最快 改这个值可以改变其速度
Left_moto_go ; //左电机前进
Right_moto_go ; //右电机前进
}
/***************************************************/
void xunji(void)
{

TMOD=0X01;
TH0= 0XF8; //1ms定时
TL0= 0X30;
TR0= 1;
ET0= 1;
EA = 1;
//while(1) /*无限循环*/

//四路寻迹传感器有信号(白线)为0 没有信号(黑线)为1
switch(P0&0x0f)
{
case 0x00: // 全部没有压线,直转
run();
break;
case 0x01: // 右压线,左转
left();
delay1(2);
break;
case 0x02: // 右压线,左转
left();
delay1(2);
break;

case 0x04: // 左压线,右转
right();
delay1(2); //转向延时
break;

case 0x08: // 左压线,右转
right();
delay1(2); //转向延时
break;
case 0x0f: //
stop();
delay1(6);
break;
default:
break;
}

}
展开
 我来答
tattackor
2015-10-26 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:831万
展开全部
1、子程序不用写main函数。
2、每个程序只有一个main函数。(如果在类里看到了main函数那个不是通常意义上的main函数。只是一个名字叫做main的自定函数)。main函数会接受系统传入的参数。参数是固定的。(但是类里如果见到main函数,肯定是自己定义的参数)。
一生吥胜
2013-11-13 · TA获得超过208个赞
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:130万
展开全部

大致看了下,LZ的意思是想在自己的main()函数里调用xunji函数,然后本来xunji函数有个while死循环的,你不想再子函数里加,是不?

如果是这样的话,你可以在你main()函数里使用while循环。类似这样:

int main(void)
{
    while(1)
    {
        if(/*True*/)
            break;
        xunji();
    }
}

或者你最好自己改下子函数的逻辑咯。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暴秋颖g3
2013-11-12 · 超过14用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:30.5万
展开全部
你建的工程只能有一个main()
在你有main() 的那文件 声明 你要调用的子程序文件名
追问
有声明了的,我用#include,我也知道是不能有两个main(),可是在改这个被调用的子程序,就一直不好使,为啥呢,子程序加上while(1)好使,可是我不想要他在这里死循环,咋改呢?
追答
在main()所在的文件下声明你要调的子函数的文件名 然后再在main()中调用子函数
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式