第五章中斷系統(tǒng)2010春_第1頁
第五章中斷系統(tǒng)2010春_第2頁
第五章中斷系統(tǒng)2010春_第3頁
第五章中斷系統(tǒng)2010春_第4頁
第五章中斷系統(tǒng)2010春_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

5.1輸入、輸出數(shù)據(jù)傳送的控制方式單片機與外設(shè)的數(shù)據(jù)交換方式通常有三種:查詢方式、延時等待方式和中斷方式。(1)查詢方式發(fā)啟動外設(shè)的信號;讀入外設(shè)的狀態(tài)或標志;判斷其是否已做好數(shù)據(jù)交換的準備;如外設(shè)未做好準備,則一直查詢;外設(shè)準備好了,用輸入/輸出指令進行數(shù)據(jù)交換。查詢方式的優(yōu)點是能夠自動適配外設(shè)的工作速度,缺點是花費CPU時間較多。在CPU不太忙的情況下可采用此方式。(2)延時等待方式發(fā)啟動外設(shè)的信號;延時等待一段時間;用輸入/輸出指令進行數(shù)據(jù)交換。延時等待方式的特點是將查詢方式下循環(huán)判斷的時間用軟件延時來等待,CPU可用這段時間執(zhí)行別的程序。但是,必須事先計算好外設(shè)從得到啟動信號到做好數(shù)據(jù)交換的時間。(3)中斷方式設(shè)置中斷,開中斷;當外設(shè)需要與單片機交換數(shù)據(jù)時,發(fā)中斷請求;單片機響應(yīng)中斷申請,執(zhí)行中斷服務(wù)程序,與外設(shè)交換數(shù)據(jù)。中斷方式下,可充分利用單片機的工作效率并適配外設(shè)的工作速度。因此,中斷方式是應(yīng)用最多的一種I/O數(shù)據(jù)交換方式。但中斷方式需要的硬件資源較多。第三節(jié)MCS-51單片機的中斷系統(tǒng) 實時控制、故障自動處理時用到中斷系統(tǒng),計算機與外圍設(shè)備間傳送數(shù)據(jù)及實現(xiàn)人機聯(lián)系也常常用到中斷系統(tǒng)。MCS-51中斷系統(tǒng)的功能為:5個中斷源;2個中斷優(yōu)先級,從而可實現(xiàn)二級中斷嵌套;每一個中斷源的優(yōu)先級可由程序設(shè)定。與中斷系統(tǒng)工作有關(guān)的SFR有IE、IP以及TCON。一、中斷的概念計算機中的中斷是指CPU在處理某件事情的時候,外部發(fā)生了某一事件請求CPU迅速去處理,于是CPU暫時中斷當前的工作,轉(zhuǎn)入處理所發(fā)生的事件,中斷訪問處理完后,再回到原來被中斷的地方,繼續(xù)原來的工作的過程稱為中斷,如圖5-1所示。實現(xiàn)這種功能的部件稱為中斷系統(tǒng)(中斷機構(gòu)),產(chǎn)生中斷的請求源稱為中斷源。圖5-1中斷流程二、中斷系統(tǒng)的功能

MCS-51的中斷系統(tǒng)具有以下中斷功能:1.

能實現(xiàn)中斷及返回。2.

能實現(xiàn)中斷優(yōu)先級排隊。3.

能實現(xiàn)中斷嵌套。圖5-2中斷嵌套流程

三、中斷源1.外中斷類即外部中斷0和外部中斷1。

中斷請求信號分別由引腳(P3.2)和(P3.3)引入 外部中斷請求有兩種信號方式, 電平方式:當引腳上出現(xiàn)低電平時就向CPU申請中斷,CPU響應(yīng)中斷后要采取措施撤消中斷請求信號,使引腳恢復高電平。 脈沖方式:當引腳上出現(xiàn)負跳變時,該負跳變經(jīng)邊沿檢測器使IE0或IE1置1,向CPU申請中斷。CPU響應(yīng)中斷后由硬件自動清除IE0和IE1。CPU在每個機器周期采樣INT0*和INT1*,為了保證檢測到負跳變,引腳上的高電平與低電平至少應(yīng)各自保持一個機器周期。2.定時器/計數(shù)器0、1溢出中斷

