6定時(shí)器/計(jì)數(shù)器TMRO
PIC單片機(jī)16F84中有一個(gè)定時(shí)器,此定時(shí)器也可用于計(jì)數(shù),因此稱為定時(shí)器/計(jì)數(shù)器,符號為TMRO。TMRO可用于定時(shí)控制、延時(shí)、對外部事件計(jì)數(shù)和檢測等場合。TMRO是一個(gè)8位增量(加1)計(jì)數(shù)器。它在數(shù)據(jù)存貯器中的地址為01。定時(shí)器所用的時(shí)鐘源可以是內(nèi)部系統(tǒng)時(shí)鐘(OSC/4,即四倍振蕩周期),也可以是外部時(shí)鐘。若TMRO對內(nèi)部系統(tǒng)時(shí)鐘的標(biāo)準(zhǔn)脈沖系列進(jìn)行計(jì)數(shù)時(shí),就成為定時(shí)器;對外部脈沖進(jìn)行計(jì)數(shù)時(shí)TMRO就成為計(jì)數(shù)器。
不管是定時(shí)還是計(jì)數(shù)方式,TMRO在對內(nèi)部時(shí)鐘或?qū)ν獠渴录?jì)數(shù)時(shí),都不占用CPU時(shí)間,除非TMRO溢出,才可能中斷CPU的當(dāng)前操作??梢?,定時(shí)器是單片機(jī)16F84中效率高且工作靈活的部件。
為了擴(kuò)大定時(shí)或計(jì)數(shù)的范圍,配合TMRO的使用,還有一個(gè)可編程預(yù)定標(biāo)器。此定標(biāo)器實(shí)際上是一個(gè)可編程分頻器。
TMRO的內(nèi)部結(jié)構(gòu)示意圖如附圖所示。其工作方式由數(shù)據(jù)存儲(chǔ)器中的項(xiàng)選寄存器OPTION控制。OPTION是一個(gè)可讀/寫的寄存器,如附表所示。它含有配置TMRO/WDT預(yù)定標(biāo)器、外部INT中斷、TMRO等的各種控制位。
TMRO的定時(shí)、計(jì)數(shù)方式是由OPTION寄存器中的D5(即TOCS位)確定。當(dāng)TOCS=0時(shí),工作于定時(shí)器方式;當(dāng)TOCS=1時(shí),工作于計(jì)數(shù)器方式。作定時(shí)器時(shí),每個(gè)指令周期加1(無預(yù)分頻時(shí));而作計(jì)數(shù)器時(shí),則在每個(gè)RA4/TOCKI引腳上電平變化時(shí)加1。OPTION寄存器的位4(TOCS位)決定外部脈沖的觸發(fā)方式,當(dāng)TOSE=1,下降沿觸發(fā);TOSE=0,上升沿觸發(fā)。當(dāng)TMRO內(nèi)部計(jì)數(shù)器發(fā)生計(jì)數(shù)溢出(從FFh→00h)時(shí),溢出位送入中斷控制寄存器INTCON。
由附圖可知,預(yù)分頻器也是一個(gè)8位計(jì)數(shù)器。其分頻數(shù)是由OPTION寄存器中的PS2~PS0三位值來改變。分頻數(shù)可以是以下8種之一:1∶1、1∶2、1∶4、1∶8、1∶16、1∶32、1∶64和1∶128。
當(dāng)分頻器用于TMRO時(shí),所有寫入TMRO的指令,如CLRF 1、MOVWF 1、BSF 1、等都將對預(yù)分頻器清零。需要注意的是,預(yù)分頻器是不能讀寫的。此分頻器可用于TMRO,也可用于WDT,其切換由軟件控制。為了避免意外的芯片復(fù)位,當(dāng)需要切換時(shí),必須執(zhí)行相應(yīng)的一段程序,以下是從WDT切換到TMRO時(shí)所需執(zhí)行的程序:
CLRWDT ;
對WDT和預(yù)定標(biāo)器清零
BSF STATUS,RP0 ;選中存儲(chǔ)體1
MOVLW B′xxxx0xxx′ ;PSA=0,選中TMRO
MOVWF OPTION ;送入OPTION寄存器
BCF STATUS,RP0 ;復(fù)位存儲(chǔ)體0
成都 衛(wèi)東
知識競賽試題:
21根據(jù)本版左下文介紹,請以表的形式列出PIC16C8X單片機(jī)(有兩個(gè)存儲(chǔ)體和A、B兩口)至少11個(gè)專用寄存器的名稱和地址。

|