微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 新手求指教!关于红外线解码的一些问题只看楼主 收藏

新手求指教!关于红外线解码的一些问题只看楼主 收藏

时间:10-02 整理:3721RD 点击:
#define Imax 14000 //此处为晶振为11.0592时的取值,
#define Imin 8000 //如用其它频率的晶振时,
#define Inum1 1450 //要改变相应的取值。
#define Inum2 700
#define Inum3 3000 unsigned char f=0;
unsigned char Im[4]={0x00,0x00,0x00,0x00};
unsigned char show[2]={0,0};
unsigned long m,Tc;
unsigned char IrOK;
void intersvr1(void) interrupt 2 using 1
{
Tc=TH0*256+TL0; //提取中断时间间隔时长
TH0=0;
TL0=0; //定时中断重新置零
if((Tc>Imin)&&(Tc<Imax))
{
m=0;
f=1;
return;
} //找到启始码 if(f==1)
{
if(Tc>Inum1&&Tc<Inum3)
{
Im[m/8]=Im[m/8]>>1|0x80; m++;
}
if(Tc>Inum2&&Tc<Inum1)
{
Im[m/8]=Im[m/8]>>1; m++; //取码
}
以上是部分程序和定义,我想问的问题是if((Tc>Imin)&&(Tc<Imax))这个语句所指的时间范围是多少,怎么算出来的?

8000-14000点计数值所占用的时间。
每一点的时间长度是由你的T0设置的计数间隔。
再加上少许指令消耗时间,如果要求不高,可以忽略。

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

网站地图

Top