超声波测距,测得的数据一直保持不变.超声波发射是通过74ls04,接受是通过CX20106A,我每次发射了超声波就立刻打开定时器计时,在延时一小段时间才打开外部中断,在外部中断中读出定时器的值,

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 16:42:57

超声波测距,测得的数据一直保持不变.超声波发射是通过74ls04,接受是通过CX20106A,我每次发射了超声波就立刻打开定时器计时,在延时一小段时间才打开外部中断,在外部中断中读出定时器的值,
超声波测距,测得的数据一直保持不变.
超声波发射是通过74ls04,接受是通过CX20106A,我每次发射了超声波就立刻打开定时器计时,在延时一小段时间才打开外部中断,在外部中断中读出定时器的值,经过计算显示出数据,调试发现,那个延时的时间才决定了这个定时器的值,
我把超声波测距的程序附在下方:
void CSB_CJ()
{
unsigned int i;
TR0=0; //超声波回波时间的计时
TH0=0; //定时器的时间清零
TL0=0;
RX=1; //超声波接收端(CX20106A的第七脚)
delay_nus(30);
CSBF(); //发射40KHz超声波 通过汇编写的
TX=1; //超声波发送端,发完之后拉高
TR0=1;//启动计时
i=CSB_DEID; //这是个延时 就他影响了定时器的计时时间
delay_nus(i);
EX1=1; //开外中断,中断中读定时器的时间 同时在中断中关闭定时器和外中断
}

超声波测距,测得的数据一直保持不变.超声波发射是通过74ls04,接受是通过CX20106A,我每次发射了超声波就立刻打开定时器计时,在延时一小段时间才打开外部中断,在外部中断中读出定时器的值,
感觉应该是信号的问题.首先要观察信号是否正常.然后再看软件.