<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 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 成人综合婷婷国产精品久久蜜臀| 色综合一区二区三区| 亚洲综合亚洲综合网成人| 精品国产综合区久久久久久| 狠狠人妻久久久久久综合蜜桃| 青青草原综合久久| 天天做天天做天天综合网| 亚洲综合精品香蕉久久网97| 天天综合网天天做天天受| 色777狠狠狠综合| 五月婷婷开心综合| 伊人色综合一区二区三区影院视频 | 国产色婷婷五月精品综合在线| 久久婷婷五月综合色奶水99啪| 色综合色综合色综合色综合网| 亚洲综合伊人久久综合| 婷婷久久香蕉五月综合| 天天久久影视色香综合网| 亚洲综合伊人久久大杳蕉| 狠狠爱天天综合色欲网| 色婷婷久久综合中文久久一本`| 亚洲综合在线视频| 亚洲综合国产精品| 婷婷久久香蕉五月综合加勒比| 国产AV综合影院| 久久综合伊人77777| 亚洲综合国产精品第一页| 亚洲AⅤ优女AV综合久久久| 熟天天做天天爱天天爽综合网| 国产亚洲综合精品一区二区三区| 色综合天天综合中文网| 久久婷婷五月综合色高清| 天天躁夜夜躁狂狂躁综合| 久久婷婷五月综合97色 | 亚洲欧洲国产综合AV无码久久| 久久综合九色综合网站| 99久久综合久中文字幕| 色综合色综合久久综合频道| 亚洲精品综合在线影院| 六月婷婷缴清综合在线| 热久久综合这里只有精品电影|