超声波测距程序是两部分组成:超声波程序(外部中断+定时器),串口程序。
你这个程序是哪里不对?橡和编译错误?还是串口显示乱码?还是测量值不动?你应该根据具巧返体问题给出自己分析,梁宽盯得到是测量的问题,还是串口通信的问题。而不是笼统得说 “不对” 然后期待“大神”分分钟给你改程序然后就可以用了。手头没板子,只能帮你到这里。
#include <stdio.h>#include <math.h>
#include <intrins.h>
#include "STC15Fxxxx.H"
#define uchar unsigned char
#define uint unsigned int
sbit Trig = P1^5
sbit Echo = P3^3
int time
int succeed_flag
uchar timel
uchar timeh
int i
void Uart1_SendChar(unsigned char Udat)
{
SBUF=Udat //将要发送的数据放入串口数据缓冲区
while(!TI) //等待发送完成
TI=0 //清零TI发送完成标记森竖梁
}
void main()
{
for (i=0i<30000i++)
SCON=0x50//0101 0000 模式1: 1 位起始位8 位数据 1 位停止位允许接收
AUXR &= 0xfb //定时器2时钟为Fosc/12,即12T
T2L=0xe8 //纤坦波特率9600 11.0592MHz
T2H=0xff
AUXR |=0x11 //串口选择定时器2作为波特率发生器,并且启此运动定时器
EX1=1
EA=1
Trig = 0
TMOD = 0X10//定时器1,16位工作方式
while(1)
{
EA=0
Trig=1
for(i=0i<10i++)
Trig=0
while(Echo==0)
succeed_flag = 0
EA=1
TH1=0
TL1=0
TR1=1
if(succeed_flag==1)
{
TR1=0
Uart1_SendChar(timeh)
Uart1_SendChar(timel)
succeed_flag=0
}
}
}
void exter() interrupt 2
{
timeh=TH1
timel=TL1
succeed_flag = 1
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)