タイマー0概要

カウントレジスタ:8/16bitアップカウント
クロック源:FOSC/4及び外部クロックを選択可能
カウント値がオーバーフローすると割り込み発生可能
プリスケーラ: 2 4 8 16 32 64 128 256
カウント値はTMR0L,TMR0Hレジスタに書き込むことにより設定
スリープモード時はカウント動作しない
カウント値を0~0xffffか0~0xff以外で周期動作させるにはオーバーフロー発生時にカウント値をソフトウェアで設定する必要がある。

クロックよりTMR0L,TMR0Hレジスタの設定値の計算例

JavascriptによりTMR0レジスタの値により任意の周波数で周期割り込みを発生させる場合の設定例を計算する
CLK=MHz(FOSC/4)
周波数(F)=Hz

プリスケーラ(p) 1 2 4 8 16 32 64 128 256
目標周波数
f=1/t
目標分周比
d=CLK/f
分周比(dp=d/p)
8bit/16bit
TMR計算式
TMR0L
TMR0H
TMR0H:TMR0L
出力周波数
誤差(%)

タイマー設定例(入力条件よりXC8向けソースを表示)

条件入力

CLK=MHz(内部クロックの場合はFOSC/4を入力)
TMR0=
プリスケーラ
8bit 16bit
FOSC/4 外部

XC8 Cコンパイラ向けのサンプルソース