定時器/計數(shù)器計數(shù)溢出時,由硬件分別置TF0=1和TF1=1,向CPU申請中斷。CPU響應(yīng)中斷后,由硬件自動清除TF0和TF13.串行接口中斷串行接口的中斷請求由發(fā)送或接收所引起。串行口發(fā)送了一幀信息,便由硬件置TI=1,向CPU申請中斷。串行口接收了一幀信息,便由硬件置RI=1,向CPU申請中斷。CPU響應(yīng)中斷后必須由軟件清除TI和RI。中斷標志位除外部中斷電平觸發(fā)方式外,其它各中斷實際上由標志位IE0、IE1、TF0、TF1、TI、RI置位引起的。這些標志位除了由相應(yīng)的硬件置位外,還可以由軟件置位。如果需要,可以由程序安排產(chǎn)生中斷。四、中斷控制與中斷控制有關(guān)的寄存器共四個,定時器控制寄存器TCON串行口控制寄存器。SCON

中斷允許控制寄存器IE

中斷優(yōu)先控制寄存器IP1.定時器控制寄存器(TCON)

該寄存器地址為88H,其位地址為8FH~88H。寄存器的內(nèi)容及位地址表示如下:位地址8F8E8D8C8B8A8988位符號TF1TR1TF0TR0IE1IT1IE0IT0·IE0

(IE1)——外中斷請求標志位當CPU采樣到(或)端出現(xiàn)有效中斷請求時,此位由硬件置1。在中斷響應(yīng)完成后轉(zhuǎn)向中斷服務(wù)時,再由硬件自動清零?!T0(IT1)——外中斷請求信號方式控制位

IT0(IT1)=1脈沖方式(后沿負跳有效)

IT0(IT1)=0電平方式(低電平有效)此位由軟件置1或清0。位地址8F8E8D8C8B8A8988位符號TF1TR1TF0TR0IE1IT1IE0IT02.串行口控制寄存器(SCON)該寄存器地址為98H,其位地址為9FH~98H。位地址9F9E9D9C9B9A9998位符號SM0SM1SM2RENTB8RB8TIRI·TI——串行口發(fā)送中斷請求標志位當發(fā)送完一幀串行數(shù)據(jù)后,由硬件置1,在轉(zhuǎn)向中斷服務(wù)程序后,必須用軟件清0。·RI——串行口接收中斷請求標志位當接收完一幀串行數(shù)據(jù)后,由硬件置1;在轉(zhuǎn)向中斷服務(wù)程序后,必須用軟件清0。3.中斷允許控制寄存器(IE)該寄存器地址為A8H,其位地址為AFH~A8H。

位地址AFAEADACABAAA9A8位符號EA1/0/0ES0ET11EX10ET00EX01·EA——中斷允許總控制位

EA=0中斷總禁止,禁止所有中斷。

EEA=1中斷總允許。當中斷總允許后,某個中斷的禁止或允許由各中斷源的中斷允許控制位進行設(shè)置?!X0(EX1)——外部中斷允許控制位

EX0(EX1)=0禁止外中斷

EX0(EX1)=1允許外中斷·ET0(ET1)——定時/計數(shù)中斷允許控制位

ET0(ET1)=0禁止定時(或計數(shù))中斷

ET0(ET1)=1允許定時(或計數(shù))中斷·ES——串行中斷允許控制位

ES=0禁止串行中斷

ES=1允許串行中斷單片機復位后(IE)=00H,中斷系統(tǒng)處于禁止狀態(tài)。

中斷允許與禁止,就是中斷的開放與關(guān)閉。4.中斷優(yōu)先級控制寄存器(IP)

