PxxxHxxxD 2017-09-08 03:09 采纳率: 50%
浏览 1182

避障小车不能正确工作

求助!为什么小车感应到超声波模块信号转向几次后就不能再转,怎么都没有反应了呢?

  • 写回答

3条回答 默认 最新

  • PxxxHxxxD 2017-09-08 03:10
    关注

    以下是程序

    #include#define uint unsigned int #define uchar unsigned charuchar num=10;uint distancez=0,distancey=0,t=0;sbit trigz=P1^2; //左边超声波模块sbit echoz=P1^3;//sbit zled=P1^6;//sbit zled_=P1^7;sbit trigy=P1^1; //右边超声波模块sbit echoy=P1^0;//sbit yled=P1^4;//sbit yled_=P1^5;sbit zq=P0^0 ; //左前sbit zh=P0^1; //左后sbit yq=P0^2; //右前sbit yh=P0^3; //右后void turnleft(){ zq=1;// zq=0; yq=0;}void turnright(){ yq=1;// yq=0; zq=0;}void run(){ zq=0; yq=0;}int initz() //左边离障碍物的距离{ trigz=0; echoz=0; t=0; //清楚计数器 trigz=1; //左边发出超声波 while(num>0)num--; trigz=0; while(!echoz); //发完 TR0=1; while(echoz); //计时,计算距离 ,关闭计数器 TR0=0; distancez=t/1.75 ; return distancez ;}int inity() //右边离障碍物的距离{ trigy=0; echoy=0; t=0; //清楚计数器 trigy=1; //右边发出超声波 while(num>0)num--; trigy=0; while(!echoy); //发完 TR0=1; while(echoy); //计时,计算距离 ,关闭计数器 TR0=0; distancey=t/1.75 ; return distancey ;}void timerinit(){ TH0=(65535-50)/256; TL1=(65535-50)%256; EA=1; ET0=1; } void main(){ while(1) { timerinit(); run(); initz(); inity(); while(distancez<20|distancey<20) { initz(); //障碍物在左边 if(distancez<20) { while(distancez<20) { turnleft(); initz(); } } run(); inity(); //障碍物在右边 if(distancey<20) { while(distancey<20) { turnright(); inity(); } } } run(); }}void Timer0(void) interrupt 1 //distance=t/1.75(cm){ TH0=(65535-50)/256; TL1=(65535-50)%256; t++;}

    评论

报告相同问题?

悬赏问题

  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题