今天,在阅读关于HC-SR04超声波测距模块的51单片机程序时,比对相应参考资料,发现一个矛盾的地方,一时间想了好久,才有了一点眉目,特此记录。
主函数部分代码如下:
while(1)
{
StartModule();
while (!gEcho); // 当RX为零时等待
TR0 = 1; // 开启计数
while (gEcho); // 当RX为1计数并等待
TR0 = 0; // 关闭计数
MesureDistance(); // 计算距离并显示
delay100ms(); // 以100ms为测距周期
}
而用户手册上说:
即有信号返回才输出高电平信号。
这句话的意思很显然表示,如果没有信号返回,就不输出高电平。那么程序中“while (!gEcho);”,必然一直等