完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题:
不能连续测距,且数值不正常 希望各路大神指点指点 #include #include #include #define uint unsigned int #define uchar unsigned char uint s1; uint distance; ***it trig=P0^1; ***it echo=P0^3; ***it led=P0^0; void Delay20us() [url=]//@12.000MHz[/url] { unsigned char i; _nop_(); _nop_(); i = 57; while (--i); } void Uartinit(void) [url=]//9600bps@12.000MHz[/url] { SCON = 0x50; //8位数据,可变波特率 AUXR |= 0x40; //定时器1时钟为Fosc,即1T AUXR &= 0xFE; //串口1选择定时器1为波特率发生器 TMOD &= 0x0F; //设定定时器1为16位自动重装方式 TL1 = 0xC7; //设定定时初值 TH1 = 0xFE; //设定定时初值 ET1 = 0; //禁止定时器1中断 TR1 = 1; //启动定时器1 REN=1; ES=1; } void Timer0Init(void) //1微秒@12.000MHz { AUXR &= 0x7F; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x02; //设置定时器模式 TL0 = 0xFF; //设置定时初值 TH0 = 0xFF; //设置定时重载值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0=1; EA=1; //中断总开关打开 } void start() //启动超声波 { trig=1; Delay20us(); // Delay20us(); trig=0; } main() { Timer0Init(); UartInit(); while(1) { start(); //启动 while(echo==1) { distance=(s1*17); //算距离 s1=0; } ES=0; TI=1; printf("%dn",distance); //串口打印 while(!TI); TI=0; ES=1; } } void time0() interrupt 1 //中断计时 { s1++; } 希望各路大神指点指点 |
|
相关推荐
2个回答
|
|
有大神吗
|
|
|
|
大神给你的建议就是一点一点查,别一下编个大程序,
|
|
|
|
只有小组成员才能发言,加入小组>>
2981 浏览 9 评论
2694 浏览 16 评论
3219 浏览 1 评论
8454 浏览 16 评论
3782 浏览 18 评论
6964浏览 6评论
求助,请问MS51FB9AE带隙电压能作为侦测的基准电压吗?
7461浏览 3评论
6962浏览 3评论
支持UART-to-BLE透传的新唐NuTool – BLE ATCMD开发工具推荐
5807浏览 3评论
9379浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-27 05:00 , Processed in 0.756178 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号