目前超声波模块代码涉及到两个定时器,现在智能车能够的就只有一个定时器,能改吗

现在小车在蓝牙使用超声波避障时,蓝牙就无法控制小车了,想请问一下怎么改成一个定时器使用。现在电机使用了TH0,蓝牙使用了TH2。想问一下怎么修改这个代码才能使超声波模块正常运作 

#include <REG52.H>

#include <intrins.h>
#include"motor.h"
sbit  RX = P2^0;
sbit TX = P2^1;
sbit DU  = P2^6;   //数码管段选
sbit WE  = P2^7;   //数码管位选
unsigned int  time=0;
unsigned int  timer=0;
unsigned char posit=0;
unsigned long S=0;
bit      flag =0;
unsigned char const discode[] ={ 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F,0x6F,0x40,0x00/*-*/};
unsigned char const positon[4]={ 0xfe,0xfd,0xfb,0xf7};
unsigned char disbuff[4]	   ={ 0,0,0,0,};
/********************************************************/
    void Display111(void)				 //扫描数码管
	{
	DU = 0;	
	 if(posit==0)
	 {P0=(discode[disbuff[posit]]);}
	 else
	 {P0=discode[disbuff[posit]];}
	 DU = 1;
	 DU = 0;
	 WE = 0;
	  P0=positon[posit];
	  WE=1;
	  WE=0;
	  if(++posit>=4)
	  posit=0;
	}
	void delayssms(unsigned char i)
{
  unsigned char j,k; 
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}

/********************************************************/
    void Conut(void)
	{
	 time=TH0*256+TL0;
	 TH0=0;
	 TL0=0;
	
	 S=(float)(time*1.085)*0.17;     //算出来是MM
	 if((S>=7000)||flag==1) //超出测量范围显示“-”
	 {	 
	  flag=0;
	  disbuff[0]=10;	   //“-”
	  disbuff[1]=10;	   //“-”
	  disbuff[2]=10;	   //“-”
	  disbuff[3]=10;	   //“-”
	 }
	 else
	 {
	  disbuff[0]=S/1000;
	  disbuff[1]=S%1000/100;
	  disbuff[2]=S%100/10;
	  disbuff[3]=S%10;
	 }
	}
/********************************************************/
     void zd0() interrupt 1 		 //T0中断用来计数器溢出,超过测距范围
  {
    flag=1;							 //中断溢出标志
  }
/********************************************************/
   void  zd3()  interrupt 3 		 //T1中断用来扫描数码管和计800MS启动模块
  {
	 TH1=0xf8;
	 TL1=0x30;
	 Display111();
	 timer++;
	 if(timer>=400)
	 {
	  timer=0;
	  TX=1;			                //800MS  启动一次模块
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_();
	  _nop_(); 
	  _nop_(); 
	  _nop_(); 
	  _nop_();
	  TX=0;
	 } 
  }
/*********************************************************/

	void  chaoshengbo(  void  )

  {  
    TMOD=0x11;		   //设T0,T1为方式1定时模式,GATE=1;
	TH0=0;
	TL0=0;          
	TH1=0xf8;		   //2MS定时
	TL1=0x30;
	ET0=1;             //允许T0中断
	ET1=1;			   //允许T1中断
	TR1=1;			   //开启定时器1
	EA=1;			   //开启总中断

	while(1)
	{
	 while(!RX);		//当RX(ECHO信号回响)为零时等待
	 TR0=1;			    //开启计数
	 while(RX);			//当RX为1计数并等待
	 TR0=0;				//关闭计数
     Conut();			//计算
	}
	}
 void chaoshengbo1()
{ 	 
chaoshengbo();
 if(S<30)
 {
// ENA=1;
// ENB=1;
//  out1=1;
//   out2=1;
//   out3=1;
//   out4=1;
 STOP();
 houtui(50,50);
 delayssms(5000);
 delayssms(5000);
 delayssms(5000);
 delayssms(5000);
 delayssms(5000);
 delayssms(5000);
 delayssms(5000);
 delayssms(5000);
// delayssms(5000);
//  delayssms(5000);
// delayssms(5000);
// delayssms(5000);
// delayssms(5000);
 Turnlef(80,80);
// delayssms(1000);
// STOP2();
 }
 else
 {
 GO(40,40);
 delayssms(30);
 }
  }
    

 

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。