完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
单独超声波测距的时候好使,单独舵机转动的时候也好使,但是把这两个程序组合到一起的时候就不好使了,求各位兄弟姐妹帮我看看程序是哪里出错了。
#include"stc12c5a60s2.h" #define uint unsigned int #define uchar unsigned char ***it trig=P0^2; ***it echo=P3^2; ***it led0=P0^0; ***it pwm=P2^5; bit flag; float distance; uchar count; uchar jd; uint time,timeH,timeL; void delayms(uint x) { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void delay20us() { uint i; for(i=0;i<4;i++); } void duoji(uchar x) { jd=x; count=0; EA=1; ET1=1; TH1=0xfe; TL1=0x33; //0.5ms TR1=1; } void main() { TMOD=0x11; led0=0; while(1) { EA=0; trig=1; delay20us(); trig=0; while(echo==0); flag=0; EA=1; EX0=1; TH0=0; TL0=0; TF0=0; TR0=1; delayms(20); TR1=0; if(flag==1) { time=timeH*256+timeL; distance=1.085*time*0.017; if(distance<10) { duoji(2); delayms(5000); duoji(3); delayms(5000); duoji(4); delayms(5000); duoji(3); } else { led0=1; } } if(flag==0) { distance=0; } } } void exter() interrupt 0 { timeH=TH0; timeL=TL0; flag=1; EX0=0; } void t0() interrupt 1 { TH0=0; TL0=0; } void t1() interrupt 3 { TH1=0xfe; TL1=0x33; if(count标识 pwm=1; //确实小于,PWM输出高电平 else pwm=0; //大于则输出低电平 count=(count+1); //0.5ms次数加1 count=count%40; //次数始终保持为40 即保持周期为20m } |
|
相关推荐
7个回答
|
|
"不好使"是什么情况,描述一下吧
|
|
|
|
转动速度太快了吧,超过了超声波检测的频率。
|
|
|
|
舵机不转了。我的想法是超声波测距小于10厘米的时候舵机转三下,但是把超声波测距程序,和舵机转动程序融合在一起的时候就不好使了。
|
|
|
|
舵机不转了。我的想法是超声波测距小于10厘米的时候舵机转三下,但是把超声波测距程序,和舵机转动程序融合在一起的时候就不好使了。
|
|
|
|
舵机不转了。我的想法是超声波测距小于10厘米的时候舵机转三下,但是把超声波测距程序,和舵机转动程序融合在一起的时候就不好使了。
|
|
|
|
怎么解决呢
|
|
|
|
根本不转呐,
|
|
|
|
只有小组成员才能发言,加入小组>>
692 浏览 0 评论
1106 浏览 1 评论
2473 浏览 5 评论
2808 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2646 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
653浏览 9评论
649浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
781浏览 6评论
628浏览 5评论
668浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 09:55 , Processed in 1.394863 second(s), Total 92, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号