#include <REGX52.H>
#include <intrins.h>
#include "LCD1602.h"
sbit Ttig = P1^3; //触发信号控制端口
sbit Echo = P1^4; //回响信号接收端口
unsigned long S = 0;
unsigned long time = 0;
unsigned int flag;
unsigned int timer;
void count()
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100;
if(S>=300||flag==1)
LCD_ShowString(1,1,"error");
else
LCD_ShowNum(2,1,S,3);
}
void main()
{
TMOD=0x11;
TH0=0;
TL0=0;
TH1=0XF8;
TL1=0X30;
ET0=1;
ET1=1;
TR1=1;
EA=1;
LCD_Init();
while(1)
{
while(!Echo);
TR0=1;
while(!Ttig);
TR0=0;
count();
}
}
void zd0() interrupt 1
{
flag=1;
}
void zd1() interrupt 3
{
TH1=0XF8;
TL1=0X30;
timer++;
if(timer>=400)
{
timer=0;
Ttig=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
Ttig=0;
}
}
|