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

2019-07-15 19:45发布

现在在做毕业设计,红外遥控小车,其中电平宽度这点不太明白,
           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啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
madboy
1楼-- · 2019-07-16 01:04
首先你这个有死区啊,另外定时器溢出怎么办?
djs1968
2楼-- · 2019-07-16 02:55
定时器T0是16位计数器,分成TH0和TL0两个字节,TH0是高8位,TL0是低8位,TL0每递增256(2的8次方)时TH0加1,所以电平宽度是TH0*256+TL0
宛若初闻yy
3楼-- · 2019-07-16 06:19
madboy 发表于 2014-5-13 08:59
首先你这个有死区啊,另外定时器溢出怎么办?

什么死区啊?指点一下吧,谢谢了
宛若初闻yy
4楼-- · 2019-07-16 11:28
djs1968 发表于 2014-5-13 09:06
定时器T0是16位计数器,分成TH0和TL0两个字节,TH0是高8位,TL0是低8位,TL0每递增256(2的8次方)时TH0加1 ...

恩  明白了  解释的很清楚  谢谢
madboy
5楼-- · 2019-07-16 14:32
 精彩回答 2  元偷偷看……
djs1968
6楼-- · 2019-07-16 17:22
跟while(IR==?)有关。==0时是高电平,==1时是低电平。严格来说不一定,因为在执行上面指令的时候是会变的,不过时间很短,在这里面应用,这么短的时间是不会变化的。

一周热门 更多>