PIC877a總結(jié)1
1.定時(shí)器:(3個(gè)TMR0,TMR1,TMR2)
TMR0,8位位累加定時(shí)、計(jì)數(shù)寄存器,并帶有預(yù)分頻器。若考慮預(yù)分頻器的效果,其固有定時(shí)為65ms。如果用作通用計(jì)數(shù)器,可采用外部T0CK1作為計(jì)數(shù)觸發(fā)信號(hào)。
與TMR0相關(guān)的寄存器:TMR0(初始值),OPTION_REG(選擇項(xiàng)寄存器T0CS,T0SE,PSA,PS2~PS0),INTCON(中斷控制寄存器:GIE,T0IE,T0IF),TRISA(要求外部信號(hào)T0CK1擔(dān)任TMR0的觸發(fā)計(jì)數(shù)功能,此時(shí)該引腳必須設(shè)定為輸入方式,0,RA4作為一般的輸出引腳;1,作為輸入引腳,為T0CK1提供一個(gè)通道)。
定時(shí),計(jì)數(shù)從其內(nèi)部工作方式分析一般表現(xiàn)為計(jì)數(shù)累加功能,通常是由特定的時(shí)鐘脈沖來(lái)觸發(fā)驅(qū)動(dòng)。但這個(gè)時(shí)鐘采用內(nèi)部時(shí)鐘,則稱之為承擔(dān)定時(shí)功能;也可由外部引腳輸入的時(shí)鐘,即觸發(fā)計(jì)數(shù),則稱之為計(jì)數(shù)器功能。OPTION_REG:T0CS(T0 clock select:0內(nèi),1外)。
TMR1,16位累加定時(shí)/計(jì)數(shù)寄存器對(duì)TMR1H:TMR1L,預(yù)分頻器和內(nèi)置低功耗低頻時(shí)基振蕩器。若做通用計(jì)數(shù)器,可采用外部T1CK1作為計(jì)數(shù)觸發(fā)信號(hào)。另外,利用內(nèi)置的低頻時(shí)基振蕩器,可實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘RTC輸出等功能,并可在系統(tǒng)休眠模式下,照常實(shí)現(xiàn)計(jì)數(shù)工作。還有,與CCP模塊配合使用,實(shí)現(xiàn)輸入信號(hào)邊沿的捕捉和輸出信號(hào)的比較功能,在頻率檢測(cè)和脈沖寬度測(cè)量中得到廣泛應(yīng)用(此時(shí)必須采用同步計(jì)數(shù)。)。(同樣,T1CS選擇內(nèi)部系統(tǒng)時(shí)鐘,設(shè)為定時(shí)方式;外部時(shí)鐘,設(shè)為計(jì)數(shù)方式)
與TMR1相關(guān)的寄存器:INTCON(中斷控制寄存器),T1CON,PIE1(perpheral外圍,第一外圍中斷),PIR1,TMR1L,TMR1H
T1CON:TMR1ON,TMR1ON計(jì)數(shù)1啟/0停。TMR1CS:時(shí)鐘源選擇位(0,內(nèi)定時(shí);1,外計(jì)數(shù))。/T1SYNC:TMR1外部輸入時(shí)鐘與系統(tǒng)時(shí)鐘同步控制為主動(dòng)參數(shù)(只有工作于計(jì)數(shù)方式時(shí),才能進(jìn)行同步設(shè)置)0:TMR1外部引腳時(shí)鐘信號(hào)或者自帶振蕩器信號(hào)與系統(tǒng)時(shí)鐘保持同步;1:異步。/T1OSCEN:TMR1自帶振蕩器使能位,主動(dòng)參數(shù)。0:禁止TMR1低頻振蕩器工作,1:使能。T1CKPS1~T1CKPS0預(yù)分頻器的分頻比選擇位。T1OSO和T1OSI跨接石英晶體和電容構(gòu)成很常用的振蕩電路,工作頻率取決于外接晶體,外接振蕩器的最大好處在于即使單片機(jī)進(jìn)入休眠模式,相應(yīng)的器件任然能夠處于工作狀態(tài)。
TMR2,8位專用定時(shí)器,不能承擔(dān)外部信號(hào)的計(jì)數(shù)功能。主要由一個(gè)可編程預(yù)分頻器,一個(gè)可編程后分頻器和一個(gè)可編程8位周期寄存器PR2等部件構(gòu)成。TMR2有一個(gè)非常強(qiáng)大的功能,就是利用周期寄存器PR2與CCP模塊進(jìn)行配合,提供脈寬調(diào)制pwm功能的時(shí)基信號(hào),可以承擔(dān)各類電機(jī)的變頻調(diào)速功能。在主同串行SPI模式通信中,TMR2模塊還可以提供波特率時(shí)鐘信號(hào)。8位周期寄存器PR2,其數(shù)值由用戶輸入,TMR2的計(jì)數(shù)溢出與該設(shè)置值有關(guān),因而可產(chǎn)生浮動(dòng)溢出效果。TMR2的計(jì)數(shù)溢出并不表示中斷標(biāo)志TMR2IF置位,而對(duì)溢出次數(shù)經(jīng)過(guò)后分頻處理后才有可能達(dá)到溢出中斷的效果,是TMR2IF置位。不管哪種復(fù)位都會(huì)將TMR2寄存器清零。
相關(guān)寄存器:INTCON,PIE1,PIR1,TMR2,T2CON,PR2(定時(shí)周期寄存器)
溢出:TMR2與PR2實(shí)時(shí)對(duì)比時(shí)間的長(zhǎng)短,一旦兩者內(nèi)容匹配即刻發(fā)出“溢出”信息,比較溢出并不能直接產(chǎn)生溢出中斷,而僅僅作為后分頻器的計(jì)數(shù)脈沖,只有當(dāng)后分頻器在產(chǎn)生溢出時(shí),才回將溢出中斷標(biāo)志位TMR2IF置位。
分頻器:預(yù)先分頻對(duì)于進(jìn)入TMR2的時(shí)鐘信號(hào)進(jìn)行分頻。而后分頻器主要是對(duì)比較匹配輸出的時(shí)序信號(hào)進(jìn)行分頻,可以連續(xù)選擇16種不同的分頻比。
定時(shí)方式:即可承擔(dān)一般的定時(shí)功能,又能夠與CCP模塊配合形成獨(dú)特的脈寬調(diào)整PWM方式。(TMR2C觸發(fā)信號(hào)來(lái)自于內(nèi)部系統(tǒng)時(shí)鐘,所以當(dāng)單片機(jī)處于休眠狀態(tài)時(shí),TMR2就將停止累加計(jì)數(shù)。)作為通用定時(shí)器使用時(shí),PR2的值固定為FFH。T=P1*P2*(256-K).浮動(dòng)“溢出”周期,特別在變頻電機(jī)控制中,就是利用TMR2浮動(dòng)“溢出”功能獲得周期可調(diào)的時(shí)基發(fā)生器,可以與CCP模塊配合實(shí)現(xiàn)PWM脈寬調(diào)制。信號(hào)周期的大小取決于周期寄存器PR2和兩個(gè)分頻器所設(shè)定的分頻器所設(shè)定的分頻比。TMR2“溢出”周期的計(jì)算式為:T=P1*P2*(PR2+1)。
2.中斷系統(tǒng)
PIC16F877單片機(jī)有14個(gè)中斷源,每個(gè)中斷源都可配置有一個(gè)中斷使能位(IE)和一個(gè)中斷標(biāo)志位(IF)。原則上著14種中斷源沒(méi)有優(yōu)先級(jí)之分,只能依靠軟件的前后處理來(lái)滿足輕重緩急,合用一個(gè)中斷服務(wù)程序入口地址。中斷源14個(gè)中斷源可分2類:一類是基本中斷源或稱內(nèi)部中斷源3個(gè),(外部觸發(fā)中斷INT,TMR0溢出中斷和RB端口電平變化中斷;)另一類是特殊中斷源或稱外部中斷源共11個(gè)。
對(duì)于內(nèi)部3個(gè)中斷源,中斷使能條件有2個(gè):一個(gè)是中斷源本身使能位,另一個(gè)是總中斷使能位GIE。 對(duì)于11個(gè)外部中斷源,中斷使能條件有3個(gè):一個(gè)是中斷源本身使能位,二個(gè)是總中斷使能位GIE,三個(gè)是外圍中斷使能位PEIE。(當(dāng)開(kāi)放多個(gè)中斷源時(shí),必須逐個(gè)判別中斷源的標(biāo)志位才能唯一確定真正的中斷源。只有執(zhí)行RETFIE,才會(huì)返回主程序斷點(diǎn)處的下一條指令繼續(xù)執(zhí)行。GIE會(huì)自動(dòng)清零,其他需要軟件清零)。1專用存儲(chǔ)器備份,2中斷源識(shí)別(依次檢測(cè))3中斷應(yīng)急服務(wù)程序(中斷響應(yīng)時(shí)不允許出現(xiàn)中斷嵌套)。
OPTION_REG;INTCON;PIE1(8個(gè));PIR1(8個(gè));PIE2(3個(gè));PIR2(3個(gè));