1樓:芬明卓
一般最直接的想法就是,指定乙個計時值x,然後從0開始累加計數,計數到x表示時間到,可以處理事務了。這種處理方法,需要乙個數值比較器。
每計一次數,就比較一下。這對微控制器。
或者說硬體電路來講,乙個8位計數器。
就需要包含乙個8位數值比較器,實在不夠簡便。
第二種想法,是指定乙個計時值x,然後進行減計數,減計數到0表示時間到。這也要乙個比較器,只不過是個0值比較器,硬體電路上比上一種要簡單一些,但減計數器還是不常用。我們知道累加器才是最簡便的硬體電路之一。
上面兩種方法,都是軟體實現的定時器的合理想法。那麼硬體電路實現定時最簡便的方法是什麼呢?
那就是用累加器來實現。比如乙個8位的累加器,可以從0累加計數,計數到256時溢位,產生溢位訊號,就可以觸發事務處理了。
要是我們只需要計數10次就夠了,則可以將計數初值定義為246。那樣,計數10次後就可以達到256,產生溢位訊號了。
所以就有了(2^n-x)。n是計數器的位數;2^n就是最大計數值;x是計數初值。整個這段,表示我們需要的計時次數。
計數器每次計數的時間間隔是t,及計數週期。那麼總的計時時長m=計數週期×計數次數=t×(2^n-x),也就是m=(2^n-x)×t。
計數位數n由選用的微控制器確定,通常等於8,12,16或32等等,即8位、12位等計數器。計數週期t由定時器基礎時鐘確定,可通過設定定時器時鐘源和選擇時鐘分頻數確定。這兩項靈活性不大,一般在程式初始化時就應設定。
初值x可以在應用時,根據定時需求進行修改確定。
協調好n,t和x三者的設定,就可以完美實現定時功能了。
2樓:沙裡波特
你先確定微控制器型號。
微控制器計數初值的計算
3樓:數碼王子胖
1 可以按定時時間的計算公式, 計算出定時器的時間常數x:
定時時間t=(2的n次方-x)12/微控制器晶振頻率。
2 n為定時器的工作方式:
方式0時,n=13
方式1時,n=16
方式2時,n=8
3 根據定時時間和工作方式,計算出時間常數x把x轉換成二進位數,高8位送給th1,低8位送給tl1,就可以啟動定時器開始定時了。
例如: 工作在方式1,定時時間為1000微秒 晶振頻率=12mhz則 定時時間t=(2的16次方-x)12/12mhz=1000 解出 x=64536=fc18h
微控制器計數器問題,有關微控制器計數器的問題
採用中斷,多工查詢,好好協調,不至於有59ms的。請問怎麼讀定時器0的數值?使用傳送指令即可。但是,如果定時器0處於 計數中 數值的準確讀取,就比較困難。外部計數最好用計數中斷來做,要不很容易會漏掉脈衝的 你用中斷就好了 還有就是,如果你用的18b20測溫的話,你就不能一直測了,過段時間採集一次吧 ...
51微控制器計數器怎麼用,51微控制器計數器怎麼用
51微控制器是基礎入門的一個微控制器,還是應用最廣泛的。51微控制器的定時 計數器的概念 微控制器中,脈衝計數與時間之間的關係十分密切,每輸入一個脈衝,計數器的值就會自動累加1,只要相鄰兩個計數脈衝之間的時間間隔相等,則計數值就代表了時間的流逝,因此,微控制器中的定時器和計數器其實是同一個物理的電子...
微控制器問題,微控制器問題
船長 12mhz 12 1s 1ms 1000065536 10000 55536 d8f0mov tmod,01h t0工作方式1mov tl0,0f0h t0初值mov th0,0d8 h t0初值setb tr0 啟動t0 setb et0 允許t0中斷 setb ea 開總中斷 龍宇防盜監控...