IP寄存器地址B8H,位地址為BFH~B8H。位地址BFBEBDBCBBBAB9B8位符號/0/0/0PS0PT10PX10PT00PX01.PX0——外部中斷0優(yōu)先級設(shè)定位.PT0——定時中斷0優(yōu)先級設(shè)定位.PX1——外部中斷l(xiāng)優(yōu)先級設(shè)定位.PT1——定時中斷1優(yōu)先級設(shè)定位.PS——串行中斷優(yōu)先級設(shè)定位

X=0,優(yōu)先級為低;X=1,優(yōu)先級為高。

中斷優(yōu)先級是為中斷嵌套服務(wù)的,MCS—51中斷優(yōu)先級的控制原則是:①低優(yōu)先級中斷請求不能打斷高優(yōu)先級的中斷服務(wù);但高優(yōu)先級中斷請求可以打斷低優(yōu)先級的中斷服務(wù),從而實現(xiàn)中斷嵌套。②如果一個中斷請求已被響應(yīng),則同級的其它中斷響應(yīng)將被禁止。③如果同級的多個中斷請求同時出現(xiàn),則按CPU設(shè)定的自然優(yōu)先級確定那個中斷請求被響應(yīng)。MCS—51同一優(yōu)先級中斷源的優(yōu)先級排列順序:外部中斷0→定時中斷0→外部中斷1→定時中斷1→串行中斷這其實是CPU查詢各中斷的次序。習題分析以下幾種中斷優(yōu)先級的排列順序(由高到低)是否可能?并說明理由。(1)定時器T0溢出中斷,定時器T1溢出中斷,外部中斷INT0*、外部中斷INT1*、串行口中斷(2)外部中斷INT0*、定時器T1溢出中斷、定時器T0溢出中斷、外部中斷INT1*、串行口中斷(3)串行口中斷、定時器T0溢出中斷,外部中斷INT0*、外部中斷INT1*、定時器T1溢出中斷(4)外部中斷INT0*、定時器T1溢出中斷、外部中斷INT1*、定時器T0溢出中斷,串行口中斷(5)外部中斷INT0*、外部中斷INT1*、串行口中斷、定時器T0溢出中斷,定時器T1溢出中斷5.中斷控制寄存器狀態(tài)設(shè)置

這四個控制寄存器都是既可進行字節(jié)尋址又可進行位尋址的。初始化方式:字節(jié)操作指令,位操作指令。例在中斷允許控制寄存器IE中,假定要開放外部中斷0和定時中斷1,為:字節(jié)操作指令:MOV IE,#89H位操作指令: SETB EA SETBEX0 SETB ET1其它各中斷控制寄存器與此類似。例1.8031芯片的INT0*、INT1*引腳分別輸入壓力超限和溫度超限中斷請求信號,定時器/計數(shù)器0做定時檢測的實時時鐘,用戶規(guī)定的中斷優(yōu)先權(quán)排列次序為:

壓力超限溫度超限定時檢測

要求確定IE、IP的內(nèi)容,以實現(xiàn)上述要求。IE=87H,IP=05H5.5中斷響應(yīng)中斷響應(yīng)的條件:(1)中斷源有中斷請求。(2)中斷允許寄存器IE相應(yīng)位置1,CPU開戶中斷。(3)無同級或高級中斷正在處理。(4)當前的指令周期已經(jīng)結(jié)束。(5)若現(xiàn)行指令為RETI或訪問IE或IP指令時,執(zhí)行完該指令且緊隨著的另一條指令已執(zhí)行完。單片機在緊接著的下一個機器周期的S1期間響應(yīng)中斷源的中斷請求。CPU響應(yīng)中斷后,由硬件執(zhí)行如下功能:(1)根據(jù)中斷源的優(yōu)先級高低,使相應(yīng)的優(yōu)先級狀態(tài)觸發(fā)器置1。(2)保留斷點,把程序計數(shù)器PC的當前值推入堆棧保存。(3)清相應(yīng)的中斷請求標志位TF0、TF1、IE0、IE1

