不錯的51單片機定時器初值計算設定軟件,精確計算定時器的時間常數.
PIC的指令周期是4個震蕩周期,在沒有使用分頻器的情況下,TMR0 會在每個指令周期信號(等于晶體振蕩器產生的主時鐘周期的 4 倍)到來時自動加 1。在配置了分頻器的情況下,TMR0 會在每次收到由分頻器將指令周期信號分頻一個固定倍數后產生的信號時自動加 1。如果 TMR0在累加計數的過程中,CPU 執行一條往 TMR0 中寫入數據的指令,則累加計數器的加 1 操作將被推遲兩個指令周期,重新開始計數。這兩個指令周期的偏差在用戶編寫時間精度要求較高的程序時應引起注意,可以通過在每次寫入 TMR0 時給一個調整值的方法來解決。
假設的是時鐘頻率為 4MHz。因此,一個指令周期就是一個微秒(μs)的時間。
,也就是計數一次時間是1us。
沒有分頻比定時器的初值計算公式:T0=256-Tc+2
其中TC是想得到的次數。加2的原因是寫值的時候要消耗兩個指令周期。
如果分頻器給了定時器,最好不要再讀寫TMR0了,不然會照成誤差。
假設分頻器是16,晶振是4Mhz,一次由00到FF的時間是16*256=4096us。假設50ms的時間
在中斷每次加上4096,
主程序檢查是不是超過50000,超過了就減掉50000,這樣算是50ms就得到了。
- PC官方版
- 安卓官方手機版
- IOS官方手機版