HT47R20
Rev. 1.10
16
2002-07-25
計數(shù)器
A
和定時
/
計數(shù)器
B
之間產(chǎn)生沖突
TMRAH
TMRAL
TMRC
為定時
/
計數(shù)器控制寄存器
定義定時
/
計數(shù)器的工作模式
名稱
應(yīng)在定時
/
計數(shù)器關(guān)閉的情況下
使用指令
MOV
訪問寄存器
TMRBH
TMRBL
用來定義定時
/
計數(shù)器的某些選項
計數(shù)的允許或禁止以及計數(shù)的觸發(fā)沿
定時
/
計數(shù)器的控制寄存器可以
位
0~2
功能
未定義
定義定時
/
計數(shù)器
TMR
作用沿
(0=
上升沿作用
1=
下降
沿作用
)
允許
/
禁止定時器計數(shù)
(0=
禁止
定義操作方式
(TN2,TN1,TN0)
000=
定時器模式
(
系統(tǒng)時鐘
)
001=
定時器模式
(
系統(tǒng)時鐘
/4)
010=
定時器模式
(RTC
輸出
)
011=A/D
時鐘模式
(
由
ADCR
寄存器決定
RC
振蕩
)
100=
計數(shù)器模式
(
外部時鐘
)
101=
脈沖寬度測量模式
(
系統(tǒng)時鐘
/4)
110=
未定義
111=
未定義
TMRC
寄存器
讀取時為
0
TE
3
TON
4
1=
允許
)
TN0
TN1
TN2
5
6
7
寫入定時器
B
就可以將定時
/
計數(shù)器的初始值放到預(yù)置寄存器中
數(shù)器的內(nèi)容
定時器
B
是定時
/
計數(shù)器的初始值預(yù)置寄存器
TN0 TN1
和
TN2
用來定義操作模式 計數(shù)器模式是用來計數(shù)外部事件 這表示時鐘來源為外部
TMR
引腳的輸入
A/D
時鐘模式是用來計數(shù)外部
A/D
時鐘
則作為普通定時器使用
其時鐘來源為內(nèi)部各種時鐘
高電平或低電平的持續(xù)時間進(jìn)行計數(shù)
計數(shù)的時鐘來源為指令時鐘
在計數(shù)器
A/D
時鐘或內(nèi)部定時器模式下
一旦定時
/
計數(shù)器開始計數(shù)即從定時
/
計數(shù)器的現(xiàn)行內(nèi)容
(TMRAH
和
TMRAL)
開始計數(shù)至
FFFFH
若發(fā)生溢出
TMRBL)
重新裝入加載值
并同時置位中斷請求標(biāo)志
(TF
在脈沖寬度測量模式下
當(dāng)
TON
和
TE
位的值都為
1
時
位的值為
0
則為由低電平到高電平
)
的轉(zhuǎn)變信號
為止
并且會將
TON
位清零
測量的結(jié)果會依然存放在定時
/
計數(shù)器之中
沖的寬度
而當(dāng)
TON
位重新置位為
1
只要
TMR
收到跳變脈沖
模式中
定時
/
計數(shù)器并不會根據(jù)邏輯電壓來計數(shù)
其根據(jù)的標(biāo)準(zhǔn)為信號的轉(zhuǎn)變沿
數(shù)器會從定時
/
計數(shù)器加載寄存器重新裝入初值 同時還會發(fā)出中斷請求 這種情況和定時和計數(shù)這兩個模
式一樣
若欲啟動計數(shù)器運(yùn)行
只要將定時器啟動位
(TON
測量模式中
TON
位在測量周期完成后
會自動被清除
除 定時
/
計數(shù)器的溢出可作為喚醒的信號或由掩膜選項設(shè)定為
PA
的
PFD
輸出 不管是何種操作模式 只
要將
0
寫入
ETI
位中即可將相對的中斷服務(wù)禁止
許
PFD
輸出
而執(zhí)行
SET PA.3
指令則禁止
PFD
輸出
若在定時
/
計數(shù)器關(guān)閉的情況下
將數(shù)據(jù)寫入定時
/
計數(shù)器的預(yù)置寄存器同時也會將該數(shù)據(jù)重新載入定
時
/
計數(shù)器之中 但若定時
/
計數(shù)器已經(jīng)開啟 寫入定時
/
計數(shù)器的數(shù)據(jù)只會保存在定時
/
計數(shù)器的預(yù)置寄存器
中 這時定時
/
計數(shù)器并不會馬上被改變而會繼續(xù)計數(shù)下去 直到發(fā)生溢出為止 此時再由加載寄存器裝入
新的初始值
一旦定時
/
計數(shù)器
(
讀取
TMRAH)
的數(shù)據(jù)被讀取
會將時鐘禁止
導(dǎo)致計數(shù)錯誤
所以程序編寫工程師必須考慮清楚才行
我們強(qiáng)烈建議在打開定時
/
計數(shù)器前先將要加載的數(shù)據(jù)寫入到
TMRBL TMRBH TMRAL
和
TMRAH
中去
因為在系統(tǒng)初始化后
TMRBL
TMRBH
TMRAL
和
TMRAH
的值是未知的
如果定時
/
計數(shù)器是打開的 那么
TMRBL TMRBH TMRAL
和
TMRAH
最好不要進(jìn)行讀寫操作 只
有在定時
/
計數(shù)器關(guān)閉并且使用
MOV
指令時
才能對這四個寄存器進(jìn)行讀寫操作
而讀取定時器
A
就可以得到定時
/
計
RC
振蕩模式由寄存器
ADCR
來決定
最后
脈沖寬度測量模式能夠?qū)ν獠恳_
TMR
的
定時器模式
計數(shù)器即從定時
/
計數(shù)器預(yù)置寄存器
(TMRBH
和
INTC1
的第四位
)
如果
TMR
收到由高電平到低電平
(
如果
TE
計數(shù)器就會開始數(shù)
直到
TMR
引腳回到原來的電平
也就是說一次只能計數(shù)一次脈
測量就會再次執(zhí)行下去
在脈沖測量
一旦發(fā)生計數(shù)溢出
計
TMRC
的第四位
)
的值設(shè)為
但在其它三種模式中
1
即可
在脈沖寬度
TON
位只可以用指令清
當(dāng)選擇
PFD
功能時
并且
PA.3
輸出為低電平
執(zhí)行
CLR PA.3
指令可以允
以避免發(fā)生錯誤
將時鐘禁止可能會