求单片机高手编一小段AVR程序(用C语言,AVR studio里运行),超声波避障。

我用的是DYP-ME007超声波传感器,想用它测距来实现避障,但是不知道AVR的测距程序怎么编,这个是产品说明:本产品使用方法简单,一个控制口发一个10US以上的高电平,... 我用的是DYP-ME007超声波传感器,想用它测距来实现避障,但是不知道AVR的测距程序怎么编,这个是产品说明:
本产品使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。如此不断的周期测,就可以达到你移动测量的值了。
请高手帮我编一下测距的程序,我主要是不知道接受口怎么读定时器的值。帮我编到读出定时器值这里就可以!注意是AVR 单片机,要用AVR studio 能运行的。 感谢!
展开
 我来答
xuleda
2011-03-10 · TA获得超过243个赞
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:110万
展开全部
这本质上就是测周期,你完全可以借鉴移植频率测量程序(低频测量)。
float LF_test(void)//低频测试子程序
{uint ta,tb;
ulong t=0;//中断次数及高电平时间寄存器
DDRD&=~0x40;//ICP1输入

TCCR1B=(0<<CS12)|(0<<CS11)|(1<<CS10)|(1<<ICES1);//不分频,上升沿触发
TCNT1=0;
TIFR=(1<<ICF1);//清输入捕捉中断标志位
while(!(TIFR&0x20));//等待一次上升沿捕捉
TIFR=(1<<ICF1);//清输入捕捉中断标志位
ta=ICR1;//保存捕捉值
TIFR=(1<<TOV1);//清溢出中断标志
while(!(TIFR&0x20)) {if(TIFR&0x04) {TIFR=(1<<TOV1);t++;}}//统计溢出次数,并等待第二次上升沿捕捉 //这个地方要改成下降沿触发,记得修改哦。
tb=ICR1;//存捕捉值
TCCR1B=(0<<CS12)|(0<<CS11)|(0<<CS10);//关闭定时器 T1
t*=65536;//溢出次数转换成相应计数次数
t=t+tb-ta;//计算时间

return(8000000.0/t);//计算结果
}
在这个基础上移植,相信你能成功。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bd_myj
2011-03-06 · TA获得超过526个赞
知道小有建树答主
回答量:526
采纳率:0%
帮助的人:291万
展开全部
先把DYP-ME007PDF文档发上来,我帮你弄弄看
追问
怎么给你呢...我QQ1181628416  太感谢了
追答
我加你QQ,怎么没反应呢?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
军军106
2011-03-04 · TA获得超过453个赞
知道小有建树答主
回答量:1747
采纳率:0%
帮助的人:764万
展开全部
没学过单片机。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式