乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      51單片機(jī)萬(wàn)能紅外遙控解碼程序

       共同成長(zhǎng)888 2015-07-18

      51hei單片機(jī)論壇里流傳的遙控解碼程序現(xiàn)在都弱爆了根本解不了現(xiàn)在的遙控自己寫(xiě)個(gè)萬(wàn)能紅外遙控解碼 



      本程序中需要用的頭文件下載:http://www./mcu/2564.html

      //家用遙控器通用解碼程序
      //原理和錄音機(jī)一樣只不過(guò)這里錄的是高低電平的脈寬,注意家用遙控器一般是38KHZ的脈沖接收頭所以為了
      //發(fā)射方便所以單片機(jī)使用了455MHZ晶振(舊遙控里拆一個(gè)),最好不要自己用定時(shí)器溢出來(lái)輸出38KHZ的方波
      //我自己試了N種中斷或延時(shí)的方法都沒(méi)成功,因?yàn)闆](méi)有示波器也找不到究竟是神馬問(wèn)題最后還是靠拆一個(gè)455晶振
      //才解決問(wèn)題,自己家里的機(jī)頂盒和電視遙控都成功解碼
      #include<STC12C5A60S2.H> //STC12C5AxxS2系列單片機(jī)頭文件
      #define uchar unsigned char//宏定義
      #define uint unsigned int//宏定義
      sbit Rc=P3^2;
      sbit LED_zs=P0^0;
      sbit LED_zs1=P0^1;
      sbit Key_s=P1^0;
      sbit Key_f=P1^1;
      sbit red=P0^2;
      int i=0;
      int TCC=0;
      int xdata Hdate [46];
      int xdata Ldate [46];
      ////////////////////////////////////////////////////////////////////////////////
      void Delay(uint ms)//延時(shí)子程序
      {
      uint x,y;
      for(x=ms;x>0;x--)
      for(y=0;y<12;y++);
      }

      ////////////////////////////////////////////////////////////////////////////////
      void Delay1(uint ms)//延時(shí)子程序
      {
      uint x,y;
      for(x=ms;x>0;x--)
      for(y=0;y<2400;y++);
      }

      /**********************************************************************************************/


      /*********************************************************************************************
      函數(shù)名:定時(shí)/計(jì)數(shù)器初始化函數(shù)
      調(diào) 用:T_C_init();
      參 數(shù):無(wú)
      返回值:無(wú)
      結(jié) 果:設(shè)置SFR中T/C1和(或)T/C0相關(guān)參數(shù)
      備 注:本函數(shù)控制T/C1和T/C0,不需要使用的部分可用//屏蔽
      /**********************************************************************************************/
      void T_C_init (void){
      TMOD = 0x01; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ]
      TH0 = 0xfe; //16位計(jì)數(shù)寄存器T0高8位
      TL0 = 0x0c; //16位計(jì)數(shù)寄存器T0低8位(100uS延時(shí))
      TR0 = 1; //T/C0啟動(dòng)開(kāi)關(guān)
      ET0 = 1; //T/C0中斷開(kāi)關(guān)
      EA = 1; //中斷總開(kāi)關(guān)
      }
      /**********************************************************************************************/
      /*********************************************************************************************
      函數(shù)名:定時(shí)/計(jì)數(shù)器0中斷處理函數(shù)
      調(diào) 用:[T/C0溢出后中斷處理]
      參 數(shù):無(wú)
      返回值:無(wú)
      結(jié) 果:重新寫(xiě)入16位計(jì)數(shù)寄存器初始值,處理用戶程序
      備 注:必須允許中斷并啟動(dòng)T/C本函數(shù)方可有效,重新寫(xiě)入初值需和T_C_init函數(shù)一致
      /**********************************************************************************************/
      void T_C0 (void) interrupt 1 using 1{ //切換寄存器組到1
      TH0 = 0xfe; //16位計(jì)數(shù)寄存器T0高8位(重新寫(xiě)入初值)
      TL0 = 0x0c; //16位計(jì)數(shù)寄存器T0低8位(100uS延時(shí))
      //函數(shù)內(nèi)容
      TCC++;
      }
      /**********************************************************************************************/

      /*********************************************************************************************
      函數(shù)名:UART串口初始化函數(shù)
      調(diào) 用:UART_init();
      參 數(shù):無(wú)
      返回值:無(wú)
      結(jié) 果:?jiǎn)?dòng)UART串口接收中斷,允許串口接收,啟動(dòng)T/C1產(chǎn)生波特率(占用)
      備 注:振蕩晶體為12MHz,PC串口端設(shè)置 [ 4800,8,無(wú),1,無(wú) ]
      /**********************************************************************************************/
      void UART_init (void){
      //EA = 1; //允許總中斷(如不使用中斷,可用//屏蔽)
      //ES = 1; //允許UART串口的中斷

      TMOD = 0x20; //定時(shí)器T/C1工作方式2
      SCON = 0x50; //串口工作方式1,允許串口接收(SCON = 0x40 時(shí)禁止串口接收)
      TH1 = 0xF3; //定時(shí)器初值高8位設(shè)置
      TL1 = 0xF3; //定時(shí)器初值低8位設(shè)置
      PCON = 0x80; //波特率倍頻(屏蔽本句波特率為2400)
      TR1 = 1; //定時(shí)器啟動(dòng)
      }


      /**********************************************************************************************/
      /*********************************************************************************************
      函數(shù)名:外部中斷INT初始化函數(shù)
      調(diào) 用:INT_init();
      參 數(shù):無(wú)
      返回值:無(wú)
      結(jié) 果:?jiǎn)?dòng)外部中斷INT1、INT0中斷,設(shè)置中斷方式
      備 注:
      /**********************************************************************************************/
      void INT_init (void){
      EA = 1; //中斷總開(kāi)關(guān)
      //EX0 = 1; //允許外部中斷0中斷
      IT0 = 1; //1:下沿觸發(fā) 0:低電平觸發(fā)
      }

      void INT_0 (void) interrupt 0 using 2{ //切換寄存器組到2
      EX0 = 0; //允許外部中斷0中斷
      //用戶函數(shù)內(nèi)容
      for(i=0;i<46;i++)
      {
      //獲取低電平寬度
      TH0 = 0xfe; //16位計(jì)數(shù)寄存器T0高8位
      TL0 = 0x0c; //16位計(jì)數(shù)寄存器T0低8位(100uS延時(shí))
      TCC=0;
      TR0 = 1; //T/C0啟動(dòng)開(kāi)關(guān)
      while(Rc==0);
      TR0=0;
      Ldate[i]=TCC;

      //獲取高電平寬度
      TH0 = 0xfe; //16位計(jì)數(shù)寄存器T0高8位
      TL0 = 0x0c; //16位計(jì)數(shù)寄存器T0低8位(100uS延時(shí))
      TCC=0;
      TR0 = 1; //T/C0啟動(dòng)開(kāi)關(guān)
      while(Rc==1);
      TR0=0;
      Hdate[i]=TCC;
      }

      LED_zs=0;
      Delay1(100);
      LED_zs=1;
      Delay1(100);
      LED_zs=1;
      Delay1(300);
      LED_zs1=0;

      }

      void fs(void)
      {
      int fs;
      for(fs=0;fs<46;fs++)
      {
      TH0 = 0xfe; //16位計(jì)數(shù)寄存器T0高8位
      TL0 = 0x0c; //16位計(jì)數(shù)寄存器T0低8位(100uS延時(shí))
      TCC=0;
      TR0 = 1; //T/C0啟動(dòng)開(kāi)關(guān)
      while(TCC<Ldate[fs]){red=!red;}
      TR0=0;
      TH0 = 0xfe; //16位計(jì)數(shù)寄存器T0高8位
      TL0 = 0x0c; //16位計(jì)數(shù)寄存器T0低8位(100uS延時(shí))
      TCC=0;
      TR0 = 1; //T/C0啟動(dòng)開(kāi)關(guān)
      while(TCC<Hdate[fs]){red=0;}
      TR0=0;
      }

      }

      void main (void)
      {
      int n;
      IP=0x02;
      T_C_init();
      INT_init();
      UART_init();
      LED_zs=1;
      LED_zs1=0;
      red=0;
      while(1)
      {
      Key_f=1;
      if( Key_f!=1)
      {
      Delay1(2);
      Key_f=1;
      if(Key_f!=1)
      {
      for(n=0;n<46;n++)
      {
      SBUF = Ldate[n]; //將接收的數(shù)據(jù)發(fā)送回去
      while(TI == 0); //檢查發(fā)送中斷標(biāo)志位
      TI = 0;
      }
      for(n=0;n<46;n++)
      {
      SBUF = Hdate[n]; //將接收的數(shù)據(jù)發(fā)送回去
      while(TI == 0); //檢查發(fā)送中斷標(biāo)志位
      TI = 0;
      }
      while(!Key_f){fs();Delay1(100);}
      }
      }
      Key_s=1;
      if(Key_s!=1)
      {
      Delay1(2);
      if(Key_s!=1)
      {
      EX0=1;
      LED_zs1=1;
      while(!Key_s);
      }
      }

      }}


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多