欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機簡易頻率計源代碼

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年10月28日   【字體:
51hei原創文章歡迎轉載但是必須保留版權,頻率輸入在定時器1口就行了.
//定時器0 設置定時時間1秒   定時器1 設置計數1秒內的脈沖數量
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint ff;   //接受頻率值
uchar start=1;   //定時器,計數模式啟動變量
code uchar seg[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};
code uchar tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void delay(uint k)  //延時函數
{
 while(k--);      
}
void show(uint k)  //數值顯示函數
{
  static uchar i,j;
  uint ss[5];
  i=0;
  do
  {
   ss[i]=k%10;
   i++;
  }while(k/=10);
  for(j=0;j<i;j++)
  {
   P0=seg[ss[j]];
   P2=tab[j];
   delay(100);
   P0=0xff;
   P2=0xff;
  } 
}

void time0_init()
{
 TMOD|=0x01;  //定時器0 定時模式 計數范圍65536
 TH0=0x3c;         //定時初值50ms
 TL0=0xb0;
 TR0=0;     //暫停定時器0
}
void time1_init()
{
 TMOD|=0x50;     //定時器1  計數模式,計數范圍65536
 TH1=0;      //計數初值0
 TL1=0;
 TR1=0;    //暫停計數器
}
void str_init()    //定時器中斷
{
 EA=1;
 ET0=1;
}
void time0_event() interrupt 1
{
  static uchar i;
  i++;
  TH0=0x3c;         //定時初值50ms
  TL0=0xb0;
 if(i==20)
 {
  i=0;
  TR1=0;    //停止計數
  TR0=0;          //停止定時
  ff=(TH1*256+TL1);   //求出頻率值   就是1秒內脈沖次數
  TH1=0;          //計數值清零
  TL1=0;
  TH0=0x3c;         //定時初值50ms
  TL0=0xb0;
  start=1;               //啟動定時器開啟變量
 }
}
 
void main()
{
 time0_init();
 time1_init();
 str_init();
 while(1)
 {
  if(start==1)
  {
   TR0=1;  //啟動定時器
   TR1=1;  //啟動計數器
   start=0;  //關閉啟動變量位 保證1秒時間
  }
  show(ff);
 }
}
關閉窗口

相關文章