。(4)把被響應(yīng)的中斷服務(wù)程序的入口地址送入PC,從而轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。中斷服務(wù)程序的最后一條指令必須是中斷返回指令RETI。CPU執(zhí)行該指令時,先將相應(yīng)的優(yōu)先級狀態(tài)觸發(fā)器清零,然后從堆棧中彈出棧頂?shù)亩€字節(jié)到PC,從而返回到斷點。有些中斷請求的撤除也要由中斷服務(wù)程序來實現(xiàn)?,F(xiàn)場數(shù)據(jù)的保護和彈出?中斷響應(yīng)時間:3~8個機器周期六、中斷請求的撤除CPU響應(yīng)中斷請求后,在中斷返回(執(zhí)行RETI)前,必須撤除請求,否則會錯誤的再次引起中斷過程。對于定時器/計數(shù)器0、1的中斷請求以及跳變觸發(fā)方式的外部中斷0、1,CPU在響應(yīng)中斷后用硬件清除了相應(yīng)的中斷請求標志TF0、TF1、IE0、IE1,即自動撤除了中斷請求。對于串行接口中斷,CPU響應(yīng)中斷后沒有用硬件清除中斷標志位,必須用用戶編制的中斷服務(wù)程序來清除相應(yīng)的中斷標志位。對于電平觸發(fā)的外部中斷,由于CPU對INT0*、INT1*引腳沒有控制作用,也沒有相應(yīng)的中斷請求標志位,因此需要外接電路來清除中斷請求信號。七、中斷技術(shù)應(yīng)用舉例主程序和中斷服務(wù)程序。在編寫主程序時應(yīng)注意以下幾點: (1)主程序的起始地址。MCS-51單片機復位后,PC=0000H,而各中斷源的入口地址為0003H~0023H。因此,在編寫程序時應(yīng)在0000H處使用一條轉(zhuǎn)移指令,跳過上述區(qū)域。主程序則以轉(zhuǎn)移指令的目的地址作為其起始地址。

ORG 0000H

LJMP MAIN ORG 0003H

LJMP SUM ORG 1000HMAIN: ~~(2)主程序的初始化內(nèi)容。

MCS-51中斷系統(tǒng)的功能是通過上述特殊功能寄存器進行統(tǒng)一管理的,中斷系統(tǒng)的初始化是指用戶對這些特殊功能寄存器中的各控制位進行賦值。初始化包括:相應(yīng)中斷源開中斷;設(shè)定所涉及中斷源的中斷優(yōu)先級;若為外部中斷,應(yīng)規(guī)定其觸發(fā)方式。例5-1編寫INT1*為低電平觸發(fā)的初始化程序。(1)采用位操作指令實現(xiàn) CLR IT1

;電平觸發(fā)方式

SETB EA ;總中斷允許

SETB EX1 ;設(shè)置外部中斷1允許

SETB PX1 ;設(shè)置INT1*為高優(yōu)先級斷

(2)采用字節(jié)操作指令

ANL TCON,#0FBH MOV IE,#84H ORL IP,#04H

例5-2利用INT0*實現(xiàn)單步操作。MCS-51中斷系統(tǒng)有個特點,當執(zhí)行中斷返回指令RETI后,至少還要執(zhí)行一條指令,才能響應(yīng)新的中斷請求。單步操作是通過外部中斷INT0*引腳上的低電平實現(xiàn),即按一次鍵執(zhí)行一條指令。

ORG 0000H LJMP MAIN ORG 0003H LJMP FUNINT0 MAIN: MOVSP,#60H SEB IT0 ;脈沖觸發(fā)方式 SETB EA ;總中斷允許

SETB EX0 ;允許外部中斷0中斷

SETB PX0 ;設(shè)置INT0*為高優(yōu)先級斷 MOV

A,#0 SJMP$FUNINT0: PUSH

INC

A

CJNE A,#100,F(xiàn)UNR CLR

EX0 SETB

P1.0 POP

FUNR: RETI END例5-3外部中斷源擴展。當外部中斷源多于2個時,可采用硬件申請與軟件查詢的方法擴展外部中斷。

8051≥1

