在80c51單片機(jī)內(nèi)部,有2個定時器/計(jì)數(shù)器,分別稱為定時器/計(jì)數(shù)器0、定時器/計(jì)數(shù)器1。每個定時器/計(jì)數(shù)器都具有計(jì)數(shù)和定時兩大功能,并具有3~4種工作方式?,F(xiàn)用定時器/計(jì)數(shù)器0的方式1來說明定時器/計(jì)數(shù)器內(nèi)部結(jié)構(gòu)與工作原理。
1.定時器/計(jì)數(shù)器通道內(nèi)部結(jié)構(gòu)及工作原理
80c51單片機(jī)定時器計(jì)數(shù)器0內(nèi)部結(jié)構(gòu)如圖6-7所示。定時/計(jì)數(shù)器內(nèi)的核心器件是加1計(jì)數(shù)器,加1計(jì)數(shù)器由兩個特殊功能寄存器th0與tl0組成。當(dāng)定時計(jì)數(shù)器工作于定時方式,加1脈沖由系統(tǒng)時鐘fosc經(jīng)12分頻后產(chǎn)生。當(dāng)定時計(jì)數(shù)器工作于計(jì)數(shù)方式,加1脈沖由t0引腳直接提供。定時器工作于定時還是計(jì)數(shù)方式,取決于選擇開關(guān) ,當(dāng) =0時工作于定時方式, =1時工作于計(jì)數(shù)方式。加1脈沖要經(jīng)過啟動開關(guān)才能到達(dá)加1計(jì)數(shù)器,啟動開關(guān)由與門的輸出端控制,其輸入端分別接啟動控制位tr0與或門輸出端?;蜷T的輸入端分別接gate位與外部中斷引腳 。啟動開關(guān)的控制方式將在下文中介紹。當(dāng)加1 計(jì)數(shù)器溢出時,由硬件自動將中斷標(biāo)志tf0置1,以此向cpu發(fā)中斷請求。
定時計(jì)數(shù)器4種工作方式的主要區(qū)別在于加1計(jì)數(shù)器,加1計(jì)數(shù)器可以是由th0、tl0組成的16位或13位計(jì)數(shù)器,也可以tl0組成的8位計(jì)數(shù)器。關(guān)于4種方式將在后文詳細(xì)介紹。
2.計(jì)數(shù)功能
計(jì)數(shù)功能的實(shí)質(zhì)就是對外來負(fù)脈沖進(jìn)行計(jì)數(shù)。80c51單片機(jī)用t0(p3.4)、t1(p3.5)兩個引腳輸入定時計(jì)數(shù)器0與定時計(jì)數(shù)器1計(jì)數(shù)脈沖信號。
注意:計(jì)數(shù)方式下是對外來負(fù)脈沖進(jìn)行計(jì)數(shù),且到達(dá)t0(t1)端時不一定有規(guī)律。
3.定時功能
定時的實(shí)質(zhì)也是計(jì)數(shù),不過定時時間不是對外來脈沖進(jìn)行計(jì)數(shù),而是對cpu的內(nèi)部時鐘脈沖的12分頻(機(jī)器周期)進(jìn)行計(jì)數(shù),即每過一個機(jī)器周期就加一次1。例如:設(shè)計(jì)數(shù)器是8位的tl0,計(jì)數(shù)初值為100,cpu時鐘頻率為12mhz,則機(jī)器周期為1μs,當(dāng)產(chǎn)生計(jì)數(shù)溢出時,表示定時了(256-100)´1μs=156μs,從而就起到了定時器的作用。