51微控制器計數器怎麼用,51微控制器計數器怎麼用

時間 2021-09-06 17:09:56

1樓:匿名使用者

51微控制器是基礎入門的一個微控制器,還是應用最廣泛的。

51微控制器的定時/計數器的概念

微控制器中,脈衝計數與時間之間的關係十分密切,每輸入一個脈衝,計數器的值就會自動累加1,只要相鄰兩個計數脈衝之間的時間間隔相等,則計數值就代表了時間的流逝,因此,微控制器中的定時器和計數器其實是同一個物理的電子元件,只不過計數器記錄的是微控制器外部發生的事情(接受的是外部脈衝),而定時器則是由微控制器自身提供的一個非常穩定的計數器,這個穩定的計數器就是微控制器上連線的晶振部件;mcs-51微控制器的晶振經過12分頻之後提供給微控制器穩定脈衝;晶振的頻率是非常準確的,所以微控制器的計數脈衝之間的時間間隔也是非常準確的。

51微控制器的定時/計數器的工作原理

加1計數器輸入的計數脈衝有兩個**,一個是由系統的時鐘振盪器輸出脈衝經12分頻後送來;一個是t0或t1引腳輸入的外部脈衝源。

作為定時器使用時,定時器計數8051微控制器片內振盪器輸出經過12分頻後的脈衝個數,即:每個機器週期使定時器t0/t1的暫存器值自動累加1,直到溢位,溢位後繼續從0開始迴圈計數;所以,定時器的解析度是時鐘振盪頻率的1/12;

作為計數器使用時,通過引腳t0(p3.4)或t1(p3.5)對外部脈衝訊號進行計數,當輸入的外部脈衝訊號發生從1到0的負跳變時,計數器的值就自動加1由於檢測一個從1到0的下降沿需要2個機器週期,因此要求被取樣的電平至少要維持一個機器週期。

當晶振頻率為12mhz時,最高計數頻率不超過1/2mhz,即計數脈衝的週期要大於2微秒。;計數器的最高頻率一般是時鐘振盪頻率的1/24;

由此可知,不論是定時器還是計數器工作方式,定時器t0和t1均不佔用cpu的時間,除非定時器/計數器t0和t1溢位,才可能引起cpu中斷,轉而去執行中斷處理程式。所以說,定時器/計數器是微控制器中效率高而工作靈活的部件。

2樓:平淡是真

可以利用51微控制器的計數器t0、t1,例如用計數器0的外部計數脈衝輸入端t0計數,當計滿100個脈衝數量後,觸發中斷。進入計數服務中斷程式。

51微控制器,計數器和定時器具體這麼用?計數器記的是誰的脈衝數?

3樓:水依若雨

定時器和計數器雖然有定時和技術兩種工作模式,但其本質都是使用加法計數器對脈衝進行計數。定時器/計數器每接受一個計數脈衝,加法計數器的值就加1;計滿時則發生溢位,計數器又從0開始計數並置溢位標誌位(tf0=1或tf1=1)。

1)定時模式

在此模式下,計數器的輸入脈衝是由晶振12分頻獲得的。例如,晶振頻率為12mhz的值加1.這樣就可以根據計數值計算定時時間,也可以根據定時時間計算計數器的初值。

2)計數模式

在此模式下,計數器的輸入脈衝是由外部引腳(t0或t1)輸入的。外部引腳出現下降沿時,對應計數器的值加1.如果設定計數器的初值,那麼讀取當時計數器就可以計算脈衝個數。

完全手打,請採納

51微控制器計數器如何使用,我想要一個簡單一點的程式

4樓:匿名使用者

將定時器0或者1設定為計數器模式就可以了。舉例如下:

org 0000h

ljmp main

org 000bh

ljmp t0isr

org 0030h

main:

mov tmod,#06h

mov th1,#0ffh

mov tl1,#0ffh

setb tr1

setb et1

setb ea

sjmp $

t0isr:

inc a

mov p1,a

retiend

5樓:匿名使用者

我可以的,明天告訴你,想用什麼顯示?

51微控制器如何用計數器檢測脈衝訊號(高低電平),程式怎麼做!沒有思路!

6樓:之何勿思

可以利用51微控制器的計數器t0、t1,例如用計數器0的外部計數脈衝輸入端t0計數,當計滿100個脈衝數量後,觸發中斷。進入計數服務中斷程式。

如果有脈衝訊號,經過電容微分後,在下降沿會產生一個向下的尖端脈衝,電阻r2是作為一個偏置,當有向下的尖端脈衝來後,反相端的電壓會低於同向端的電壓。

