首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

求大神啊(超声波测距有关问题)

2013-08-09 
求大神啊(超声波测距问题)我编写的超声波模块有问题啊,模块肯定是没有坏的,这是我的程序,求大神帮我看看哪

求大神啊(超声波测距问题)
我编写的超声波模块有问题啊,模块肯定是没有坏的,这是我的程序,求大神帮我看看哪有问题?
//超声波定时器
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最好仿真跟踪一下看是不是卡死在了这些死循环里

热点排行