求单片机高手解答!
voidintersvrl(void)interrupt0using1{Tc=TH0*256+TL0;TH0=0;TL0=0;if((Tc>Imin)&&(Tc<Imax...
voidintersvrl(void) interrupt 0 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(m==32)
{
m=0;
f=0;
if(Im[2]=~Im[3])
IrOK=1;
else
IrOK=0;
}
}
}
这是一段遥控接收器的中断程序,其中
#define Imax 14000
#define Imin 8000
#define Inum1 1450
#define Inum2 700
#define Inum3 3000
uchar Im[4]={0x00,0x00,0x00,0x00};
有谁能帮忙解释下程序中几条IF程序具体是什么意思? 展开
{
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(m==32)
{
m=0;
f=0;
if(Im[2]=~Im[3])
IrOK=1;
else
IrOK=0;
}
}
}
这是一段遥控接收器的中断程序,其中
#define Imax 14000
#define Imin 8000
#define Inum1 1450
#define Inum2 700
#define Inum3 3000
uchar Im[4]={0x00,0x00,0x00,0x00};
有谁能帮忙解释下程序中几条IF程序具体是什么意思? 展开
展开全部
1,if((Tc>Imin)&&(Tc<Imax))//如果Tc大于8000并且Tc小于14000两个条件都成立
2,if(Tc>Inum1&&Tc<Inum3)//如果Tc大于1450并且Tc小于3000两个条件都成立
3,if(Tc>Inum2&&Tc<Inum1)//如果Tc大于700并且Tc小于1450两个条件都成立
4,if(m==32)//如果变量m = 32条件成立
5,if(Im[2]=~Im[3])//如果lm数组元素2等于按位取反的数组元素3条件成立
上述条件成立时就执行if下面{}里的程序。
2,if(Tc>Inum1&&Tc<Inum3)//如果Tc大于1450并且Tc小于3000两个条件都成立
3,if(Tc>Inum2&&Tc<Inum1)//如果Tc大于700并且Tc小于1450两个条件都成立
4,if(m==32)//如果变量m = 32条件成立
5,if(Im[2]=~Im[3])//如果lm数组元素2等于按位取反的数组元素3条件成立
上述条件成立时就执行if下面{}里的程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if((Tc>Imin)&&(Tc<Imax)) 判断Tc是否在8~14ms之内
if(f==1) 同上,只不过是Tc在8~14ms之内之后的一次中断
if(Tc>Inum1&&Tc<Inum3) 判断Tc是否在1.45~3ms之内
if(Tc>Inum2&&Tc<Inum1) 判断Tc是否在0.7~1.45ms之内
if(m==32) 判断是否接收完32位数据
if(Im[2]=~Im[3]) 判断第三位数据和第四位数据是否互反。
if(f==1) 同上,只不过是Tc在8~14ms之内之后的一次中断
if(Tc>Inum1&&Tc<Inum3) 判断Tc是否在1.45~3ms之内
if(Tc>Inum2&&Tc<Inum1) 判断Tc是否在0.7~1.45ms之内
if(m==32) 判断是否接收完32位数据
if(Im[2]=~Im[3]) 判断第三位数据和第四位数据是否互反。
追问
好的我懂了,那个这 Im[m/8]=Im[m/8]>>1|0x80;又是什么意思呢?
追答
将Im[m/8]这个数组变量的值右移1位,再将最高位置1,之后回送回去(也就是覆盖原值)。相当于汇编的RR A,即循环右移一位。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
延时用的。。。红外遥控?从信号出现到接收数据。。。读0与读1的延时不一样,多看下书吧,9ms的前导低电平信号,4.5ms的前导高电平信号。接着就是数据信号,0,1,读0和读1的时间忘了是多少
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有个人拿布袋子罩住一只鸟,伸出一条鸟腿问大家“这是什么鸟?”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询