永发信息网

单片机超声波c语言求解!

答案:2  悬赏:0  手机版
解决时间 2021-12-01 00:16
单片机超声波c语言求解!
最佳答案
sbit Trig  = P1^0; //产生脉冲引脚
sbit Echo  = P3^2; //回波引脚
    
    while(1)  {       //程序循环
      EA=0;
      Trig=1;  delay_20us();   Trig=0;   //产生一个20us的脉冲,在Trig引脚  
      while(Echo==0); //等待Echo回波引脚变高电平!当Echo的值为0的时候,程序停在这里,不再向下执行。

(这里改成while(!Echo);可以吗?
while(Echo==0);和while(!Echo);有什么区别?)
--可以。
--两者,没有区别。

      succeed_flag=0; //清测量成功标志
      EX0=1;          //打开外部中断 
(这里进入开外部中断不是马上把定时器1的数值取出了吗?定时器还没有打开数值不是零吗?)
--是有些早。
--不过,也不要紧。因为,EA,还没有打开。

TH1=0;          //定时器1清零
      TL1=0;          //定时器1清零
      TF1=0;          //计数溢出标志    
(这里为什么要清零,每次循环定时器1不是清零了吗?)
--是的,这句,多余了。
……追问外部中断打开后,马上打开定时器了,这里还要while(TH1 < 30);//等待测量的结果。数据在等待测量已经读走了。但是为什么还可以读取完整的数据?我用逻辑分析仪测量发现外部中断从高电平进入中断低电平退出中断读走数据。追答外部中断打开后,马上打开定时器了,

--不是马上打开定时器。
--是设定初值(零)后,再打开的。

………
………
EX0 = 1; //打开外部中断
(这里进入开外部中断不是马上把定时器1的数值取出了吗?

--马上?
--怎么会?
--回波,能马上就回来吗?

……
……

定时器还没有打开数值不是零吗?)

--执行下面两句,才是零。
TH1 = 0; //定时器1清零
TL1 = 0; //定时器1清零
TF1 = 0; //计数溢出标志(多余了)
TR1 = 1; //启动定时器1

EA = 1;--这时,才允许回波读取T1的数据

while(TH1 < 30); //等待测量的结果

--回波,要是总也不回来,也不能老等,
--超过 30,就往下执行:

TR1 = 0; //关闭定时器1
EX0 = 0; //关闭外部中断

……
……
全部回答
注释都有了,你还要解什么追问我不明白的这些
while(Echo==0);和while(!Echo);有什么区别?
TF1=0; //计数溢出标志 (这里为什么要清零,每次循环定时器1不是清零了吗?)
EX0=1; //打开外部中断 (开外部中断在定时器启动前测量的结果还没有完整,马上把定时器1的数值读出不是零吗? )
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
2℃到9℃可不可以穿一件衣服
为什么刚长出来的棉花苗的每一层的叶子形状不
做服装批发用什么软件管理?
海康c3能装到普通nvr机子上吗
昨晚眉山零度ktv出事了吗?有人醉酒死了吗?
三星手机怎么才能知道应用程序管理器里那个是
矿灯蓄电池的各种充电方式有在什么情况下采用
把下列各式因式分解(1)x2y-y2x(2)8a3b2-1
打算给孩子取名梁景睿怎么样?
刚恢复高考时全国是统一命题统一录取吗?
在神探夏洛克里,哪一集夏洛克和华生互相贴纸
城镇污水处理厂,测量水样氨氮含量,用纳氏试
升压4v升压到5v 用什么芯片
1469÷32的列式怎么算得多少
求和监狱风云一样好看的电影
推荐资讯
jh21一80冲床计数器不准怎么办?有时打一次件
陈独秀、鲁迅、胡适等一代文化先驱,正是吸纳
写一篇我的作文,又简单又好三百个字
武昌火车站地铁那个出口出来后方便坐202公交
和食物有关的成语
南京南站到浦滨路和江淼路囗怎么坐车?
那要说这人很local,怎么解释
虚空藏菩萨胸前有万字佛印吗
巴西龟背甲26厘米宽23厘米,母龟,会生蛋吗?
耐克什么款的鞋子好看
俏巴零食怎么加盟
开灯电视黑屏怎么解决
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?