8052計數器(定時器0和計數器1)

2021-06-06 10:47:56 字數 1465 閱讀 8387

之前由於同學的乙個小實驗,需要用到頻率計,所以自己想搞乙個出來,於是網上找了很多資料,簡單的有用8052微控制器的定時器和計數器的結合來測其訊號的頻率,還有的是c8051f的捕捉功能,想來想去,還是想用用自己熟悉的8052的計數器功能,畢竟平時都用的是定時器功能,很少用到計數器功能,以便更加深入的運用8052,以後再學習c8051f。

搞了好幾天,時鐘沒有結果,計數功能倒是有了,但是不能在1s的時間裡計數,很是頭痛,忽然有一天,我的同學找到了一段**,說是可以執行的,於是我拿過來,把led改了一改,燒錄之後,還真的成功了!甚是大喜啊!這裡附上源**;

/*******

函式功能:51微控制器製作的頻率計(當然這個頻率計的頻率範圍是有限制的理論值為2hz-1mhz)

編譯環境:keil4

測試環境:科技創新實驗室學習板

設計思想:測頻率,其實就是乙個定時計數的過程,在一定時間內,檢測脈衝的個數,最後用脈衝個數除以時間便可以得到頻率

修改 : liming wangqidong

板子 : ccdz-c board

cpu : stc89c52rc

晶振 : 12mhz

修改部分: led顯示部分 4位顯示 2hz - 9999hz

版本 : 0.1.0

************/

#include #include #define uchar unsigned char

#define uint unsigned int

sbit dula=p2^6;

sbit wela=p2^7;

//uchar seg_du=; //數碼管的段選

uchar seg_du=; //數碼管的段選

uchar dbuf[4]=; //用來裝顯示資料的空陣列

uint count;

uint cou,cou1;

void delay(void) //延時函式用於數碼管動態掃瞄

void display() // 數碼管顯示函式

void timer0 (void )interrupt 1 //定時器中斷,用與定時計數

}void time1(void )interrupt 3 //計數器中斷,用於計數

void time0_init() //定時器0初始化

void time1_init() // 計數器1初始化

void main()

}

也感謝網上的網友提供,

結果還是可以的,只不過和自由四位顯示,附上幾張**:

訊號發生器的頻率為5.677khz,led上顯示還可以吧。。。

定時器 計數器

它由高8位和低8位兩個暫存器thx和tlx組成。tmod是定時器 計數器的工作方式暫存器,即控制它的工作方式。tcon是控制t0 t1的啟動和停止及設定溢位標誌。1 工作方式暫存器tmod注 tomd不可位定址 m1m0 工作方式 功能說明 00方式0 相容8048微控制器的13位定時器,thx的8...

定時器 計數器

定時 計數器的實質是加1計數器 16位的 由高8位和低8位兩個暫存器thx和tlx組成。低四位為外部中斷使用,高四位控制定時器 計數器。其中tf0 tf1為計數溢位中斷標誌位。tr0 tr1置1時,允許定時器 計數器執行 必要條件 如果該位為0,則一定禁止使能 符號1符號2 名稱說明 tr0計數執行...

計數器 定時器8253

資料匯流排緩衝器 讀 寫控制邏輯 控制字暫存器和3個結構完全相同的計數器,分別編號為0 1 2.8253與系統資料匯流排相連線時用的介面電路。資料資訊 cpu的初始化控制字 cpu向某一計數器寫入的計數初值 從計數器讀出的計數值 1.cs 片選訊號 2.rd 讀訊號 3.wr 寫訊號 4.a1a0 ...