《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 解決方案 > LC7461紅外遙控器和解碼程序

LC7461紅外遙控器和解碼程序

2016-12-19
關(guān)鍵詞: 紅外遙控 解碼

LC7461紅外遙控器和解碼程序

//遙控解碼子程序,LC7461,用戶碼為11C
//external interrupt0
void isr_4()
{

 unsigned char r_count;//定義解碼的個(gè)數(shù)
 unsigned long use_data=0;//定義16位的用戶碼,只用到13位
 unsigned long use_code=0;//定義16位的用戶反碼,只用到13位
 unsigned long data=0;//定義16位數(shù)據(jù)碼,包括8位數(shù)據(jù)碼和反碼
 unsigned char data_h=0;//數(shù)據(jù)反碼
 unsigned char data_l=0;//數(shù)據(jù)碼
 _clrwdt();
// _delay(7000);//7461解碼,延時(shí)7000
// _delay(7000);//7461解碼,延時(shí)7000
//_delay(7000);//7461解碼,延時(shí)7000
 if(remote==1)
  goto error;
 while(remote==0);//wait to high
 //_delay(9744);
count_delay=0;
 while(count_delay<143);
 if(remote==1)
  goto error;
     /////用戶碼解碼use_data//////////add//////////////////////////
     for(r_count=13;r_count>0;r_count--)
  {
  while(remote==0);//wait to high
  count_delay=0;
     while(count_delay<24);//_delay(1680);
  _c=remote;
  if(_c==1)
   {
   _lrrc(&use_data);
   count_delay=0;
         while(count_delay<32);//_delay(2200);//wait to low
   }
  else
   _lrrc(&use_data);
  }
  _nop();
 //if(remote==1)
  //_delay(1680);//wait to low while(remote==1);//wait to low
     _nop();
     ////////用戶碼解碼finish/////////add/////////add////////
     /////用戶碼反碼解碼use_code//////////add//////////////////////////
     for(r_count=13;r_count>0;r_count--)
  {
  while(remote==0);//wait to high
  count_delay=0;
         while(count_delay<24);//_delay(1680);
  _c=remote;
  if(_c==1)
   {
   _lrrc(&use_code);
   count_delay=0;
         while(count_delay<32);//_delay(2200);//wait to low
   }
  else
   _lrrc(&use_code);
  }
 _nop();
 //if(remote==1)
 // _delay(1680);//wait to low while(remote==1);//wait to low
     _nop();
     ////////用戶碼反碼解碼finish/////////add/////////add////////
     ////數(shù)據(jù)碼解碼開始////data_l為用戶碼,data_h為數(shù)據(jù)碼反碼////////////
 for(r_count=16;r_count>0;r_count--)
  {
  while(remote==0);//wait to high
  count_delay=0;
         while(count_delay<24);//_delay(1680);
  _c=remote;
  if(_c==1)
   {
   _lrrc(&data);
   count_delay=0;
         while(count_delay<32);//_delay(2200);//wait to low
   }
  else
   _lrrc(&data);
  }
 ////數(shù)據(jù)碼解碼結(jié)束////////////////////////////////////////////////
 data_l=data;
 data_h=data>>8;
 ///用戶碼//////
 use_data>>=3;
 use_code>>=3;
 use_code=~use_code;
 ////////
 ////如果用戶碼等與0x11c并且數(shù)據(jù)碼和數(shù)據(jù)反碼都校驗(yàn)一致,解碼成功
 //if((~data_h==data_l)&&use_data==0x11c)//使用用戶碼
 //跳過用戶碼
 if(~data_h==data_l)//如果數(shù)據(jù)碼和數(shù)據(jù)反碼(取反后)相等,解碼正確
  {
  _nop();
  r_data=data_l;//r_data為解出的最終數(shù)據(jù)碼
  }
 //否則解碼不成功
 _nop();
 _nop();
error:  //r_data=nocode;
 _nop();
    _nop();
 _nop();
}

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。