完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
大家好,我用的超声波测距模块是HC-SR04,目的是检测小于一米则报警。但是下载后没反应,求指教,谢谢!
程序如下: #include unsigned char pp,i; double s,aa; ***it beep=P2^3; //蜂鸣器 ***it TXD=P0^0; //发送端 ***it RXD=P0^1; //接收端 void delay1ms(void); //延时1ms,误差 -0.651041666667us void delay100us(void); //延时100微秒,误差 -0.173611111111us void init(void) //初始化函数 { TMOD=0x01; //模式设置,00000001,可见采用的是定时器0,工作与模式1(M1=0,M0=1)。 TH0=0Xff; //定时器设置,每隔100微秒发起一次中断。 TL0=0Xa4; ET0=1; //开定时器0中断 EA=1; //开总中断 TXD=0;//初始化 RXD=0; delay1ms(); } void main(void) { init(); while(1) { TXD=1;//开始工作 delay100us(); if(RXD==1) //如果接收端为高电平 { TR0=1; //启动定时器 if(RXD==0) //检测接收端是否为低电平,如果是低电平则进入以下函数 { TR0=0; //关闭定时器 TXD=0; //发送端置为低电平 aa=pp; //把此时的计数值赋给aa pp=0; //把计数值置零 s=(aa*100/1000000)*340; //计算距离 if(s<1) //如果距离小于1m则报警 beep=0; else //否则不报警 beep=1; for(i=0;i<80;i++)//延时80ms delay1ms(); } } } } void time0() interrupt 1 { TH0=0Xff; TL0=0Xa4; pp++; } void delay1ms(void) //延时1ms,误差 -0.651041666667us { unsigned char a,b; for(b=102;b>0;b--) for(a=3;a>0;a--); } void delay100us(void) //延时100微秒,误差 -0.173611111111us { unsigned char a,b; for(b=1;b>0;b--) for(a=43;a>0;a--); } |
|
相关推荐
3个回答
|
|
|
不要这么SB好不好 自己调试啊 你调试了几天啦,不知道啥问题 就发代码 汗
|
|
|
|
|
|
代做 加Q1925276216详谈
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16899 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 19:42 , Processed in 0.957366 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2223