56 lines
1.0 KiB
C
56 lines
1.0 KiB
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; // 38
|
|||
|
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;
|
|||
|
CH = CL = 0; // <20><><EFBFBD><EFBFBD>PCA<43>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
CCON = 0; // <20><>ʼ<EFBFBD><CABC>PCA<43><41><EFBFBD>ƼĴ<C6BC><C4B4><EFBFBD>/PCA<43><41>ʱ<EFBFBD><CAB1>ֹͣ/<2F><><EFBFBD><EFBFBD>CF/
|
|||
|
|
|||
|
EA = 0; // <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
Ut_Wave_Init(); // <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|||
|
EA = 1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
CR = 1; // PCA<43><41>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
while (Rx && !CF) // TF1
|
|||
|
; // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
CR = 0; // PCAֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
|||
|
if (CF == 0)
|
|||
|
{
|
|||
|
time = CH << 8 | CL; // <20><>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>
|
|||
|
// L=V*T/2
|
|||
|
return (time * 0.017); // <20><><EFBFBD>صĵ<D8B5>λ<EFBFBD><CEBB>cm
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
CF = 0;
|
|||
|
return 0;
|
|||
|
}
|
|||
|
}
|