46 lines
711 B
C
46 lines
711 B
C
#include "ul.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;
|
|
for (i = 0; i < 8; i++) {
|
|
Tx = 1;
|
|
Delay12us();
|
|
Tx = 0;
|
|
Delay12us();
|
|
}
|
|
}
|
|
unsigned char Ut_Wave_Data() {
|
|
unsigned int time;
|
|
CH = CL = 0;
|
|
CMOD = 0x00;
|
|
|
|
EA = 0;
|
|
Ut_Wave_Init();
|
|
EA = 1;
|
|
|
|
CR = 1;
|
|
while (Rx && !CF);
|
|
CR = 0;
|
|
if (!CF) { // us -> s 10^(-6)
|
|
// m -> cm 10^2
|
|
// 10^(-4)
|
|
// L = V*T/2=340*time/2=170*10^(-4)*time=0.017*time
|
|
time = CH << 8 | CL;
|
|
return (0.017 * time + 3);
|
|
} else {
|
|
CF = 0;
|
|
return 0;
|
|
}
|
|
} |