• <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    技術(shù)熱線: 4007-888-234

    專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

    提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫(kù)分享

    從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

    技術(shù)支持

    3010T的解碼程序

    更新時(shí)間: 2019-03-23

    十年專注單片機(jī)方案開發(fā)的方案公司英銳恩,分享3010T的解碼程序。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機(jī)、16位單片機(jī)、32位單片機(jī)及各類運(yùn)算放大器等。

    #include
    #include
    #include

     

    //###############################################
    //晶體頻率選擇參數(shù)(遙控脈沖寬度計(jì)數(shù)用)
    #define FHZ  1               //12M=1,24M=2

     

    //###############################################

     


    //**********************************
    //12M
    #define FMS  6     //標(biāo)準(zhǔn)值
    #define FMSL 5     //離散值
    #define FMSH 7     //離散值
    #define FMM  9     //標(biāo)準(zhǔn)值
    #define FMML 8     //離散值
    #define FMMH 10    //離散值
    #define FMBL 11
    #define FMBH 15

    /*遙控器鍵值*/
    unsigned char code ykbiao[64]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
                         0x08,0x09,0x0A,0x7F,0x8A,0x7F,0x8C,0x84,
                         0x85,0x86,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
                         0x7F,0x7F,0x7F,0x7F,0x89,0x7F,0x0B,0x7F,
                         0x88,0x82,0x7F,0x7F,0x7F,0x7F,0x86,0x7F,
                      0x7F,0x7F,0x7F,0x81,0x87,0x7F,0x7F,0x7F,
                      0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
                         0x83,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x8A};

    unsigned char ykcd;  //遙控接收碼(查表后碼)?
    unsigned char bzjsok;

     

    bit bzjsone;
    static unsigned char ykcode; //遙控接收碼存放
    static unsigned char ykbnum; //接收到的遙控位數(shù)
    static unsigned char ykcodetemp; //遙控第一組接收碼存放
    static unsigned char ykhz;      //遙控頻率選擇用(用來(lái)確定在2組信號(hào)之間的中斷次數(shù),12M一次,24M二次)
                            //12M 遙控接收碼標(biāo)記 (=1為在定時(shí)器1中斷前剛剛接收完一組碼,=0表示沒(méi)有接收碼)
       //24M 遙控接收碼標(biāo)記 (=2為在定時(shí)器1中斷前剛剛接收完一組碼;=1表示第二次時(shí)鐘中斷;=0表示沒(méi)有接收碼)

     

    //************************************************************
    //外部中斷0,使用寄存器組2
    //遙控接收分析

    void int1() interrupt 0 using 2
    {unsigned char ykbtc;
    ykbtc=TH1/FHZ;
    TH1=0;TL1=0;TR1=1;ET1=1;
    ykhz=FHZ;
    //由于每次發(fā)送2組一樣的代碼,其間隔為50*1.778ms,只能引起一次(12M)或二次(24M)定時(shí)器1中斷,此處設(shè)ykhz=FHZ
        // 在定時(shí)器1第一次中斷時(shí),當(dāng)ykhz=FHZ,說(shuō)明是剛剛接收了信號(hào),若ykbit5=0暫存信號(hào);若ykbit5=1,處理信號(hào)
        //12M時(shí) 如果在外部中斷發(fā)生前再來(lái)一次定時(shí)中斷(此時(shí)ykhz=0),說(shuō)明先前接收的為代碼的第二組,無(wú)法校驗(yàn),故刪掉
        //24M時(shí) 如果在外部中斷發(fā)生前再來(lái)一次中斷(此時(shí)ykhz=1),ykhz--,不處理;再來(lái)一次中斷(ykhz=0) 說(shuō)明先前接收
    //的為代碼的第二組,無(wú)法校驗(yàn),故刪掉

     


    switch(ykbnum)                     //ykbnum 接收的遙控信號(hào)位數(shù)
       {case(0):ykbnum=1;                //開始, 第一位  "1"

      break;
    case(1):if(((ykbtc>=FMSL)&&(ykbtc<=FMSH)))ykbnum=2;       //第二位 同相  "1"
             else ykbnum=0;
       break;
    case(2):if(((ykbtc>=FMSL)&&(ykbtc<=FMSH))||((ykbtc>=FMML)&&(ykbtc<=FMMH)))ykbnum=3;   //第三位 同相 "1" 或反相  "0"
             else ykbnum=0;
             break;
    case(3):if(((ykbtc>=FMSL)&&(ykbtc<=FMSH))||((ykbtc>=FMML)&&(ykbtc<=FMMH))){ykbnum=4;} //第四位 反相 "0"  或同相"1"
             else ykbnum=0;
             break;
    default:if(ykbnum<7){if((ykbtc>=FMSL)&&(ykbtc<=FMSH))ykbnum++; //第五--七位 同相 "0"
           else ykbnum=0;
          }
                else {if((ykbtc>=FMSL)&&(ykbtc<=FMSH))
          {if(ykcode&1)ykcode=ykcode*2+1;  //同相 遙控接收碼上一位為"1",則此位也為"1"
                    else ykcode=ykcode*2;          //上一位為"0",此位也為"0"
           ykbnum++;
          }

    //9的情況        上位1 此一位0        上位0 此二位0 1
          //   | "1"| "0" |           "0"| "0"|"1" |
          //    __      __             __    ____    __
          // __|  |____|  |__       __|  |__|    |__|

     

        //檢測(cè)位址      |   9   |              |   9   |

     

                      else if((ykbtc>=FMML)&&(ykbtc<=FMMH))
           {if(ykcode&1){ykbnum++;ykcode=ykcode*2;} //9-反相 上一位為"1",此位為"0"
                        else {ykbnum+=2;ykcode=ykcode*2;ykcode=ykcode*2+1;}//上一位為"0",加2位,"0","1"
           }

    //11~15的情況        上位1 此二位0 1        上位0 不可能出現(xiàn)13
          //   | "1"| "0"|1 |
          //    __      ____
          // __|  |____|    |__

     

        //檢測(cè)位址      |    13    |

     

          else if(ykbtc>FMBL&&ykbtc<fmbh){ykbnum+=2;ykcode=ykcode*2;ykcode=ykcode*2+1;}
          else ykbnum=0;
                  }
       }

     

    }

     

    //****************************************************************
    //定時(shí)器中斷1  使用寄存器組3
    //
    void int2() interrupt 3 using 3
    {if(ykhz==FHZ)            // 在定時(shí)器1中斷時(shí),當(dāng)ykhz=FHZ,說(shuō)明是剛剛接收了信號(hào),若ykbit5=0暫存信號(hào);ykbit5=1,處理信號(hào)

     //24M時(shí) 如果在外部中斷發(fā)生前再來(lái)一次中斷(此時(shí)ykhz=1),不處理.再來(lái)一次中斷(ykhz=0)
           //說(shuō)明 先前接收的為代碼的第二組,無(wú)法校驗(yàn),故刪掉
          {ykhz--;
        if(bzjsone==0)          //ykbit5=0, 說(shuō)明接收的應(yīng)該是第一組代碼
           {if(ykbnum==13){ykcode*=2;  //ykbnum=13,說(shuō)明最后一位"0"丟失
                   ykcodetemp=ykcode;        //第一組代碼暫存
                 bzjsone=1;                 //設(shè)第一組代碼以存標(biāo)志位
                }
              else if(ykbnum==14){ykcodetemp=ykcode;bzjsone=1;}
              else EX0=1;
               ykbnum=0;

     ykcode=0;
                }

     

           else{if(ykbnum==13)                //以下應(yīng)該為第二組代碼
           {ykcode*=2;  // ykbnum=13,說(shuō)明最后一位"0"丟失  ykcd=ykbiao[ykcode*=2];
            if(ykcode==ykcodetemp)         //兩組代碼一樣,代碼有效
              {//buf[0]=ykcode/0x10;         //調(diào)試遙控過(guò)程中顯示接收的碼
            //buf[1]=ykcode%0x10;
            ykcd=ykbiao[ykcode];
            bzjsok=1;
           }

     

         else {/*buf[0]=0;buf[1]=0;*/}  //兩組代碼不一樣,代碼無(wú)效

     

        }
                 else if(ykbnum==14)
                  {
                      if(ykcode==ykcodetemp)
                {//buf[0]=ykcode/0x10;
                //buf[1]=ykcode%0x10;
             ykcd=ykbiao[ykcode];
             bzjsok=1;
            }
          else {/*buf[0]=0;buf[1]=0;*/}

      }
        bzjsone=0;
                 ykbnum=0;
                 ykcode=0;
                }
          }

     

    else {if(ykhz==0){bzjsone=0;ykbnum=0;ykcode=0;}
        //12M時(shí) 如果在外部中斷發(fā)生前再來(lái)一次中斷(此時(shí)ykhz=0),說(shuō)明先前接收的為代碼的第二組,
                //無(wú)法校驗(yàn),故刪掉刪掉原先接收的代碼,清零
           else ykhz--;                            //24m時(shí)允許二次時(shí)鐘中斷,ykhz-1,不作別的處理
          }
    }

    404
    返回首頁(yè) |  返回上一頁(yè)
    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频
  • <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>