<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 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 九九综合九九综合| 亚洲综合在线视频| 色综合久久综合网观看| 亚洲国产成人九九综合| 热久久综合这里只有精品电影| 久久婷婷色香五月综合激情| 婷婷综合激六月情网| 国产成人+综合亚洲+天堂| 人人狠狠综合久久亚洲88| 久久婷婷五月综合97色| 久久综合AV免费观看| 精品久久久久久综合日本| 国产成人综合野草| 亚洲综合视频在线观看| 一本综合久久国产二区| 亚洲av综合av一区二区三区| 久久青青草原综合伊人| 亚洲国产成人久久综合野外| 2021精品国产综合久久| 久久久久综合网久久| 琪琪五月天综合婷婷| 九色综合狠狠综合久久| 婷婷亚洲综合一区二区| 色综合久久中文色婷婷| 人人狠狠综合久久88成人 | 丁香六月婷婷综合激情动漫| 亚洲综合偷自成人网第页色| 图图资源网亚洲综合网站| 国产成人AV综合久久| 综合久久久久久久综合网| 99久久综合国产精品免费| 久久久久青草线蕉综合超碰| 亚洲国产成+人+综合| 天天av天天翘天天综合网| 天天狠狠色综合图片区| 婷婷亚洲综合一区二区| 久久综合狠狠综合久久97色| 国产精品无码久久综合| 亚洲国产综合人成综合网站00| 亚洲综合激情六月婷婷在线观看 | 亚洲综合一区二区国产精品|