#include<reg51.h>
#include<intrins.h>
sbit Trig=P2^0;
sbit Echo=P2^1;
/*
---------------------
延時函數(shù)
---------------------
*/
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=400;y>0;y--);
}
/*
---------------------
超聲波啟動函數(shù)
---------------------
*/
void start()
{
int i;
Trig=0; //控制端初始狀態(tài)拉低
Echo=0; //初始狀態(tài)接收端置0
Trig=1; //控制端拉高,給一個高電平
for(i=0;i<20;i++) //給至少10us的高電平
{
_nop_(); //精確延時,推薦使用,在頭文件intrins.h中
}
Trig=0; //將控制端拉低,觸發(fā)條件完成
}
void count()
{
unsigned int time,timeH,timeL;
timeH=TH0;
timeL=TL0;
TH0=0;
TL0=0;
time=timeH*256+timeL;
if(time<542 ) //542us,換算成距離是10cm(11.0592m)
P1=0x00; //p1控制4個輪子
else
P1=0xAA;
}
void main()
{
while(1)
{
TMOD=0X11;
TH0=0;
TL0=0;
start();
while(!Echo);
TR0=1;
while(Echo);
TR0=0;
count();
delay(120);
}
}
代碼如上,已經(jīng)測試過了,那個超聲波模塊正常工作,就是輪子不動,麻煩各位大哥了
|