55 lines
939 B
C
55 lines
939 B
C
|
#include "Ultrasonic.h"
|
|||
|
#include "intrins.h"
|
|||
|
|
|||
|
sbit Tx = P1 ^ 0;
|
|||
|
sbit Rx = P1 ^ 1;
|
|||
|
void Delay12us(void) //@12.000MHz
|
|||
|
{
|
|||
|
unsigned char data i;
|
|||
|
|
|||
|
_nop_();
|
|||
|
_nop_();
|
|||
|
i = 33;
|
|||
|
while (--i)
|
|||
|
;
|
|||
|
}
|
|||
|
|
|||
|
void Ut_Wave_Init()
|
|||
|
{
|
|||
|
unsigned char i;
|
|||
|
// <20><><EFBFBD><EFBFBD>8<EFBFBD><38>40kHz<48>ķ<EFBFBD><C4B7><EFBFBD>
|
|||
|
// f=40kHz->T=1/f=0.000025s=25us
|
|||
|
// 12.5us 1 12.5us 0
|
|||
|
for (i = 0; i < 8; i++)
|
|||
|
{
|
|||
|
Tx = 1;
|
|||
|
Delay12us();
|
|||
|
Tx = 0;
|
|||
|
Delay12us();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
unsigned char Ut_Wave_Data()
|
|||
|
{
|
|||
|
unsigned int time;
|
|||
|
TMOD &= 0x0f;
|
|||
|
TH1 = TL1 = 0;
|
|||
|
Ut_Wave_Init();
|
|||
|
TR1 = 1;
|
|||
|
while ((Rx == 1) && (TF1 == 0))
|
|||
|
; // <20><><EFBFBD>ݶ<EFBFBD>ȡδ<C8A1><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
TR1 = 0;
|
|||
|
// û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
if (TF1 == 0)
|
|||
|
{
|
|||
|
time = TH1 << 8 | TL1; // <20><>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>
|
|||
|
// L=V*T/2
|
|||
|
return (time * 0.017); // <20><><EFBFBD>صĵ<D8B5>λ<EFBFBD><CEBB>cm
|
|||
|
}
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6>˴β<CBB4><CEB2><EFBFBD><EFBFBD><EFBFBD>Ч
|
|||
|
else
|
|||
|
{
|
|||
|
TF1 = 0;
|
|||
|
return 0;
|
|||
|
}
|
|||
|
}
|