51單片機紅外遙控解碼
void intersvr1(void) interrupt 2 using 1
{
Tc=TH0*256+TL0; //提取中斷時間間隔時長
TH0=0;
TL0=0; //定時中斷重新置零
if((Tc>Imin)(TcImax))
{
m=0;
f=1;
return;
} //找到啟始碼
if(f==1)
{
if(Tc>Inum1TcInum3)
{
Im[m/8]=Im[m/8]>>1|0x80; m++;
}
if(Tc>Inum2TcInum1)
{
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; //取碼完成后判斷讀碼是否正確
}
//準(zhǔn)備讀下一碼
}
}本文引用地址:http://m.butianyuan.cn/article/172456.htm
/*演示主程序*/
void main(void)
{
unsigned int a;
m=0;
f=0;
EA=1;
IT1=1;EX1=1;
TMOD=0x11;
TH0=0;TL0=0;
TR0=1;//ET0=1;
while(1)
{
if(IrOK==1)
{
show[1]=Im[2] 0x0F; //取鍵碼的低四位
show[0]=Im[2] >> 4;
IrOK=0;
}
for(a=100;a>0;a--)
{
display();
}
}
}
液位計相關(guān)文章:磁翻板液位計原理
評論