TMR0為8位寬,有一個(gè)可選的預(yù)分頻器,用于通用目的,可用于定時(shí)和計(jì)數(shù)。
TMR1為16位寬,附帶一個(gè)可編程的預(yù)分頻器和一個(gè)可選的低頻時(shí)基振蕩器,適合與CPP模塊配合使用來實(shí)現(xiàn)輸入捕扣或輸出比較功能,也可于定時(shí)和計(jì)數(shù)。
TMR2為8位寬,附帶一個(gè)配合使用來實(shí)現(xiàn)PWM脈沖寬度調(diào)制信號的產(chǎn)生,只能用于定時(shí)。
TMR0用作定時(shí)器時(shí),定時(shí)器時(shí)鐘=系統(tǒng)時(shí)鐘/4;
寫TMR0時(shí),會(huì)產(chǎn)生2個(gè)周期的的延時(shí),如果不使用前置分頻器,可通過設(shè)置
初值進(jìn)行補(bǔ)償。
例如 需要定時(shí)200個(gè)時(shí)鐘周期時(shí),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
任何時(shí)候?qū)MR0寄存器進(jìn)行一次寫操作后,其計(jì)數(shù)功能將被禁止2個(gè)指令周期。
給大家一個(gè)意見:如果想用TMR0實(shí)現(xiàn)精確的定時(shí),一旦用了預(yù)分頻器后就不要對TMR0做任何寫操作。
注意:在中斷服務(wù)程序中查詢TMR0中斷時(shí),既要查詢T0IE位,還要查詢T0IF位。
來源;21ic