EXT0EXT1EXT2EXT3P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7LEDR ORG 0000H JLMPMAIN ORG 0003H LJMPEXINT ;轉(zhuǎn)外部中斷1服務(wù)程序

…… EXINT: PUSH PSW PUSH A ;保護現(xiàn)場。

JB P1.0,EXT0 JB P1.1,EXT1 JB P1.2,EXT2 JB P1.3,EXT3 DONE: POP A POP PSW ;恢復現(xiàn)場。

RETI ;中斷返回。

…… EXT0:SETB P1.4 ┇ AJMP DONE EXT1:SETB P1.5 ┇ AJMP DONE EXT2:SETB P1.6 ┇ AJMP DONE EXT3:SETB P1.7┇AJMP DONE例5-4統(tǒng)計脈沖觸發(fā)方式的的個數(shù),若滿100個,則停止統(tǒng)計并將P1.0置1。

ORG 0000H LJMP MAIN ORG 0003H LJMP SUM

ORG 1000H MAIN: MOV A,00H ;主程序開始 SETB IT0 ;設(shè)置脈沖觸發(fā)方式

SETB IE0 ;設(shè)置外部中斷0允許

SETB EA ;總中斷允許

SJMP$ ;等待中斷SUM: INC A CJNE A,#100,QUIT

CLREA ;總中斷禁止

CLR IE0

;外部中斷0禁止

SETB P1.0 ;置位P1.0QUIT: RETI

;中斷返回

END習題√1、8051單片機提供了哪幾個中斷源?有哪幾個中斷優(yōu)先級別?各中斷源所對應(yīng)的中斷矢量地址是多少?√2、外部中斷有幾種觸發(fā)方式?如何選擇?3、中斷響應(yīng)怎樣保護斷點地址和保護現(xiàn)場?4、在MCS-51單片機中,各中斷標志是如何產(chǎn)生的?哪些中斷標志可以隨中斷響應(yīng)而自動撤除?哪些需要由用戶撤除?撤除的方法是什么?√

6、寫出INT0*為邊沿觸發(fā)方式的中斷初始化程序。7、什么是中斷優(yōu)先級?中斷優(yōu)先處理的原則是什么?第四節(jié)定時器/計數(shù)器一、定時器/計數(shù)器的結(jié)構(gòu)和原理兩個16位的可編程定時器/計數(shù)器,T0,T1。兩個特殊功能寄存器:方式寄存器和控制寄存器。定時器/計數(shù)器的核心是內(nèi)部的16位加法計數(shù)器,分別用TH0、TL0和TH1、TL1表示,在使用時先給加法計數(shù)器設(shè)定初值,然后加1計數(shù),直到溢出,計數(shù)的次數(shù)就是最大值減去初值。

二、定時和計數(shù)兩種功能1.計數(shù)功能

計數(shù):對外部事件進行計數(shù)。

外部事件的發(fā)生以輸入脈沖表示,因此計數(shù)功能的實質(zhì)就是對外來脈沖進行計數(shù)。外部輸入的脈沖在負跳變時有效,進行計數(shù)器加1(加法計數(shù))。

計數(shù)輸入端:T0(P3.4)和T1(P3.5)。1.計數(shù)功能定時器/計數(shù)器在每個機器周期的S5P2期間采樣T0/T1引腳,若采樣結(jié)果表明上一周期為高電平,下一周期為低電平,則TL加1。新的計數(shù)值在檢測到負跳變后的S3P1期間置入加法計數(shù)器。由于需要兩個機器周期才能識別高電平到低電平的跳變,所以外部計數(shù)脈沖的頻率應(yīng)小于fosc/24,且高電平與低電平的持續(xù)時間均不得小于一個機器周期。2.定時功能實現(xiàn)方法:通過計數(shù)器的計數(shù)實現(xiàn)。與計數(shù)功能的不同之處:計數(shù)脈沖來自單片機的內(nèi)部,即每個機器周期產(chǎn)生一個計數(shù)脈沖,也就是每個機器周期計數(shù)器加1。一個機器周期=12個振蕩周期,故,計數(shù)頻率為振蕩頻率的1/12。若:單片機晶振=6MHz,則計數(shù)頻率為0.5MHz,

