|
- #define Imax 14000 //此處為晶振為11.0592時(shí)的取值,
- #define Imin 8000 //如用其它頻率的晶振時(shí),
- unsigned char Im[4]={0x00,0x00,0x00,0x00};
- unsigned long m,Tc;
- void intersvr1(void) interrupt 2 //紅外工作函數(shù)
- {
- TR0=1;
- Tc=TH0*256+TL0;//提取中斷時(shí)間間隔時(shí)長(zhǎng)
- TH0=0;
- TL0=0; //定時(shí)中斷重新置零
- 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;
- TR0=0;
- }
- else
- {
- IrOK=0; //取碼完成后判斷讀碼是否正確
- }
- }
- //準(zhǔn)備讀下一碼
- }
- }
復(fù)制代碼
|
|