为了账号安全,请及时绑定邮箱和手机立即绑定

程序如下,程序本身好使,能循迹,把他写成子程序给其他程序调用时候出现问题:

程序如下,程序本身好使,能循迹,把他写成子程序给其他程序调用时候出现问题:

C
拉莫斯之舞 2023-02-11 14:14:06
调用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 没有信号(黑线)为1switch(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;}}
查看完整描述

2 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

1、子程序不用写main函数。
2、每个程序只有一个main函数。(如果在类里看到了main函数那个不是通常意义上的main函数。只是一个名字叫做main的自定函数)。main函数会接受系统传入的参数。参数是固定的。(但是类里如果见到main函数,肯定是自己定义的参数)。

查看完整回答
反对 回复 2023-02-15
?
弑天下

TA贡献1818条经验 获得超8个赞

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

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


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

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

查看完整回答
反对 回复 2023-02-15
  • 2 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信