2微秒計數(shù)器加1.將控制字寫入定時器/計數(shù)器的過程叫定時器/計數(shù)器的初始化。

初始化內(nèi)容:

規(guī)定T0、T1的工作方式;(TMOD)

將工作方式控制字寫入方式寄存器 賦定時/計數(shù)初值;(TH0,TL0;TH1,TL1)

規(guī)定T0、T1的工作狀態(tài)。(TR0/TR1)

將工作狀態(tài)控制字寫入控制寄存器三、工作模式寄存器和控制寄存器1.定時器控制寄存器(TCON,88H)位地址8F8E8D8C8B8A8988位符號TF1TR1TF0TR0IE1IT1IE0IT0

·TF0(TF1)——計數(shù)溢出標志位若有溢出,TF0(TF1)=1

無溢出,TF0(TF1)=0

有溢出時,當轉(zhuǎn)向中斷服務(wù)時,再由硬件自動清0。

TF0(TF1)的使用方式:中斷方式時,作中斷請求標志位來使用,

查詢方式時,作查詢狀態(tài)位來使用。TF0(TF1)也可以用程序置位或清零,例如執(zhí)行指令SETBTF1后TF1=1。所以定時器/計數(shù)器1的中斷請求還能用程序安排產(chǎn)生。

·TR0(TR1)——定時器T0(T1)運行控制位當TR0(TR1)=1時,啟動定時器開始工作。當GATE=0時,TR0(TR1)置1,啟動定時器開始工作。當GATE=1時,且INTi*為高電平時,TR0(TR1)置1啟動定時器工作;由軟件清零關(guān)閉定時器。2.

定時器工作方式寄存器(TMOD,89H)作用:設(shè)置兩個定時器/計數(shù)器工作方式。但TMOD寄存器不能位尋址,只能用字節(jié)傳送指令設(shè)置其內(nèi)容。位序號D7D6D5D4D3D2D1D0位符號GATEC/TM1M0GATEC/TM1M0

T1T0M1、M0——工作方式選擇位??尚纬?種編碼,對應(yīng)于四種工作方式。M1M0工作方式功能描述00011011方式0方式1方式2方式313位計數(shù)器16位計數(shù)器自動重裝初值的8位計數(shù)器定時器0:分成兩個8位計數(shù)器定時器1:停止計數(shù)·——定時方式或計數(shù)方式選擇位 =0 定時工作方式 =1 計數(shù)工作方式·GATE——門控位

GATE=0 以運行控制位TR0(TR1)啟動定時器

GATE=1以外中斷請求信號和TR0(TR1)共同啟動定時器

復位時,TMOD=0。舉例如下:

設(shè)定時器1為定時工作方式,要求由軟件啟動定時器1,按方式2工作。定時器0為計數(shù)方式,要求由軟件啟動定時器0,按方式1工作。

MOVTMOD,#25H。 位序號D7D6D5D4D3D2D1D0位符號GATE

0C/T0M11M00GATE0C/T1M10M01四、定時器/計數(shù)器的四種工作模式四種工作方式:即方式0、方式1、方式2和方式3。其中:方式0、1和2下,T0和T1的工作方式相同,方式3下,兩個定時器的工作方式不同。1、方式013位計數(shù)結(jié)構(gòu)的工作方式。圖5-7是定時器/計數(shù)器0在工作方式0下的邏輯結(jié)構(gòu)。

T1的結(jié)構(gòu)和操作與T0完全相同。圖5-7T0(或T1)方式0結(jié)構(gòu)當GATE=0時,

若TR0=1,接通計數(shù)控制K,啟動T0在原計數(shù)值上加1計數(shù),直至溢出。若TR0=0,則關(guān)斷控制開關(guān),停止計數(shù)。當GATE=1,且TR0=1時,

