<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發網

      電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

      單片機頻率計C程序

      作者:佚名    文章來源:本站原創    點擊數:    更新時間:2011-6-6

      //---------函數聲明,變量定義--------------------------
      #include <reg51.h>
      sbit     GATE=P3^0;             //預制門限
      sbit     CLR =P3^1;             //請零
      sbit     RGATE=P3^2;            //實際門限
      sbit     SEL0=P3^4;             //數據選擇位0
      sbit     SEL1=P3^5;             //數據選擇位1
      sbit     SEL2=P3^6;             //數據選擇位2
      #define  data_in  P1
      unsigned char Nx[4];         //待測頻率計數值
      unsigned char Ns[4];         //標準頻率計數值
      unsigned char GATE_time=1;   //門限時間,預定義為1S
      unsigned char time_count;
      bit PRE_judge=1;
      //-----------------------變量聲明---------------------------------------------------------------------
      void system_init(void );      //初始化,設置定時器0的工作方式,供主程序調用
      void TIMER0_SCANkey();        //定時器0中斷處理函數

      //--------------------------------------------------------------------------------------------------
      // 函數名稱: system_init()
      // 函數功能: 初始化設置
      //            設定INT0的工作方式
      //--------------------------------------------------------------------------------------------------
      void system_init(void )  
                   {
                    TMOD=0x01; //定時器0工作在方式1
                    ET0=1;     //定時器0中斷允許
                    TH0=-5000/256;  //12M時鐘時,定時0.01秒
                    TL0=-5000%256;
                    TR0=1;     //定時器0開始計數
                    EA=1;      //系統中斷允許
                    }
      //--------------------------------------------------------------------------------------------------
      // 函數名稱: read_result
      // 函數功能: 將計數值讀出到Nx、Ns
      //--------------------------------------------------------------------------------------------------
      void read_result()
           {
            GATE=0;
            while(RGATE);   //等待實際門限的結束
            SEL0=0;
            SEL1=0;
            SEL2=0;
            Nx[0]=data_in;  //SEL=000
            SEL0=1;
            Nx[1]=data_in;  //001
            SEL1=1;
            Nx[3]=data_in;  //011
            SEL0=0;
            Nx[2]=data_in;  //010
            SEL0=0;
            SEL1=0;
            SEL2=1;
            Ns[0]=data_in;  //100
            SEL0=1;
            Ns[1]=data_in;  //101
            SEL1=1;
            Ns[3]=data_in;  //111
            SEL0=0;
            Ns[2]=data_in;  //110
           }
      //--------------------------------------------------------------------------------------------------
      // 函數名稱: judge_Prage
      // 函數功能: 判斷頻率范圍,
      //            大于1M      即Nx>0x00 0F 42 40,              GATE=1
      //            小于1M大于1k即0x00 00 03 E8<Nx<0x00 0F 42 40,GATE=5
      //            小于1k      即 Nx<0x00 00 03 E8,             GATE=10  
      //--------------------------------------------------------------------------------------------------
      void judge_Prage()
           {
           if((Nx[3]==0)&&(Nx[2]==0))
             if((Nx[1]<3)||((Nx[1]==3)&&(Nx[0]<0xE8)))
                    GATE_time=10;
              else GATE_time=5;
           else if((Nx[3]==0)&&(Nx[2]<0x0f))
                 GATE_time=5;
           else if((Nx[3]==0)&&(Nx[2]==0x0f))
                if(Nx[1]<0x42)
                 GATE_time=5;
                else if((Nx[1]==0x42)&&(Nx[0]<0x40))
                 GATE_time=5;
                else
                GATE_time=1;
          else  GATE_time=1;
       }
      //--------------------------------------------------------------------------------------------------
      // 函數名稱: calcu_Fx
      // 函數功能: 計算頻率,根據Fx=(Nx/Ns)Fs 計算結果
      //--------------------------------------------------------------------------------------------------
      void calcu_Fx()
      {

      }
      //--------------------------------------------------------------------------------------------------
      // 函數名稱: TIMER0_intrupt
      // 函數功能: 定時器0中斷處理程序
      //--------------------------------------------------------------------------------------------------
      void TIMER0_intrupt() interrupt 1 using 1
                    {
                     EA=0;         //系統中斷禁止
                     GATE=1;
                     TH0=-5000/256;  //12M時鐘時,定時0.01秒
                     TL0=-5000%256;
                     time_count++;
                     if(++time_count==100) GATE_time--;
                     while(GATE_time==0)
                     {
                     GATE=0;
                     read_result();
                     if(PRE_judge)     //預測,判斷頻率范圍                 
                     {
                     judge_Prage();
                     PRE_judge=0;
                     if(GATE_time)     //如果頻率大于1M,直接計算,無須再測
                     calcu_Fx();
                     }
                     else
                     calcu_Fx();         //不是預測,直接計算結果
                  }
                     EA=1;
              }
      //--------------------------------------------------------------------------------------------------
      // 函數名稱: main
      // 函數功能: 主函數
      //--------------------------------------------------------------------------------------------------
      void main()
       {
        CLR=0;
        GATE=1;
        system_init(); 
       }

      Tags:頻率計C程序,單片機  
      責任編輯:admin
      請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 亚洲欧洲国产综合AV无码久久| 中文字幕国产综合| 国产香蕉尹人综合在线观看| 精品国产第一国产综合精品| 丁香五月综合缴情综合| 一本大道久久a久久综合| 天天做天天爱天天综合网| 97久久综合精品久久久综合| 狠狠色噜噜狠狠狠狠狠色综合久久| 亚洲AV日韩综合一区尤物| 亚洲综合色区在线观看| 综合在线免费视频| 久久伊人久久亚洲综合| 狠狠久久综合伊人不卡| 伊人色综合网一区二区三区 | 中文字幕色综合久久| 久久亚洲精品成人综合| 卡通动漫第一页综合专区| 亚洲色欲啪啪久久WWW综合网| 亚洲综合国产一区二区三区 | 国产成人综合色在线观看网站| 天天色天天操综合网| 狠狠色狠狠色综合日日五| 日韩综合在线观看| 亚洲综合校园春色| 伊人情人综合成人久久网小说| 亚洲伊人tv综合网色| 亚洲av日韩av综合| 国产精品亚洲综合久久| 狠狠色综合网久久久久久 | 狠狠爱天天综合色欲网| 麻豆久久婷婷五月综合国产| 一本一本久久a久久综合精品蜜桃| 五月天激情综合网| 色综合久久久久网| 婷婷综合缴情亚洲狠狠尤物 | 国产色综合天天综合网| 久久久久青草大香线综合精品| 久久婷婷香蕉热狠狠综合| 久久综合丝袜长腿丝袜| 小说区图片区综合久久88|