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