或門、與門全部打開,外信號電平通過引腳直接開啟或關(guān)斷定時器計數(shù)。輸入1電平時,允許計數(shù),否則停止計數(shù)。由于定時器/計數(shù)器以加1方式計數(shù),當定時器/計數(shù)器用于計數(shù)工作方式時,假定要求的計數(shù)長度為N,則應(yīng)裝入定時器/計數(shù)器的初值

X=213-N。在方式0下,計數(shù)的長度范圍為1~8192。

2、方式1計數(shù)器由TH8位和TL8位構(gòu)成。當定時器/計數(shù)器用于計數(shù)工作方式時,假定要求的計數(shù)長度為N,則應(yīng)裝入定時器/計數(shù)器的初值X=216-N。在方式0下,計數(shù)的長度范圍為1~65536。當工作于定時狀態(tài)時,若需要的定時時間為Tc,則需要的機器周期數(shù)N=Tc/Tp(Tp=機器周期),則應(yīng)裝入定時器/計數(shù)器的初值X=216-N。若晶振頻率為12MHz,則當X=65535時,具有最小的定時時間為1us;當N=65536時,具有最大的定時時間為65536us≈65ms。圖6-3T0(或T1)方式1結(jié)構(gòu)――16位計數(shù)器3、方式2方式2具有自動重新加載功能,即自動加載計數(shù)初值。在該工作方式下,把16位計數(shù)器分為兩部分,即以TL作計數(shù)器,以TH作預置寄存器,初始化時把計數(shù)初值分別裝入TL和TH中。當計數(shù)溢出時,由預置寄存器TH以硬件方法自動給計數(shù)器TL重新加載,繼續(xù)計數(shù),循環(huán)重復。圖6-4T0(或T1)方式2結(jié)構(gòu)――8位計數(shù)器 4.方式3

前三種工作方式下,T0和T1的設(shè)置和使用是完全相同的。但是在工作方式3下,二者的設(shè)置和使用卻是不同的,因此要分開介紹。 (1)在工作方式3下,T0被拆成兩個獨立的8位計數(shù)器TL0和TH0。其中TL0既可以作計數(shù)使用,又可以作定時使用。

T0的各控制位、引腳和中斷源,即、GATE、TR0、TF0

和T0(P3.4)引腳、(P3.2)引腳全歸它使用。功能和操作與方式1完全相同,而且邏輯電路結(jié)構(gòu)也很相似,如圖6-5所示。

圖6-5T0工作方式3邏輯結(jié)構(gòu)若將T1強行設(shè)置為模式3,就會使T1立即停止工作。初值計數(shù)值定時時間方式00~81911~8192(1~8192)μS方式10~655351~65536(1~65536)μS方式20~2551~256(1~256)μS方式3TL00~2551~256(1~256)μSTH00~255(1~256)μS以晶振fosc=12MHz計算五、定時器/計數(shù)器的應(yīng)用舉例主要任務(wù):編程。編程時應(yīng)注意的問題:

1.能正確寫入控制字(即初始化定時器/計數(shù)器) 2.會進行定時/計數(shù)初值的計算。

寫入控制字的次序:

1.把工作方式控制字寫入TMOD寄存器;

2.把定時/計數(shù)初值裝入TL0、TH0(或TL1、TH1)

3.置位TR0(或TR1)以啟動計數(shù)

4.置位ET0(或ET1)允許定時器/計數(shù)器中斷(如果需要);

5.置位EA使CPU開放中斷。

定時器/計數(shù)器初值的計算:

計數(shù)初值=最大計數(shù)值-需要計數(shù)的值最大計數(shù)值在不同工作方式下是不同的,方式0為:8192方式1為:65536方式2為:256方式3為:256如果定時,需要計數(shù)的值=定時時間/機器周期例1:設(shè)單片機晶振頻率fosc=6MHz,使用定時器0以方式0產(chǎn)生周期為2ms的等寬正方波脈沖,并由P1.0輸出。以中斷方式完成。

