1、只要给Trig端一个大于10us的高电平信号便能使模块工作,然后要做就是等待回波并测其脉宽而已,脉宽时间相当于声波从发射到返回来回的时间,所以 距离=时间*声速/2。
#define UT_Trig PORTA_PA0 // 发送触发信号 超声波
#define UT_Echo PORTA_PA1 // 接收回响信号
uint distance; // 单位: mm
ulong UT_time;
//===================== 超声波测距 ========================//
void Distance()
{
/* 给控制端一个大于10us的脉冲信号 */
UT_Trig = 1;
Delay_us(160); //15us
UT_Trig = 0;
/* 等待接收端产生高电平并计时 */
while (!UT_Echo);
UT_time = 0;
while (UT_Echo);
distance = (int)(1.7 * UT_time);
}
//======================== 中断服务 =========================//
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0_ISR(void) //10us定时中断
{
++UT_time;
PITTF = 0x01;
}
#pragma CODE_SEG DEFAULT