<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于8952單片機(jī)的紅外解碼(TC9012F編碼)

          基于8952單片機(jī)的紅外解碼(TC9012F編碼)

          作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          紅外操作免去了和機(jī)器接觸。第一是方便,第二也很自然的可以將用戶與管理著分離(使用功能在遙控上,調(diào)試功能在機(jī)器上)。所以免不了在自己的電子鐘設(shè)計(jì)中加入了紅外。加的多,學(xué)得也多嘛。

          雖然重點(diǎn)在后面,但是先上個(gè)程序

          本文引用地址:http://www.ex-cimer.com/article/201611/323082.htm

          參考總結(jié)后,第一次參考?xì)w納出源程序如下:

          #include
          #include
          #include
          ////////////////////////////////////////////////

          sbit ir=P3^2;//紅外接口標(biāo)志

          ////////////////////////////////////////////

          unsigned char irtime;//電平寬度(以定時(shí)器來記錄)
          bit irpro_ok,irok;
          unsigned char ircord[4];
          unsigned char irdata[33];

          //////////////////////////////////////////////

          void ir_work(void);
          void ircordpro(void);

          //////////////////////////////////////////////////////////////////

          void tim0_isr (void) interrupt 1 using 1//定時(shí)器0中斷服務(wù)函數(shù)
          {
          irtime++;
          }

          ///////////////////////////////////////////////////////////////////////
          void ex0_isr (void) interrupt 0 using 0//外部中斷0服務(wù)函數(shù)
          {
          unsigned char i;
          bit startflag;

          if(startflag)
          {
          TR0=0;
          if(irtime<38&&irtime>=34)//引導(dǎo)碼判斷(9MS)
          i=0;
          TR0=1;
          //確認(rèn)為引導(dǎo)碼,初始為新的32位編碼開始
          irdata[i]=irtime;//i=0是引導(dǎo)碼,后面是其余碼。每次記錄的是每次高低電平一起的脈沖寬度。
          //收到到一個(gè)碼算一次中斷,中斷結(jié)束前清零寬度計(jì)時(shí)
          irtime=0;
          i++;
          if(i==33)
          {
          irok=1;
          i=0;
          }
          }
          //第一次進(jìn)入中斷開啟startflag,用于第二次進(jìn)入中斷計(jì)時(shí)比對(duì)
          else
          {irtime=0;startflag=1;}

          }

          ////////////////////////////////////////////////////////////////////
          void TIM0init(void)//定時(shí)器0初始化
          {

          TMOD=0x02;//定時(shí)器0工作方式2,TH0是重裝值,TL0是初值
          TH0=0;//reload value
          TL0=0;//initial value
          ET0=1;//開中斷
          TR0=1;
          }
          ///////////////////////////////////////////////////////////////////
          void EX0init(void)
          {
          IT0 = 1;
          EX0 = 1;
          EA = 1;
          }
          void ir_work(void)//紅外鍵值散轉(zhuǎn)程序
          {

          switch(ircord[2])//判斷第三個(gè)數(shù)碼值(數(shù)據(jù)碼,后面是反碼,前面是引導(dǎo)碼和地址碼)
          {
          case 0:P1=0x00;break;//1 LED顯示相應(yīng)的按鍵值
          case 1:P1=0xfe;break;//2
          case 2:P1=0xfd;break;//3
          }


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();