49 lines
1.0 KiB
C
49 lines
1.0 KiB
C
|
#include <ultrasound.h>
|
|||
|
#include "intrins.h"
|
|||
|
|
|||
|
sbit Tx = P1^0;
|
|||
|
sbit Rx = P1^1;
|
|||
|
|
|||
|
void Delay12us() //@12.000MHz
|
|||
|
{
|
|||
|
unsigned char i;
|
|||
|
|
|||
|
_nop_();
|
|||
|
_nop_();
|
|||
|
i = 38;
|
|||
|
while (--i);
|
|||
|
}
|
|||
|
|
|||
|
void Ut_Wave_Init() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>8<EFBFBD><38>40Mhz<68>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>ź<EFBFBD>
|
|||
|
{
|
|||
|
unsigned char i;
|
|||
|
for(i=0; i<8; i++)
|
|||
|
{
|
|||
|
Tx = 1;
|
|||
|
Delay12us();
|
|||
|
Tx = 0;
|
|||
|
Delay12us();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
unsigned char Ut_Wave_Data() //超声波距离读取函数
|
|||
|
{
|
|||
|
unsigned int time;//时间储存变量
|
|||
|
CMOD = 0x00;//配置PCA工作模式
|
|||
|
CH = CL = 0;//复位计数值 等待超声波信号发出
|
|||
|
Ut_Wave_Init();//发送超声波信号
|
|||
|
CR = 1;//开始计时
|
|||
|
while((Rx == 1) && (CF == 0));//等待接受返回信号或者定时器溢出
|
|||
|
CR = 0;//停止计时
|
|||
|
if(CF == 0) //定时器没有溢出
|
|||
|
{
|
|||
|
time = CH << 8 | CL;//读取当前时间
|
|||
|
return (time * 0.017);//返回距离值
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
CF = 0;//清除溢出标志位
|
|||
|
return 0;
|
|||
|
}
|
|||
|
}
|