從而比較器輸出高電平,這個電路圖要注意的兩個引數是,1,比較器的選擇,你可以選lm339,要加上拉電阻。

7樓:匿名使用者

你是要記頻率嗎,用t1和t0分別做定時和計數,定時一秒鐘,就可以了讀t0的數值了

8樓:

不知道你檢測來做什麼用處

一般用t0埠作檢測 如果要測頻率,可以再用一個定時器定時讀取計數值

51微控制器計數器怎麼使用 ?

9樓:melody丶丨

設定t0模式 為計數模式就行了 就是tmod的c/t位置1;

脈衝從t0輸入 t0就計數了

你讀取th0和tl0就曉得脈衝個數了

有了這個脈衝個數 輸出到數碼管即ok

10樓:小周愛嘮叨

main()

}void timer0() interrupt 1

51微控制器如何同時使用定時器和計數器採集資料?

11樓:匿名使用者

這是我根據頻率計程式修的

//用定時計數器1作為脈衝計數器(p3.5引腳正是輸入功能),定時器0作為定時器用,定時50ms產生中斷

//中斷4次後(即0.2s)讀計數器1的資料

#include

#define uint unsigned int

#define uchar unsigned char

//定義以i/o口的功能

sbit rs=p1^3;//液晶屏寫選擇,0命令 1資料

sbit rw=p1^4;//液晶屏讀寫選擇

sbit lcden=p1^5;//液晶屏使能

#define db p2 //定義p2為資料輸出口,寫資料時用db代替p2,增加液晶屏程式的通用性

//更改硬體接線時,只更改此處,而不必去更改液晶屏讀寫子程式

uchar aa;//計中斷次數

uint bb,cc,dd;//儲存計數器的值

void delay1ms(unsigned int i) //1ms延時程式}}

void init()//初始化設定

void write_com(uchar com)//向液晶屏寫命令

void write_date(uchar date)//向液晶屏寫資料

void init2()//液晶屏初始化

void display4(unsigned int number) //單行多位顯示程式

void main()//主程式很簡單

}void timer0()interrupt 1//注意:定時器0的中斷序號為1}

12樓:

timer1作計數器,timer0作定時器。不能只用一個同時做兩件事的。

13樓:微享樂

開兩個中斷,一個定時,一個計數

14樓:duhv指溫

系統和硬體都具有升級的空間,但主要還是看你對電腦的用途和要求!這個配置,玩一般電腦遊戲,辦公等等都不會有問題!沒有升級 的必要!

當然,對電子產品有狂熱追求的那就可以選擇升級!顯示卡,記憶體,硬碟都有升級空間!

51微控制器計數器怎麼使用 **求助大神啊

15樓:melody丶丨

設定t0模式 為計數模式就行了 就是tmod的c/t位置1;

脈衝從t0輸入 t0就計數了

你讀取th0和tl0就曉得脈衝個數了

有了這個脈衝個數 輸出到數碼管即ok

16樓:落葉追秋風不動

網上有微控制器的教程,很多的,裡面說的很詳細的。

微控制器計數器問題,有關微控制器計數器的問題

採用中斷,多工查詢,好好協調,不至於有59ms的。請問怎麼讀定時器0的數值?使用傳送指令即可。但是,如果定時器0處於 計數中 數值的準確讀取,就比較困難。外部計數最好用計數中斷來做,要不很容易會漏掉脈衝的 你用中斷就好了 還有就是,如果你用的18b20測溫的話,你就不能一直測了,過段時間採集一次吧 ...

用微控制器c51,c語言編0 9計數器程式!謝謝

太陽 羊 你的硬體電路有問題啊,微控制器31號腳要接高電平還有,你的數碼管接法也不對啊 看你的排阻接法,你的數碼管要用共陰極的 當加到9之後,再按一下,是不是又恢復到0啦?下面是更改的回答 include unsigned char a unsigned char code table void i...

請問,51微控制器我同時把計數器1和定時器0開啟,定時器1計數到255的時候,把TR1 TR0 0都關閉

aimei126良 要看你的定時器的工作方式,初值是多少。好好看看書吧 簡單 計數器1和定時器0都用中斷,tmod 0x61 定時器0方式1,計數器1方式2th0 0xfc 1ms初值 tl0 0x18 1ms初值 th1 0x0 tl1 0x0 et0 1 tr1 1 et1 1 ea 1 whi...