电平宽度怎样计算啊 求高手指点啊
时间: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啊?
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时是低电平。严格来说不一定,因为在执行上面指令的时候是会变的,不过时间很短,在这里面应用,这么短的时间是不会变化的。
这个是程序的一部分,是红外解码的程序,你的意思是这个程序不能用吗?我刚入门,学的不深,望指点啊 哈哈
当然不是不能用啊。要进入这个行业,首先必须对硬件先了解,再熟悉,其次,引用别人的程序时应知道每一句的意义(尤其是对硬件的影响),最好通过自己亲自编程以更深入地了解软硬件。