(1)計算計數(shù)初值實現(xiàn)正方波脈沖的方法:P1.0端以1ms為周期交替輸出高低電平。則:定時時間應(yīng)為1ms。若晶振為6MHz,則一個機器周期=2us。設(shè)待求的計數(shù)初值為X,則:(213-X)×2us=1000us得:X=7692=11110000

01100B

TH1=0F0H,TL1=0CH。(2)TMOD寄存器初始化

T1在方式0下,M1M0=00;定時功能,應(yīng)使=0;實現(xiàn)T1的運行控制,則GATE=0。所以:TMOD=00H。(3)由定時器控制寄存器TCON中的TR1位控制定時的啟動和停止,則TR1=1,啟動;TR1=0,停止。位序號D7D6D5D4D3D2D1D0位符號GATEC/TM1M0GATEC/TM1M000000000(4)程序清單: ORG 0000H LJMP START

ORG 000BH

LJMP TINT START:MOVSP,#60H MOV TMOD,#00H ;設(shè)置T1工作方式0 MOV TL0, #0CH MOV TH0, #0F0H ;設(shè)置計數(shù)初值

SETB EA

SETB ET0

SETB TR1 ;啟動T1運行

SETBP1.0;高電平

SJMP$TINT:CPL P1.0

;輸出取反

MOV TL0, #0CH

;重新設(shè)置計數(shù)初值

MOV TH0, #0F0H

RETI END ;程序結(jié)束例2:設(shè)單片機晶振頻率fosc=6MHz,使用定時器1以方式1產(chǎn)生周期為2S的等寬正方波脈沖,并由P1.7輸出。以中斷方式完成。 (1)計算計數(shù)初值 設(shè)待求的計數(shù)初值為X,則: (216-X)×2us=1000,000us

得:X=15536=3CB0H,則:TH1=3CH,TL1=0B0H。(2)TMOD寄存器初始化

位序號D7D6D5D4D3D2D1D0位符號GATEC/TM1M0GATEC/TM1M000010000M1M0=01,C/T=0,GATE=0

所以:TMOD=10H(4)程序清單: ORG 0000H LJMP START

ORG 001BH

LJMP TINT START:MOVSP,#60H MOV TMOD,#10H ;設(shè)置T1工作方式0 MOV TH1, #3CH ;設(shè)置計數(shù)初值

MOV TL1, #0B0H SETB EA

SETB ET1

SETB TR1 ;啟動T1運行

SETBP1.7;高電平

MOVR7,#10 SJMP$TINT:

MOV TL0, #0B0H

;重新設(shè)置計數(shù)初值

MOV TH0, #3CH DJNZR7,LOOP

MOVR7,#10

CPL P1.7

;輸出取反

LOOP:RETI END ;程序結(jié)束查詢方式實現(xiàn):ORG 1000H

START:MOV TMOD,#10H ;設(shè)置T1工作方式1 MOV TH1, #3CH ;設(shè)置計數(shù)初值

MOV TL1, #0B0H MOV IE,#00H

MOV R7,#10

SETB TR1 SETBP1.7 LOOP: JB TF1,LOOP1 AJMP LOOP LOOP1:MOV TH1, #3CH MOV TL1, #0B0H CLR TF1 DJNZR7,LOOP

MOV R7,#10

CPLP1.7

ALMPLOOP END例3:有一自動罐裝藥粒系統(tǒng),每瓶罐裝藥粒100片,每滿一瓶,累加器A加1操作,若滿200瓶,向P1.0輸出0,然后停止計數(shù)。要求用定時器1以工作方式2計數(shù)。(查詢方式)(1)計算計數(shù)初值設(shè)待求的計數(shù)初值為X,則: (28-X)=100得: X=156=38H,

則: TH1=38H,TL1=38H。(2)TMOD寄存器初始化 M1M0=10,=1,GATE=0

因此:TMOD=60H(3)程序清單:

ORG 1000H MOV TMOD,#60H ;設(shè)置T1工作方式

MOV TH1, #38H ;設(shè)置計數(shù)初值

MOV TL1, #38H 位序號D7D6D5D4D3D2D1D0位符號GATEC/TM1M0GATEC/TM1M0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論