求大神啊(超声波测距问题)
我编写的超声波模块有问题啊,模块肯定是没有坏的,这是我的程序,求大神帮我看看哪有问题?
//超声波定时器
void initialize()
{
TMOD=0x01;//定时器0方式1
TH0=(65536-290)/256;//15us
TL0=(65536-290)%256;//15us
EA=1;
ET0=1;
PT0=1;
//TR0=1;
}
void send() interrupt 1 //超声波的定时器
{
TH0=(65536-400)/256;//588us
TL0=(65536-400)%256;//
//距离大概为10cm
if(Echo==0)
{
LED=0;
light=1;//标志,表示到达警告值,需要弹出警告
}
while(Echo==1);//保证出定时器的时候是低电平
TR0=0;
}
void main()
{
uint sum=0;
uint num=0;
Trig=0;
Echo=0;
light=0;
//SerialInit();//串口初始化
NRF24L01Int();//NRF初始化
initialize();
Trig=1;
DelayUs2x(5);
Trig=0;
TR0=1;//启动
while(1)
{
if(num>4)
{
Trig=1;
DelayUs2x(5);
Trig=0;
TR0=1;//启动
}
if(light==1)
{
DisplayLattice();
LED=1;
}
if(k1==160)//这里说明一下,160是DisplayLattice()运行完成的标志
{
light=k1=0;
//LED=1;
}
NRFSetRXMode();//设置为接收模式
GetDate();//已添加数据处理转存
Display();
num++;//这个累计到4大概为70ms,当大于70ms时发送超声波
}
}
[解决办法]
while(Echo==1);//保证出定时器的时候是低电平
没有细看,看了大概流程
LZ最好仿真跟踪一下看是不是卡死在了这些死循环里