定時(shí)器功能在PIC單片機(jī)的應(yīng)用介紹
PIC單片機(jī)是基于RISC系統(tǒng)結(jié)構(gòu)的單片機(jī),最初的設(shè)計(jì)是支持PDP(編程數(shù)據(jù)處理器)計(jì)算機(jī)。大量的操作可以用來(lái)控制外圍設(shè)備。PIC單片機(jī)比微控制器具有更快的程序執(zhí)行能力。它是由微芯片技術(shù)公司于1889年發(fā)明的,是一種8位單片機(jī)。眾所周知,單片機(jī)其實(shí)就是一個(gè)處理器,內(nèi)存和外設(shè)在單個(gè)芯片中的組合。然而,該屬性也用于單片機(jī)的各種應(yīng)用程序。
定時(shí)器的結(jié)構(gòu)
定時(shí)器是由兩個(gè)寄存器組成的,其中一個(gè)寄存器是用來(lái)確定計(jì)數(shù)器的工作形式和功能的,另外一個(gè) 計(jì)時(shí)器 是用來(lái)控制單片機(jī)的啟動(dòng)和停止的,同時(shí)它也是設(shè)置溢出的一個(gè)標(biāo)志。
計(jì)數(shù)過(guò)程
每來(lái)一個(gè)脈沖計(jì)數(shù)器加1,當(dāng)加到計(jì)數(shù)器為全1(即FFFFH)時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請(qǐng)求(定時(shí)器/計(jì)數(shù)器中斷允許時(shí))。如果定時(shí)器/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿。
定時(shí)應(yīng)用
用作定時(shí)器:此時(shí)設(shè)置為定時(shí)器模式,加1計(jì)數(shù)器是對(duì)內(nèi)部機(jī)器周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時(shí)時(shí)間t 。
計(jì)數(shù)運(yùn)用
用作計(jì)數(shù)器:此時(shí)設(shè)置為計(jì)數(shù)器模式,外部事件計(jì)數(shù)脈沖由T0或T1引腳輸入到計(jì)數(shù)器。每來(lái)一個(gè)外部脈沖,計(jì)數(shù)器加1。但單片機(jī)對(duì)外部脈沖有基本要求:脈沖的高低電平持續(xù)時(shí)間都必須大于1個(gè)機(jī)器周期。
定時(shí)器的使用
定時(shí)器的使用主要分為五個(gè)步驟,首先是要打開(kāi)中斷的可以允許的位置,主要是對(duì)IE寄存器的控制,然后選擇定時(shí)器的工作的形式,定時(shí)器的一個(gè)格式是TMOD的形式,主要有四種方式。第一種計(jì)數(shù)的方式是十三位加一的形式,第二種是十六位加一的計(jì)數(shù)器,第三種的定數(shù)器被分解成兩部分,一個(gè)是八位的寄存器,另外一個(gè)是八位的計(jì)數(shù)器。第三步就是要為定時(shí)器進(jìn)行賦值,首先定時(shí)器的初值是等于計(jì)數(shù)器模值減去計(jì)數(shù)器記滿的招滿值,而定時(shí)器的初值是等于模值減去預(yù)定時(shí)的時(shí)間與單片機(jī)時(shí)鐘周期的十二倍。接下來(lái)就是啟動(dòng)計(jì)時(shí)器,當(dāng)TRO為0的時(shí)候,停止TO開(kāi)始計(jì)數(shù),而TRO值為1的時(shí)候,就啟動(dòng)TO進(jìn)行計(jì)數(shù)。當(dāng)TFO為0的時(shí)候,沒(méi)有TO的中斷,這時(shí)是沒(méi)有硬件復(fù)位,而當(dāng)值為1的時(shí)候有TO溢出中斷的情況。當(dāng)TR1為0的時(shí)候,停止TI進(jìn)行計(jì)數(shù),而值為1的時(shí)候開(kāi)啟T1進(jìn)行計(jì)數(shù)。
當(dāng)TF1為0的時(shí)候,沒(méi)有T1的中斷,為1 的時(shí)候會(huì)出現(xiàn)T1的溢出中斷情況。當(dāng)IE1的值為0的時(shí)候時(shí),出現(xiàn)硬件的復(fù)位而當(dāng)其值為1的時(shí)候出現(xiàn)中斷。當(dāng)IT1的值為0的時(shí)候INT1出現(xiàn)電平觸發(fā)的情況,也就是軟件復(fù)位,而當(dāng)值為1的時(shí)候,INT1的負(fù)邊沿會(huì)出現(xiàn)觸發(fā)的情況。當(dāng)IE0的值為0時(shí)會(huì)出現(xiàn)硬件復(fù)位,而當(dāng)IEO的值為1的時(shí)候,INT0上會(huì)有中斷的情況。當(dāng) IT0的值為0時(shí),INT0會(huì)發(fā)生電平觸發(fā),也就是軟件復(fù)位,同時(shí)INT0的負(fù)邊沿觸發(fā)。最后一步就是計(jì)數(shù)器中斷入口程序。
一般所有單片機(jī)的定時(shí)器用做普通定時(shí)功能,都需要具備以下幾點(diǎn)要素:
1. 時(shí)基:時(shí)基就是定時(shí)器的時(shí)鐘來(lái)源,一般都是來(lái)源于內(nèi)部時(shí)鐘或外部時(shí)鐘,并且一般都能設(shè)置對(duì) 應(yīng)的分頻系數(shù),因此要弄清楚時(shí)基來(lái)源,分頻器設(shè)置,設(shè)置完時(shí)鐘來(lái)源和分頻器就知道計(jì)時(shí)的最小單元。
2.當(dāng)前計(jì)數(shù)器:該寄存器反應(yīng)的就是當(dāng)前實(shí)時(shí)的計(jì)數(shù)值,這個(gè)計(jì)數(shù)值在每個(gè)計(jì)時(shí)最小單元的時(shí)間內(nèi)加1或者減1。
3.計(jì)數(shù)匹配器: 一般向上計(jì)數(shù)的定時(shí)器肯定需要1個(gè)計(jì)數(shù)匹配器,當(dāng)前計(jì)數(shù)器從0開(kāi)始加1,一直加到 與計(jì)數(shù)匹配器相等,則認(rèn)為定時(shí)時(shí)間到,這個(gè)時(shí)候?qū)⒅梦粚?duì)應(yīng)標(biāo)志位或者發(fā)出對(duì)應(yīng)中斷請(qǐng)求。也有向下計(jì)時(shí)器,從某個(gè)值一直減到0則認(rèn)為定時(shí)時(shí)間到,這種定時(shí)器不需要計(jì)數(shù)匹配值。
4.定時(shí)中斷控制:一般設(shè)置定時(shí)器都配合對(duì)應(yīng)中斷使用,當(dāng)定時(shí)時(shí)間到,定時(shí)器將設(shè)置對(duì)應(yīng)標(biāo)志位,若使能了定時(shí)器中斷,定時(shí)器將向CPU發(fā)出中斷請(qǐng)求。
5.定時(shí)器計(jì)數(shù)開(kāi)關(guān),中斷使能開(kāi)關(guān):有些定時(shí)器都有個(gè)使能開(kāi)關(guān),只有使能才開(kāi)始計(jì)數(shù),中斷一般都有開(kāi)關(guān),只有在中斷使能開(kāi)關(guān)打開(kāi)情況下,定時(shí)時(shí)間到才觸發(fā)中斷請(qǐng)求。