|
超声波报警谁帮我添加一个发光管指示
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit Tsonic=P3^0;
sbit Rsonic=P3^2;
sbit buz=P0^0;
uint distance=0;
float n=0.172; //超声波速度为344m/s
void close()
{
buz=0;
}
void delay4us()
{;;}
void delayms(uint k)
{
uint m,n;
for(n=k;n>0;n--)
for(m=110;m>0;m--);
}
void sonic()
{
uchar i;
for(i=10;i>0;i--)
{
Tsonic=1;
delay4us();
Tsonic=0;
delay4us();
}
}
void main()
{
close();
TMOD=0x01; //设置计数器0工作为方式1
TH0=0;
TL0=0; //计数器0赋初值0
ET0=1; //允许T0中断
IT0=1; //设置中断触发方式为下降沿触发方式
EX0=1; //打开外部中断0
EA=1; //开总中断
TR0=1; //启动计数器0
while(1)
{
sonic();
if(distance>1400)
buz=0;
else
buz=1;
}
}
void timer0() interrupt 1 //计数器0中断
{
distance=0;
}
void ex0() interrupt 0 //外部0中断
{
EX0=0; //禁止外部中断0
TR0=0; //关闭计数器0
distance=(int)((TH0*256+TL0)*n);//根据测得时间计算距离
TH0=0;
TL0=0; //计数器0清零
EX0=1; //打开外部中断0
TR0=1; //启动计数器0
}
|
欢迎继续阅读楼主其他信息
|