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

来源:学生作业帮助网 编辑:作业帮 时间:2024/08/11 05:36:41
超声波测距,测得的数据一直保持不变.超声波发射是通过74ls04,接受是通过CX20106A,我每次发射了超声波就立刻打开定时器计时,在延时一小段时间才打开外部中断,在外部中断中读出定时器的值,
xTMOQ+dCKhҪX.MCb)I4A(G@3s߼Yzghfs9(mF!9/VIZֵswHjY ]NHFH^1Eڍ?./O֏A9c OD+[>Z7"$$ 0EkBB<[vO(Tx6sg$eՊHf~*mVm a CFQ A9OUlPc]͕d pn{Cn)bڽ`TDhIf!juM$˛NѮ>0Ǎ~:3bhؾj?~>͔0"8-۰vE͝ꕅS#;8X4M'q;U驮H񦓴 f?BCaƅ~ {_bm ǍNb$eb+b3 xFN"d։4y'dX XO< OgU68鞻@Ĵd[;[dRnK!0s5 S߽8Hd$Eck]Tw3'yYB4Ad}q)Z 4eD3K"RvwgVְ

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