版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ChapterSix
MCS-51單片機(jī)的中斷系統(tǒng)與定時(shí)/計(jì)數(shù)器(1)目錄CONTENT6.1.1概述6.1.2AT89C51中斷系統(tǒng)6.1.3中斷應(yīng)用實(shí)例6.1中斷系統(tǒng)6.2.1定時(shí)/計(jì)數(shù)器0、1的結(jié)構(gòu)及工作原理
6.2.2定時(shí)/計(jì)數(shù)器0、1的四種工作方式
6.2.3定時(shí)器/計(jì)數(shù)器0、1的應(yīng)用
6.2.4AT89C52定時(shí)/計(jì)數(shù)器2的結(jié)構(gòu)
6.2.5AT89C52定時(shí)/計(jì)數(shù)器2的工作方式6.2定時(shí)/計(jì)數(shù)器及應(yīng)用6.1.1中斷系統(tǒng)概述你正在專心看書,突然電話鈴響,于是你記下正在看的書的頁數(shù),去接電話,接完電話后再回來接著看書。6.1.1中斷系統(tǒng)概述中斷是指由于某種隨機(jī)事件的發(fā)生,計(jì)算機(jī)暫?,F(xiàn)行程序的運(yùn)行,轉(zhuǎn)去執(zhí)行另一程序,以處理發(fā)生的事件,處理完畢后又自動(dòng)返回原來的程序繼續(xù)運(yùn)行。將能引起中斷的事件稱為中斷源。CPU現(xiàn)行運(yùn)行的程序稱為主程序。處理隨機(jī)事件的程序稱為中斷服務(wù)子程序。單片機(jī)中斷的作用中斷是指在計(jì)算機(jī)執(zhí)行程序期間,系統(tǒng)內(nèi)“突然”發(fā)生一個(gè)“預(yù)期”的事件,使得CPU暫時(shí)停止當(dāng)前正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序。待處理完畢后又返回原來暫停處,繼續(xù)執(zhí)行原來的程序?!巴蝗弧?--并不知道CPU執(zhí)行到哪行代碼時(shí)隨機(jī)發(fā)生的“預(yù)期”---為隨機(jī)發(fā)生的事件做好了應(yīng)對(duì)方法,中斷服務(wù)程序。中斷是單片機(jī)(以及計(jì)算機(jī))可以更好更快利用有限的系統(tǒng)資源解決系統(tǒng)響應(yīng)速度和運(yùn)行效率的一種控制技術(shù)。實(shí)時(shí)處理1——CPU及時(shí)處理隨機(jī)事件。例如,單片機(jī)在程序運(yùn)行過程中,串口接收到外部數(shù)據(jù),申請(qǐng)中斷,單片機(jī)轉(zhuǎn)而執(zhí)行串口中斷程序,存儲(chǔ)或處理接收數(shù)據(jù)。分時(shí)操作2——CPU可以同多個(gè)外設(shè)“同時(shí)”工作。例如,在單片機(jī)運(yùn)行過程中,使用定時(shí)器中斷,“分時(shí)”采集多路A/D轉(zhuǎn)換的數(shù)據(jù)、動(dòng)態(tài)刷新LED數(shù)碼管顯示等。中斷系統(tǒng)的基本功能識(shí)別中斷源實(shí)現(xiàn)中斷響應(yīng)及中斷返回實(shí)現(xiàn)中斷優(yōu)先級(jí)排隊(duì)實(shí)現(xiàn)中斷嵌套CPU總是首先響應(yīng)優(yōu)先權(quán)級(jí)別高的中斷請(qǐng)求,處理完成后,再響應(yīng)優(yōu)先權(quán)級(jí)別較低的中斷請(qǐng)求。中斷源串口SCON寄存器123456中斷標(biāo)志中斷允許中斷優(yōu)先級(jí)MCS-51中斷系統(tǒng)結(jié)構(gòu)MCS-51中斷系統(tǒng)MCS-51中斷系統(tǒng)6.1.2AT89C51中斷系統(tǒng)中斷處理過程分為四個(gè)階段:中斷請(qǐng)求、中斷響應(yīng)、中斷處理和中斷返回。中斷請(qǐng)求中斷響應(yīng)中斷處理(又稱中斷服務(wù))中斷返回中斷請(qǐng)求的撤除
MCS-51的中斷系統(tǒng)——中斷源AT89C51單片機(jī)有5個(gè)中斷請(qǐng)求源:外部輸入中斷源INT0(P3.2)或外部輸入中斷源INT1(P3.3)或片內(nèi)定時(shí)器T0的溢出片內(nèi)定時(shí)器T1的溢出片內(nèi)串行口發(fā)送或接收中斷源
MCS-51的中斷系統(tǒng)——中斷源AT89C51單片機(jī)有5個(gè)中斷請(qǐng)求源:中斷源中斷入口地址C51中的中斷號(hào)外部中斷INT00003H0定時(shí)/計(jì)數(shù)器T0溢出中斷000BH1外部中斷INT10013H2定時(shí)/計(jì)數(shù)器T1溢出中斷001BH3串行口中斷源0023H4TCON寄存器——中斷請(qǐng)求控制寄存器TCON寄存器——中斷請(qǐng)求控制寄存器TF1
TF0
IE1IT1IE0IT0TCON76543210T1溢出中斷標(biāo)志(TCON.7):T1啟動(dòng)計(jì)數(shù)后,計(jì)滿溢出由硬件置位TF1=1,向CPU請(qǐng)求中斷,此標(biāo)志一直保持到CPU響應(yīng)中斷后,才由硬件自動(dòng)清0。也可用軟件查詢?cè)摌?biāo)志,并由軟件清0。TCON寄存器——中斷請(qǐng)求控制寄存器TF1
TF0
IE1IT1IE0IT076543210外部中斷INT1中斷標(biāo)志位(TCON.3):IE1=1,外部中斷1向CPU申請(qǐng)中斷TCON88H外部中斷INT1觸發(fā)方式控制位(TCON.2):IT1=0,電平觸發(fā)方式IT1=1,下降沿觸發(fā)方式注意:該寄存器可以位尋址。中斷請(qǐng)求控制寄存器每一個(gè)中斷源都有相應(yīng)的中斷標(biāo)志位;某一個(gè)中斷源申請(qǐng)中斷,相應(yīng)中斷標(biāo)志位置1。INT0INT1T0T1串口IE0TF0IE1TF1TIRI中斷源中斷標(biāo)志位中斷請(qǐng)求控制寄存器按下列要求分別設(shè)置相關(guān)控制位:(1)INT0為邊沿觸發(fā)方式(2)INT1為電平觸發(fā)方式練習(xí)
MCS-51的中斷系統(tǒng)——中斷允許EA——總中斷允許位,EA=0,禁止所有中斷;某一個(gè)中斷源還有相應(yīng)的中斷允許位,1:允許相應(yīng)中斷源的中斷,0:禁止相應(yīng)中斷源的中斷。INT0INT1T0T1串口IE0TF0IE1TF1TIRIESET0EX0EX1ET1EA中斷源中斷標(biāo)志位中斷允許IE寄存器——中斷允許寄存器中斷源申請(qǐng)后,中斷能否被響應(yīng),取決于CPU對(duì)中斷源的開放或屏蔽狀態(tài),由內(nèi)部的中斷允許寄存器IE進(jìn)行控制。IE的地址是A8H,位地址為A8H~AFHIE寄存器——中斷允許寄存器TF1
ET1EX1ET0EX076543210例:允許定時(shí)器T0中斷:
SETBEASETBET0
或MOVIE,#82H注意:該寄存器可以位尋址。IEA8H
ES中斷允許寄存器根據(jù)下列已知條件,試求中斷開關(guān)狀態(tài):(1)IE=93H(2)IE=84H練習(xí)(3)IE=92H(4)IE=17H中斷允許寄存器根據(jù)下列已知條件,試求IE的設(shè)置值:(1)INT1、T0開,其余關(guān)(2)T1、串行口開,其余關(guān)練習(xí)(3)全部關(guān)中斷(4)全部開中斷
MCS-51的中斷系統(tǒng)——中斷優(yōu)先級(jí)單片機(jī)中有兩個(gè)中斷優(yōu)先級(jí),即高優(yōu)先級(jí)中斷和低優(yōu)先級(jí)中斷,前者優(yōu)先權(quán)高于后者(在程序中設(shè)置,相應(yīng)位=1,為高優(yōu)先級(jí));同一優(yōu)先級(jí)別的中斷源按照自然優(yōu)先級(jí)順序確定優(yōu)先級(jí)別(硬件形成,無法改變)。自然優(yōu)先級(jí)中斷源中斷標(biāo)志位INT0INT1T0T1串口IE0TF0IE1TF1TISIESET0EX0EX1ET1EA高低PSPT0PX0PX1PT1中斷允許優(yōu)先控制IP寄存器——中斷優(yōu)先級(jí)寄存器AT89C51有兩個(gè)中斷優(yōu)先級(jí),每個(gè)中斷源均可通過軟件設(shè)置為高優(yōu)先級(jí)或低優(yōu)先級(jí)中斷,實(shí)現(xiàn)2級(jí)中斷嵌套。特殊功能寄存器IP為中斷優(yōu)先級(jí)控制寄存器,其地址為B8H,位地址為B8H~BFH。IP寄存器——中斷優(yōu)先級(jí)寄存器
PT1PX1PT0PX07654321051單片機(jī)有兩個(gè)中斷優(yōu)先級(jí)——高級(jí)和低級(jí)專用寄存器IP為中斷優(yōu)先級(jí)寄存器,用戶可用軟件設(shè)定相應(yīng)位為1,對(duì)應(yīng)的中斷源被設(shè)置為高優(yōu)先級(jí),相應(yīng)位為0,對(duì)應(yīng)的中斷源被設(shè)置為低優(yōu)先級(jí)系統(tǒng)復(fù)位時(shí),均為低優(yōu)先級(jí)該寄存器可以位尋址PSIPB8H
中斷優(yōu)先級(jí)寄存器根據(jù)下列已知條件,試求中斷優(yōu)先級(jí)寄存器狀態(tài):(1)INT1、T0為高優(yōu)先級(jí),其余為低(2)T1、串行口為高優(yōu)先級(jí),其余為低練習(xí)(3)串行口為低優(yōu)先級(jí),其余為高
MCS-51的中斷系統(tǒng)結(jié)構(gòu)圖IE0TCONSCONINT0IT0=0IT0=1INT1IT1=0IT1=1TF0IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然優(yōu)先級(jí)矢量地址高級(jí)中斷請(qǐng)求自然優(yōu)先級(jí)矢量地址低級(jí)中斷請(qǐng)求PX0PT0PX1PT1PSIEIP中斷標(biāo)志位中斷源允許總允許中斷優(yōu)先級(jí)SCON寄存器——串行口控制寄存器SCON中的串行中斷標(biāo)志位。SCON寄存器地址98H,位地址9FH~98HSCON寄存器——串行口控制寄存器
T1R176543210TI(SCON.1)——串行發(fā)送中斷標(biāo)志。
RI(SCON.0)——串行接收中斷標(biāo)志。注意:該寄存器可以位尋址。
SCON98H中斷處理過程分為四個(gè)階段:中斷請(qǐng)求、中斷響應(yīng)、中斷處理和中斷返回。中斷請(qǐng)求中斷響應(yīng)中斷處理(又稱中斷服務(wù))
中斷返回中斷請(qǐng)求的撤除中斷響應(yīng)條件和過程中斷響應(yīng):在滿足CPU的中斷響應(yīng)條件之后,CPU對(duì)中斷源中斷請(qǐng)求予以處理。中斷響應(yīng)過程:保護(hù)斷點(diǎn)地址;把程序轉(zhuǎn)向中斷服務(wù)程序的入口地址(通常稱矢量地址)。特別注意:這些工作是硬件自動(dòng)完成的!0000H:復(fù)位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口0003H:外部中斷0入口000BH:定時(shí)器0溢出中斷入口0013H:外部中斷1入口001BH:定時(shí)器1溢出中斷入口
002AH程序存儲(chǔ)器ROM使用時(shí),通常在這些入口地址處存放一條跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到用戶安排的中斷服務(wù)程序起始地址上去!包含T0中斷服務(wù)子程序的程序結(jié)構(gòu):
ORG0000H LJMPMAIN ORG000BH LJMPINTT0 ORG0100HMAIN:...INTT0:...RETIEND0000H:復(fù)位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口0003H:外部中斷0入口000BH:定時(shí)器0溢出中斷入口0013H:外部中斷1入口001BH:定時(shí)器1溢出中斷入口
002AHLJMPMAINLJMPINTT0程序存儲(chǔ)器ROM中斷現(xiàn)場(chǎng)保護(hù)和恢復(fù)中斷的保護(hù)現(xiàn)場(chǎng)主要是在中斷時(shí)刻單片機(jī)的存儲(chǔ)單元中的數(shù)據(jù)和狀態(tài)的存儲(chǔ)。中斷的恢復(fù)現(xiàn)場(chǎng)是恢復(fù)單片機(jī)在被中斷前存儲(chǔ)單元中的數(shù)據(jù)和狀態(tài)。中斷現(xiàn)場(chǎng)保護(hù)和恢復(fù)INTT0:PUSHACC PUSHDPHPUSHDPLPUSHPSW
中斷源服務(wù)
POPPSWPOPDPLPOPDPHPOPACCRETI保護(hù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)中斷請(qǐng)求的撤除CPU響應(yīng)某中斷請(qǐng)求后,在中斷返回前,應(yīng)該撤除該中斷請(qǐng)求,否則會(huì)引起另一次中斷。定時(shí)器0或1溢出:CPU在響應(yīng)中斷后,硬件清除了有關(guān)的中斷請(qǐng)求標(biāo)志TFO或TF1,即中斷請(qǐng)求是自動(dòng)撤除的。邊沿激活的外部中斷:CPU在響應(yīng)中斷后,也是用硬件自動(dòng)清除有關(guān)的中斷請(qǐng)求標(biāo)志IE0或IE1。串行口中斷:CPU響應(yīng)中斷后,沒有用硬件清除T1、R1,故這些中斷不能自動(dòng)撤除,而要靠軟件來清除相應(yīng)的標(biāo)志。電平激活的外部中斷源中斷標(biāo)志的撤除電平觸發(fā)外部中斷撤除方法較復(fù)雜。因?yàn)樵陔娖接|發(fā)方式中,CPU響應(yīng)中斷時(shí)不會(huì)自動(dòng)清除IE1或IE0標(biāo)志,所以在響應(yīng)中斷后應(yīng)立即撤除INT0或INT1引腳上的低電平。在硬件上,CPU對(duì)INT0和INT1引腳的信號(hào)不能控制,所以這個(gè)問題要通過硬件,再配合軟件來解決。表6-6有關(guān)中斷的小結(jié)例6-4:設(shè)計(jì)一個(gè)程序,能夠?qū)崿F(xiàn)統(tǒng)計(jì)引腳上出現(xiàn)負(fù)跳變信號(hào)的累計(jì)數(shù),在P1口控制8只發(fā)光二極管實(shí)現(xiàn)8位二進(jìn)制計(jì)數(shù)。匯編語言編程如下:
ORG0000H AJMPMAIN;轉(zhuǎn)主程序
ORG0003H AJMPINTEX0;轉(zhuǎn)中斷服務(wù)程序
ORG0030HMAIN: MOVSP,#60H;設(shè)堆棧指針
SETBIT0 ;設(shè)為邊沿觸發(fā)方式
SETBEX0 ;允許INT0中斷
SETBEA ;CPU開中斷
CLRA ;計(jì)數(shù)器清0 MOVP1,A ;P1口顯示清0HERE: SJMPHERE ;等待中斷INTEX0: INCA ;計(jì)數(shù)器加1 MOVP1,A ;送P1口顯示
RETI ;中斷返回
ENDC語言編程如下:#include<reg51.h>#defineTURE1#defineFALSE0unsignedcharcount;voidinitializers(void)/*初始化程序*/{ IE=0x81; /*開外中斷0和CPU中斷允許*/ TCON=0x01; /*設(shè)定外中斷0為邊沿觸發(fā)方式*/}voidintex0()interrupt0 //INT0的中斷服務(wù)程序{ count++; //下降沿脈沖(中斷)次數(shù)
P1=count; //中斷次數(shù)從P1輸出顯示}voidmain(void){ initializers(); count=0; P1=count; while(TURE); //無限循環(huán)等待中斷}ChapterSix
MCS-51單片機(jī)的中斷系統(tǒng)與定時(shí)/計(jì)數(shù)器(2)目錄CONTENT6.1.1概述6.1.2AT89C51中斷系統(tǒng)6.1.3中斷應(yīng)用實(shí)例6.1中斷系統(tǒng)6.2.1定時(shí)/計(jì)數(shù)器0、1的結(jié)構(gòu)及工作原理
6.2.2定時(shí)/計(jì)數(shù)器0、1的四種工作方式
6.2.3定時(shí)器/計(jì)數(shù)器0、1的應(yīng)用
6.2.4AT89C52定時(shí)/計(jì)數(shù)器2的結(jié)構(gòu)
6.2.5AT89C52定時(shí)/計(jì)數(shù)器2的工作方式6.2定時(shí)/計(jì)數(shù)器及應(yīng)用6.2定時(shí)/計(jì)數(shù)器及應(yīng)用定時(shí)/計(jì)數(shù)器的核心是一個(gè)加1計(jì)數(shù)器。當(dāng)它對(duì)外部事件計(jì)數(shù)時(shí),由于頻率不固定,稱之為計(jì)數(shù)器;當(dāng)它對(duì)內(nèi)部固定頻率的機(jī)器周期進(jìn)行計(jì)數(shù)時(shí),稱為定時(shí)器。MCS-51單片機(jī)內(nèi)有2個(gè)16位可編程的定時(shí)器/計(jì)數(shù)器,分別為T0和T1。6.2.1T0、T1的結(jié)構(gòu)及工作原理定時(shí)器/計(jì)數(shù)器內(nèi)部結(jié)構(gòu)邏輯圖
T0、T1核心組成部分:16位的加1計(jì)數(shù)器THx,TLx定時(shí)器控制寄存器TCON工作方式控制寄存器TMOD6.2.1T0、T1的結(jié)構(gòu)及工作原理加1計(jì)數(shù)器定時(shí)器/計(jì)數(shù)器T0由8位特殊功能寄存器TH0和TL0組成,TH0為高8位,TL0為低8位;加1計(jì)數(shù)器的初值可以通過程序進(jìn)行設(shè)定,設(shè)定不同的初值,就可以獲得不同的計(jì)數(shù)值或定時(shí)時(shí)間。對(duì)外部事件脈沖計(jì)數(shù),是計(jì)數(shù)器;對(duì)單片機(jī)內(nèi)部機(jī)器周期產(chǎn)生的脈沖進(jìn)行計(jì)數(shù),是定時(shí)器。1MCS-51計(jì)數(shù)/定時(shí)器的實(shí)質(zhì)實(shí)質(zhì)是計(jì)數(shù)器,脈沖每一次下降沿,計(jì)數(shù)寄存器數(shù)值將加1.計(jì)數(shù)的脈沖如果來源于單片機(jī)內(nèi)部的晶振,由于其周期極為準(zhǔn)確,這時(shí)稱為定時(shí)器。計(jì)數(shù)的脈沖如果來源于單片機(jī)外部的引腳,由于其周期一般不準(zhǔn)確,這時(shí)稱為計(jì)數(shù)器。+1計(jì)數(shù)器溢出中斷脈沖控制開關(guān)MCS-51有2個(gè)可獨(dú)立控制的16位定時(shí)器/計(jì)數(shù)器:T0、T1TF1
TF0
IE1IT1IE0IT0TCON76543210TR1:定時(shí)器1運(yùn)行啟??刂莆唬捎捎脩敉ㄟ^軟件設(shè)置)。TR1=0:定時(shí)器1停止運(yùn)行;TR1=1:定時(shí)器1啟動(dòng)運(yùn)行。6.2.1T0、T1的結(jié)構(gòu)及工作原理TR1TR0定時(shí)器控制寄存器TCON2當(dāng)C/T=0,定時(shí)功能當(dāng)C/T=1,計(jì)數(shù)功能6.2.1T0、T1的結(jié)構(gòu)及工作原理工作方式控制寄存器TMOD3M1M0對(duì)應(yīng)4種不同的二進(jìn)制組合對(duì)應(yīng)4種工作方式:方式0、方式1、方式2、方式3GATE-門控位,低4位的控制T0常用GATE=0,由TR0啟/停定時(shí)計(jì)數(shù)器T0;GATE=1,用于外部脈沖寬度測(cè)量。由外中斷請(qǐng)求信號(hào)INT0啟/停定時(shí)計(jì)數(shù)器T0。計(jì)數(shù)功能:對(duì)外部事件產(chǎn)生的脈沖進(jìn)行計(jì)數(shù)。當(dāng)C/=1,T0(P3.4)或T1(P3.5)兩個(gè)信號(hào)引腳輸入信號(hào)脈沖發(fā)生負(fù)跳變時(shí),加1計(jì)數(shù)器自動(dòng)加1。定時(shí)功能:對(duì)單片機(jī)內(nèi)部機(jī)器周期產(chǎn)生的脈沖進(jìn)行計(jì)數(shù)。當(dāng)C/=0,每個(gè)機(jī)器周期計(jì)數(shù)器自動(dòng)加1。如果單片機(jī)的晶體頻率為12MHz,則計(jì)數(shù)頻率為1MHz,或者說計(jì)數(shù)器每加1,可實(shí)現(xiàn)1μs的定時(shí)。6.2.1T0、T1的結(jié)構(gòu)及工作原理定時(shí)或計(jì)數(shù)功能的選擇當(dāng)TMOD中M1M0=00時(shí),定時(shí)器/計(jì)數(shù)器選定方式0進(jìn)行工作。不常用方式0為13位計(jì)數(shù),由TL0的低5位(高3位未用)和TH0的8位組成。TL0的低5位溢出時(shí)向TH0進(jìn)位,TH0溢出時(shí),置位TCON中的TF0標(biāo)志,向CPU發(fā)出中斷請(qǐng)求。6.2.2T0、T1的4種工作方式方式01當(dāng)TMOD中M1M0=01時(shí),定時(shí)器/計(jì)數(shù)器選定方式1進(jìn)行工作。此時(shí),選擇定時(shí)器/計(jì)數(shù)器的TH0和TL0構(gòu)成一個(gè)16位的定時(shí)器/計(jì)數(shù)器。
6.2.2T0、T1的4種工作方式方式126.2.2T0、T1的4種工作方式方式12當(dāng)作為計(jì)數(shù)器使用時(shí),計(jì)數(shù)脈沖個(gè)數(shù)N:N=216-x=65536–x計(jì)數(shù)初值x是TH0、TL0設(shè)定的初值。
當(dāng)作為定時(shí)器使用時(shí),定時(shí)器的定時(shí)時(shí)間為:Td=(216-x)×Tcy如果晶振頻率fosc=12MHz,則Tcy
=1μs,定時(shí)范圍為1~65536μs。初值x是TH0、TL0設(shè)定的初值。工作方式0、方式1具有共同的特點(diǎn),發(fā)生溢出現(xiàn)象后TH0=TL0=0,需要程序重新賦初值。方式2為自動(dòng)重裝初值的8位計(jì)數(shù)方式,適合于用作較精確的脈沖信號(hào)發(fā)生器。常用于作為串行通訊中的波特率發(fā)生器的時(shí)鐘6.2.2T0、T1的4種工作方式方式23TH0的內(nèi)容重新裝入TL0后,其自身保持不變。6.2.2T0、T1的4種工作方式方式23當(dāng)作為計(jì)數(shù)器使用時(shí),計(jì)數(shù)脈沖個(gè)數(shù)N:N=28-x=256–x計(jì)數(shù)初值x是TH0、TL0設(shè)定的初值。當(dāng)作為定時(shí)器使用時(shí),定時(shí)器的定時(shí)時(shí)間為:Td=(28-x)×Tcy如果晶振頻率fosc=12MHz,則Tcy
=1μs,定時(shí)范圍為1~256μs。初值x是TH0、TL0設(shè)定的初值。T0和T1具有完全不同的功能。6.2.2T0、T1的4種工作方式方式346.2.2T0、T1的4種工作方式定時(shí)/計(jì)數(shù)器0、1的四種工作方式總結(jié)MCS-51單片機(jī)的定時(shí)/計(jì)數(shù)器具有定時(shí)和計(jì)數(shù)功能,并可選擇4種工作方式。在使用定時(shí)器/計(jì)數(shù)器前必須對(duì)其進(jìn)行初始化,設(shè)置其工作方式等。初始化包括:6.2.3定時(shí)/計(jì)數(shù)器0、1的應(yīng)用定時(shí)器/計(jì)數(shù)器的初始化編程1設(shè)置工作方式,即設(shè)置TMOD中的各位:GATE、C/T、M1M0。計(jì)算定時(shí)/計(jì)數(shù)器的初值x,并將初值x送入TH、TL中。啟動(dòng)計(jì)數(shù)器工作,即將TR置1。若采用中斷方式則將對(duì)應(yīng)的定時(shí)/計(jì)數(shù)器及CPU開中斷。6.2.3定時(shí)/計(jì)數(shù)器0、1的應(yīng)用計(jì)算計(jì)數(shù)初值2計(jì)數(shù)方式下,初值x的計(jì)算計(jì)數(shù)脈沖個(gè)數(shù)N=2n-x已知計(jì)數(shù)脈沖個(gè)數(shù)N,則初值x=2n-N當(dāng)采用工作方式0,1,2時(shí),n分別取值13,16,8。定時(shí)方式下,初值x的計(jì)算定時(shí)時(shí)間Td=(2n-x)×機(jī)器周期Tcy已知定時(shí)時(shí)間Td,機(jī)器周期Tcy。則初值x=2n-Td/Tcy。當(dāng)采用工作方式0,1,2時(shí),n分別取值13,16,8。例6-5:定時(shí)器/計(jì)數(shù)器T1工作于計(jì)數(shù)方式,計(jì)數(shù)脈沖個(gè)數(shù)N=100,允許中斷,分別使用:(1)工作方式1;(2)工作方式2,進(jìn)行初始化編程。(1)由于T1工作于計(jì)數(shù)方式GATE=0,C/T=1,T1工作于方式1,則M1M0=01。T0不用,TMOD的低4位取0000,則
TMOD=01010000B=50H工作方式1,則計(jì)數(shù)器位數(shù)n=16。計(jì)數(shù)器初值x=216-100=65536-100=65436=FF9CH。
TH1=FFH;TL1=9CH例6-5:定時(shí)器/計(jì)數(shù)器T1工作于計(jì)數(shù)方式,計(jì)數(shù)脈沖個(gè)數(shù)N=100,允許中斷,分別使用:(1)工作方式1;(2)工作方式2,進(jìn)行初始化編程。C51語言初始化程序如下:TMOD=0x50;/*設(shè)置T1工作計(jì)數(shù)方式1*/TH1=0xff;/*加1計(jì)數(shù)器高8位TH1賦初值FFH*/TL1=0x9c;/*加1計(jì)數(shù)器低8位TL1賦初值9CH*/TR1=1;/*打開T1啟動(dòng)開關(guān)*/ET1=1;/*T1開中斷*/EA=1;/*CPU開中斷*/例6-5:定時(shí)器/計(jì)數(shù)器T1工作于計(jì)數(shù)方式,計(jì)數(shù)脈沖個(gè)數(shù)N=100,允許中斷,分別使用:(1)工作方式1;(2)工作方式2,進(jìn)行初始化編程。匯編語言初始化程序1如下:MOVTMOD,#50HMOVTH1,#0FFHMOVTL1,#9CHSETBTR1SETBET1SETBEA匯編語言初始化程序2如下:MOVTMOD,#50HMOVTH1,#0FFHMOVTL1,#9CHSETBTR1MOVIE,#84H例6-5:定時(shí)器/計(jì)數(shù)器T1工作于計(jì)數(shù)方式,計(jì)數(shù)脈沖個(gè)數(shù)N=100,允許中斷,分別使用:(1)工作方式1;(2)工作方式2,進(jìn)行初始化編程。C51語言初始化程序如下:TMOD=0x60;/*設(shè)置T1工作計(jì)數(shù)方式1*/TH1=0x9c;/*加1計(jì)數(shù)器高8位TH1賦初值9CH*/TL1=0x9c;/*加1計(jì)數(shù)器低8位TL1賦初值9CH*/TR1=1;/*打開T1啟動(dòng)開關(guān)*/ET1=1;/*T1開中斷*/EA=1;/*CPU開中斷*/2)TMOD=01100000B=60H計(jì)數(shù)器初值x=28-100=156=9CH。TH1=9CH;TL1=9CH例6-5:定時(shí)器/計(jì)數(shù)器T1工作于計(jì)數(shù)方式,計(jì)數(shù)脈沖個(gè)數(shù)N=100,允許中斷,分別使用:(1)工作方式1;(2)工作方式2,進(jìn)行初始化編程。匯編語言初始化程序1如下:MOVTMOD,#60HMOVTH1,#9CHMOVTL1,#9CHSETBTR1SETBET1SETBEA匯編語言初始化程序2如下:MOVTMOD,#60HMOVTH1,#9CHMOVTL1,#9CHSETBTR1MOVIE,#84H例6-6:T0工作于定時(shí)方式1,定時(shí)時(shí)間Td=2ms,系統(tǒng)主頻fosc=12MHz,允許中斷,對(duì)T0進(jìn)行初始化編程。T0工作于定時(shí)方式GATE=0,C/T=0,T0工作于方式1,則M1M0=01。T1不用,TMOD的高4位取0000,則
TMOD=00000001B=01H系統(tǒng)主頻fosc=12MHz,機(jī)器周期Tcy=1us。工作方式1,則計(jì)數(shù)器位數(shù)n=16。計(jì)數(shù)器初值x=216-Td/Tcy=65536-2000=63536=F830H。
TH0=F8H;TL0=30H例6-6:T0工作于定時(shí)方式1,定時(shí)時(shí)間Td=2ms,系統(tǒng)主頻fosc=12MHz,允許中斷,對(duì)T0進(jìn)行初始化編程。TMOD=00000001B=01HTH0=F8H;TL0=30HC51語言初始化程序如下:TMOD=0x01;/*設(shè)置T0工作計(jì)數(shù)方式1*/TH0=0xf8;/*加1計(jì)數(shù)器高8位TH0賦初值F8H*/TL0=0x30;/*加1計(jì)數(shù)器低8位TL0賦初值30H*/TR0=1;/*打開T0啟動(dòng)開關(guān)*/ET0=1;/*T0開中斷*/EA=1;/*CPU開中斷*/例6-6:T0工作于定時(shí)方式1,定時(shí)時(shí)間Td=2ms,系統(tǒng)主頻fosc=12MHz,允許中斷,對(duì)T0進(jìn)行初始化編程。匯編語言初始化程序1如下:MOVTMOD,#01HMOVTH0,#0F8HMOVTL0,#30HSETBTR0SETBET0SETBEA匯編語言初始化程序2如下:MOVTMOD,#01HMOVTH0,#0F8HMOVTL0,#30HSETBTR0MOVIE,#84H例6-7:要求利用定時(shí)器T0使圖中P1.7口控制的發(fā)光二極管D8進(jìn)行秒閃爍。系統(tǒng)主頻f=12MHz。例6-7:要求利用定時(shí)器T0使圖中P1.7口控制的發(fā)光二極管D8進(jìn)行秒閃爍。系統(tǒng)主頻f=12MHz。發(fā)光二極管D8進(jìn)行秒閃爍,即每秒一亮一滅,亮500ms,滅500ms。系統(tǒng)主頻f=12MHz條件下,定時(shí)器0工作方式1,最大定時(shí)時(shí)間為65.536ms,取定時(shí)器0定時(shí)50ms,溢出10次實(shí)現(xiàn)500ms定時(shí)。T0工作方式確定:
GATE=0,C/T=0,T0工作于方式1,則M1M0=01。則
TMOD=00000001B=01H系統(tǒng)主頻fosc=12MHz,機(jī)器周期Tcy=1us。工作方式1,則計(jì)數(shù)器位數(shù)n=16。計(jì)數(shù)器初值x=216-Td/Tcy=65536-50000=15536=3CB0H。
TH0=3CH;TL0=B0H例6-7:要求利用定時(shí)器T0使圖中P1.7口控制的發(fā)光二極管D8進(jìn)行秒閃爍。系統(tǒng)主頻f=12MHz。 ORG0000H LJMPMAIN ;轉(zhuǎn)主程序
ORG000BH ;T0中斷入口地址
LJMPIT0_ISR ;轉(zhuǎn)T0中斷服務(wù)程序
ORG0100H ;主程序首地址MAIN:
MOVTMOD,#01H ;定時(shí)器0工作方式1 MOVTH0,#3CH ;T0初值設(shè)置
MOVTL0,#0B0H SETBET0 ;T0中斷允許
SETBEA ;中斷總允許
MOVR7,#0AH ;50ms置10次
SETBTR0 ;啟動(dòng)T0 SETBP1.7 SJMP$
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院入住老人突發(fā)疾病應(yīng)急處理制度
- 企業(yè)設(shè)備管理規(guī)范制度
- 供應(yīng)商管理制度
- 2026年電影史及影視理論專業(yè)考試題庫
- 2026年CFA特許金融分析師考前模擬題及答案解析
- 2026年電工技術(shù)專業(yè)知識(shí)題庫與解析
- 2026年工程設(shè)計(jì)師職業(yè)技能等級(jí)考試題庫及解答
- 2026年霧計(jì)算協(xié)議
- 2026年委托貼標(biāo)合同
- 2025年周口理工職業(yè)學(xué)院馬克思主義基本原理概論期末考試模擬題及答案解析(奪冠)
- 雷波縣糧油貿(mào)易總公司 2026年面向社會(huì)公開招聘筆試參考題庫及答案解析
- 2025年互聯(lián)網(wǎng)公司產(chǎn)品經(jīng)理面試實(shí)戰(zhàn)試題及答案
- 2026年上海市浦東新區(qū)初三上學(xué)期一模數(shù)學(xué)試卷和參考答案
- 內(nèi)蒙古包鋼1.18事故警示安全教育課件
- 公安局民警崗位培訓(xùn)制度
- (2025年)小學(xué)三視圖題題庫及答案
- (正式版)DB44∕T 2771-2025 《全域土地綜合整治技術(shù)導(dǎo)則》
- 春節(jié)前安全意識(shí)培訓(xùn)課件
- 江蘇省無錫市2025-2026學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)模擬試卷【含答案詳解】
- 2.2 中國的氣候 第一課時(shí) 教學(xué)設(shè)計(jì)2025八年級(jí)地理上學(xué)期湘教版
- 2024冀少版八年級(jí)生物下冊(cè)全冊(cè)知識(shí)點(diǎn)考點(diǎn)清單
評(píng)論
0/150
提交評(píng)論