日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 用51單片機中斷法解碼pt2262無線遙控器

          用51單片機中斷法解碼pt2262無線遙控器

          作者: 時間:2012-11-15 來源:網(wǎng)絡 收藏

          /***********************************************
          解碼軟件修正版
          使用了位操作代替前版本的位尋址,使用三個字節(jié)變量存儲獲取的數(shù)據(jù),便于以后將地址和數(shù)據(jù)進行操作
          增加了兩次數(shù)據(jù)比對的功能,降低誤碼的干擾
          2007.8.24
          接受模塊的信號輸出端接INT0中斷口。。。
          P1.0,p1.1上接LED顯示接受的情況。。。
          解碼測試通過。。。
          注意:使用的是4M的晶振以減少mcu對接受模塊的干擾。。。
          程序開發(fā):http://www.51hei.com
          運行平臺:51hei單片機開發(fā)板+315m無線模塊,用杜邦線連接.
          使用時可能要改變檢測的特征值,視遙控的中心頻率而定,可以通過上的電阻改變*********************************************/

          #include reg52.h>
          unsigned int tmp,t1=0;
          unsigned char i9=0,t2;
          char *dataTMP;
          unsigned char dataTMP0,dataTMP1,dataTMP2,datacheck;
          unsigned char bdata oeCON;
          sbit UD0=oeCON^0;
          sbit UD1=oeCON^1;
          sbit OC0=oeCON^2;
          sbit OC1=oeCON^3;
          sbit p10=P1^0;
          sbit p11=P1^1;
          sbit p32=P3^2;
          bit flagF=1,press;
          void up_down();
          void open_close();
          void delay(unsigned char);

          void main()
          {IT0=1;
          EX0=1;
          TMOD=0x09;
          EA=1;
          TR0=1;
          P3=0xff;

          UD0=1;
          UD1=0;
          OC0=1;
          OC1=0;
          while(1)
          {p10=p32;
          if(datacheck==0xff)
          {
          /**********編碼解析后執(zhí)行代碼*******************


          ***********************/
          }
          }
          /*************************************************************
          中斷服務程序
          通過探頭flagF的值判斷是否接收到sync信號
          接收到的數(shù)據(jù)存入dataTMP的三個變量中
          連續(xù)按鍵的確認:
          等待i9的值變?yōu)?;
          延時
          再次檢測i9的值是否為0;
          是0則認為按鍵中止。
          *************************************************************/
          int0() interrupt 0
          {
          tmp=TH0*256+TL0;
          TH0=0x0;
          TL0=0x0;
          if(flagF)
          {
          if(tmp>1295tmp1300)
          {p11=~p11;flagF=0;}
          }
          else
          {
          if(i99) dataTMP=dataTMP0;
          else
          {dataTMP=i917?(dataTMP1):(dataTMP2);}
          (*dataTMP)=1;
          if(tmp>100tmp150)
          (*dataTMP)=(*dataTMP)|0x01;
          else if(!(tmp>10tmp100))
          {
          flagF=1;
          i9=0;
          }

          if(i9==24)
          {
          if(datacheck!=dataTMP2)
          datacheck=dataTMP2;
          else
          datacheck=0xff;/*按鍵確認*/
          }
          i9++;
          }
          }

          /*******************
          延時函數(shù)
          時間:1-2s
          *******************/
          void delay(unsigned char k)
          {unsigned char i;
          for(i=0;ik;i++)
          for(tmp=0;tmp10300;tmp++);
          }

          萬能遙控器相關文章:萬能遙控器代碼


          51單片機相關文章:51單片機教程


          紅外遙控器相關文章:紅外遙控器原理


          評論


          相關推薦

          技術專區(qū)

          關閉