光电开关和超声波小车。。。

2019-07-15 12:36发布

左右两个光电开关检测小车前方是否有障碍墙(光电开关用键控代替)。超声波让小车微调,走赛道的正中间。舵机控制小车前轮的左右转动(两个程序通过控制舵机左右蔽障),两个程序分开都能用,但和在一起后舵机不动了(keil软件提示没有警告和错误)。求大神看看我的程序是不是有哪里不对~~

PS:单片机用的是89c52.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
禾苗m
2019-07-16 11:22
舵机子程序:
#include <reg52.h>                //器件配置文件
#include <intrins.h>
#include "delay.h"
#include"count.h"
#include"duozhuan.h"

void Conut(void)
{
         time=TH0*256+TL0;
         TH0=0;
         TL0=0;
         S=(time*1.56672)/100;    //晶振11.0592算出来是CM
}

     void  StartModule()                          //启动模块
  {
          Trig=1;                                             //启动一次模块
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          Trig=0;
  }

/********************************************************/
void COMM(void)
{
             StartModule();
             while(!Echo);                //当Echo为零时等待
             TR0=1;                            //开启计数
             while(Echo);                        //当Echo为1计数并等待
             TR0=0;                                //关闭计数
         Conut();                        //计算
                 delay(80);                //80MS
                 if(S>50)
                 {
            rightweirun();
         }
                 if(S>120)
                 {
                   leftweirun();
                 }
}

一周热门 更多>