微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 电平宽度怎样计算啊 求高手指点啊

电平宽度怎样计算啊 求高手指点啊

时间:10-02 整理:3721RD 点击:
现在在做毕业设计,红外遥控小车,其中电平宽度这点不太明白,
           TH0=0;         //定时器清0
           TL0=0;         //定时器清0
           TR0=1;         //开启定时器T0
       while(IR==0);   //如果是低电平就等待,低电平计时
             TR0=0;         //关闭定时器T0
           LowTime=TH0*256+TL0;    //保存低电平宽度
           TH0=0;         //定时器清0
           TL0=0;         //定时器清0
           TR0=1;         //开启定时器T0
           while(IR==1);   //如果是高电平就等待                          
           TR0=0;        //关闭定时器T0
           HighTime=TH0*256+TL0;   //保存高电平宽度,
保存高低电平的宽度为啥是TH0*256+TL0啊?

首先你这个有死区啊,另外定时器溢出怎么办?

定时器T0是16位计数器,分成TH0和TL0两个字节,TH0是高8位,TL0是低8位,TL0每递增256(2的8次方)时TH0加1,所以电平宽度是TH0*256+TL0

什么死区啊?指点一下吧,谢谢了

恩  明白了  解释的很清楚  谢谢

LowTime=TH0*256+TL0;    //保存低电平宽度
           TH0=0;         //定时器清0
           TL0=0;         //定时器清0
在这几条指令的时候,它是低电平还是高电平啊,怎么计时

跟while(IR==?)有关。==0时是高电平,==1时是低电平。严格来说不一定,因为在执行上面指令的时候是会变的,不过时间很短,在这里面应用,这么短的时间是不会变化的。

这个是程序的一部分,是红外解码的程序,你的意思是这个程序不能用吗?我刚入门,学的不深,望指点啊  哈哈

当然不是不能用啊。要进入这个行业,首先必须对硬件先了解,再熟悉,其次,引用别人的程序时应知道每一句的意义(尤其是对硬件的影响),最好通过自己亲自编程以更深入地了解软硬件。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top