新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于PIC16F877A的簡(jiǎn)易數(shù)字頻率計(jì)

基于PIC16F877A的簡(jiǎn)易數(shù)字頻率計(jì)

作者: 時(shí)間:2010-12-28 來(lái)源:網(wǎng)絡(luò) 收藏

  while(1) {
  ccpint(); //CCP模塊工作于捕捉方式初始化
  initial(); //系統(tǒng)其它部分初始化
  if(FLAG2==0) {
  s[0]=COUNTER; //第一個(gè)存儲(chǔ)COUNTER的值
  s[1]=0X0A;
  s[2]=0X0A;
  s[3]=0X0A; //后面的LED將顯示DARK
  }
  display( ); //調(diào)用顯示子程序
  keyscan(); //鍵盤掃描
  data=0x00; //存儲(chǔ)數(shù)組指針賦初值
  TMR1H=0;
  TMR1L=0; //定時(shí)器1清0
  CCP1IF=0; //清除CCP1的中斷標(biāo)志,以免中斷一打開(kāi)就進(jìn)入
  //中斷
  ei( ); //中斷允許
  TMR1ON=1; //定時(shí)器1開(kāi)
  while(1){
  if(COUNT==0)break;
  } //等待中斷次數(shù)結(jié)束
  di(); //禁止中斷
  TMR1ON=0; //關(guān)閉定時(shí)器
  keyscan(); //鍵盤掃描
  if(FLAG1==1) keyserve() ; //若確實(shí)有鍵按下,則調(diào)用鍵服務(wù)程序
  if(FLAG2==0) continue; //如果沒(méi)有按下確定鍵,則終止此次循環(huán),
  //繼續(xù)進(jìn)行測(cè)量
  //如果按下了確定鍵,則進(jìn)行下面的數(shù)值轉(zhuǎn)換和顯示工作
  if(COUNTER==0x01) FREQUENCY(); //COUNTER=1,則需要進(jìn)行處理
  if(COUNTER==0x02) PERIOD(); //COUNTER=2,則需要進(jìn)行周期處理
  if(COUNTER==0x03) OCCUPATIONAL();//COUNTER=3,則需要進(jìn)行占空比處理
  if(COUNTER==0x04) PULSE(); //COUNTER=4,則需要進(jìn)行脈寬處理
  k=5;
  if(RE51){
  RE5=RE5*1000; //若RE51,則乘以1 000,保證小數(shù)點(diǎn)的精度
  k=0x00;
  }
  else if(RE510){
  RE5=RE5*1000; //若RE510,則乘以1 000,保證小數(shù)點(diǎn)的精度
  k=0x00;
  }
  else if(RE5100){
  RE5=RE5*100; //若RE5100,則乘以100,保證小數(shù)點(diǎn)的精度
  k=0x01;
  }
  else if(RE51000){
  RE5=RE5*10; //若RE51000,則乘以10,保證小數(shù)點(diǎn)的精度
  k=0x02;
  }
  else RE5=RE5 ;
  uo=(int)RE5;
  sprintf(s,%4d,uo); //把需要顯示的數(shù)據(jù)轉(zhuǎn)換成4位ASII碼,且放入數(shù)
  //組S中
  display();
  }
  }

本文引用地址:http://m.butianyuan.cn/article/173039.htm

上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