各位大侠请看一下我写的US-100超声波的测距程序有什么问题。 他总是测完第一次之后就不再测 了。 20

不知是不是程序卡死在while(rx==0)这里。请你们帮帮我。#include<reg52.h>#defineuintunsignedint#defineucharun... 不知是不是程序卡死在while(rx==0)这里。请你们帮帮我。

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit gnd1=P1^0;
sbit gnd2=P1^1;
sbit rx=P1^2;
sbit tx=P1^3;
sbit vcc=P1^4;

uchar k;num;

void delay_short(uchar x)
{
uint i;
for(i=x;i>0;i--);
}

void init()
{
gnd1=0;
gnd2=0;
vcc=1;
}

void dscx()
{
TMOD=0x01; //重装初值
TH0=(65536-1000)/256;
TL0=(65526-1
000)%256;
EA=0;
ET0=0;
TR0=0;
}

void T0_time() interrupt 1 //中断程序
{
TH0=(65536-1000)/256; //1ms
TL0=(65526-1000)%256;
num++;
}

void cjcx()
{
tx=1;
delay_short(12);
tx=0;
while(rx==0)
{
P2=0x7f;
}
EA=1;
ET0=1;
TR0=1;
while(rx==1)
{
P2=0xfe;
}
EA=0;
ET0=0;
TR0=0;
k=(num*340.0)/2; //单位mm
if(k<1500)
P2=0xf; //00001111
if(k>1500)
P2=0xf0; //11110000
num=0;
delay_long(1000);
}

void main()
{
dscx();
init();
while(1)
{
cjcx();
}
}
展开
 我来答
百度网友9ffd4cd
2014-01-30 · TA获得超过7056个赞
知道大有可为答主
回答量:1.1万
采纳率:36%
帮助的人:808万
展开全部
我也请教个问题,超声波测距能测6-10公分直径,深度2-20米的井吗?是测井深。
wz13625550312
2014-11-12
知道答主
回答量:4
采纳率:0%
帮助的人:5万
展开全部
楼主,你的问题解决了吗? 我最近也在做这个,遇到的问题跟你的一样,求解释,求方法啊.
追问
解决了,就是num类型弄错了char范围只有0-255,改为int类型就可以int范围是2^16。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一撇斜阳浅
2020-12-29
知道答主
回答量:51
采纳率:0%
帮助的人:8.9万
展开全部
千万别别担心,有技术的自然好操作的

嘉俺威993和159和86
具体的定马上处理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大禹电子
高粉答主

2014-01-30 · 超声波是我一生的事业
大禹电子
采纳数:6297 获赞数:18368

向TA提问 私信TA
展开全部
是不是没有一个循环?
追问
你再看看吧,我干才复制的程序没复制全。呵呵,不好意思。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式