TMR0為8位寬,有一個可選的預(yù)分頻器,用于通用目的,可用于定時和計(jì)數(shù)。
TMR1為16位寬,附帶一個可編程的預(yù)分頻器和一個可選的低頻時基振蕩器,適合與CPP模塊配合使用來實(shí)現(xiàn)輸入捕扣或輸出比較功能,也可于定時和計(jì)數(shù)。
TMR2為8位寬,附帶一個配合使用來實(shí)現(xiàn)PWM脈沖寬度調(diào)制信號的產(chǎn)生,只能用于定時。
TMR0用作定時器時,定時器時鐘=系統(tǒng)時鐘/4;
寫TMR0時,會產(chǎn)生2個周期的的延時,如果不使用前置分頻器,可通過設(shè)置
初值進(jìn)行補(bǔ)償。
例如 需要定時200個時鐘周期時,TMR0 = 256 -200 + 2= 58
OPTION_REG:
bit5 T0CS:TMR0 Clock Source Select bit
1 = TransiTIon on T0CKI pin
0 = Internal instrucTIon cycle clock(CLKO)
bit 4 T0SE:TMR0 Source Edge Select bit
1 = Increment on high-to-low transiTIon on T0CKI pin
0 = Increment on low-to-high transiTIon on T0CKI pin
bit 3 PSA:Prescaler Assignment bit
1 = Prescaler is assigned to the WDT
0 = Prescaler is assigned to the Timer0 module
bit2-0 PS2:PS0:Prescaler Rate Select bits
任何時候?qū)MR0寄存器進(jìn)行一次寫操作后,其計(jì)數(shù)功能將被禁止2個指令周期。
給大家一個意見:如果想用TMR0實(shí)現(xiàn)精確的定時,一旦用了預(yù)分頻器后就不要對TMR0做任何寫操作。
注意:在中斷服務(wù)程序中查詢TMR0中斷時,既要查詢T0IE位,還要查詢T0IF位。
來源;21ic