/*******************************************************/
#include "reg52.h"
/*******************************************************/
#define uchar unsigned char
#define uint unsigned int
/*******************************************************/
sbit ChuFa=P2^0;
sbit HuiShou=P3^2;
sbit L1=P0^0;
sbit L2=P0^2;
/*******************************************************/
bit ChaoWanBiFlag=0;
uint TimeH,TimeL;
uint JuLi; //毫米单位
/*******************************************************/
void Disp();
void JingBao();
void delayus(uint k);
void delayms(uint k);
void init();
/*******************************************************/
void init()
{
ChaoWanBiFlag=0;
ChuFa=0;
TimeH=0;
TimeL=0;
JuLi=0;
TMOD=0x01;
TR0=0;
TF0=0;
TH0=0;
TL0=0;
ET0=1;
IT0=0;
EX0=0;
EA=0;
}
void main()
{
uint AllTime=0;
delayms(5000);
init();
while(1)
{
ChuFa=0;
ChuFa=1;
delayus(30);
ChuFa=0;
while(!HuiShou);
TR0=1;
EX0=1;
EA=1;
if(ChaoWanBiFlag)
{
JuLi=TimeH<<8+TimeL;
JuLi=JuLi*10/58; //微秒的单位*10再除以58等于毫米
//为什么除以58等于厘米, Y米=(X秒*344)/2
// X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58
Disp();
JingBao();
}
}
}
/*******************************************************/
void t0() interrupt 1 using 2
{
TR0=0;
TH0=0;
TL0=0;
EA=0;
}
/*******************************************************/
void int0() interrupt 0 using 2
{
TimeH=TH0;
TimeL=TL0;
EX0=0;
ChaoWanBiFlag=1;
}
/*******************************************************/
void Disp()
{
}
/*******************************************************/
void JingBao()
{
if(JuLi<350)
{
L1=0;
L2=1;
}
if(JuLi>3000)
{
L1=1;
L2=0;
}
}
/*******************************************************/
void delayus(uint k)
{
while(k--);
}
/**************************************************/
void delayms(uint k)
{
uint data i,j;
for(i=0;i<k;i++)
{
for(j=0;j<130;j++)
{;}
}
}
- 1
- 2
- 3
- 4
前往页