51单片机程序超声波模块避障
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#define uint unsigned int
#define uchar unsigned char
sbit TX=P3^2;//Trig
sbit RX=P1^0;//Echo
unsigned int time=0;
unsigned long S=0;
bit flag =0;
void delay(int x)
{
int i,j;
for(i=0;i for(j=0;j<110;j++); } void Conut(void) //计算函数 { time=TH1*256+TL1; TH1=0; TL1=0; S=time*2; S=S*0.17; if(S<=300)//避障距离30cm { P2=0x34; //控制端口定义 } else { P2=0xff; //控制端口定义 } } void zd0() interrupt 3 //T0中断用来计数器溢出,超过测距范围{ } void Timer_Count(void) { TR1=1; //开启计数 while(RX); //当RX为1计数并等待 TR1=0; //关闭计数 Conut(); //计算 } void StartModule() { TX=1; delay(2); TX=0; } void main() { unsigned char i; unsigned int a; TMOD=0x10; EA=1; TH1=0; TL1=0; ET1=1; while(1) { RX=1; StartModule(); for(a=951;a>0;a--) { if(RX==1) { Timer_Count(); } } } }