《單片機(jī)原理及應(yīng)用》課件第5章 單片機(jī)中斷和定時(shí)器計(jì)數(shù)器new_第1頁
《單片機(jī)原理及應(yīng)用》課件第5章 單片機(jī)中斷和定時(shí)器計(jì)數(shù)器new_第2頁
《單片機(jī)原理及應(yīng)用》課件第5章 單片機(jī)中斷和定時(shí)器計(jì)數(shù)器new_第3頁
《單片機(jī)原理及應(yīng)用》課件第5章 單片機(jī)中斷和定時(shí)器計(jì)數(shù)器new_第4頁
《單片機(jī)原理及應(yīng)用》課件第5章 單片機(jī)中斷和定時(shí)器計(jì)數(shù)器new_第5頁
已閱讀5頁,還剩85頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)中斷和定時(shí)器/計(jì)數(shù)器從應(yīng)用的角度重點(diǎn)講述MCS-51單片機(jī)的中斷系統(tǒng)和定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)、工作原理、實(shí)現(xiàn)過程和匯編語言編程方法。單片機(jī)中斷和定時(shí)器/計(jì)數(shù)器單片機(jī)的中斷系統(tǒng)5.1單片機(jī)的定時(shí)器/計(jì)數(shù)器5.2中斷系統(tǒng)在計(jì)算機(jī)系統(tǒng)中起著十分重要的作用。MCS-51單片機(jī)具備一套完善的中斷系統(tǒng),包括5個(gè)中斷源,2個(gè)中斷優(yōu)先級,可以實(shí)現(xiàn)2級中斷嵌套。單片機(jī)的中斷系統(tǒng)1.中斷的基本概念當(dāng)CPU正在處理某件事情的時(shí)候,單片機(jī)外部或內(nèi)部發(fā)生的某一事件請求CPU迅速去處理

CPU暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件事件處理完畢后,CPU再回到剛剛被暫停的地方繼續(xù)原來的工作上述過程叫做中斷單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的基本概念和基本結(jié)構(gòu)能引起CPU產(chǎn)生中斷的事件稱為中斷源。中斷源向CPU提出的處理請求,稱為中斷請求。CPU接受中斷請求,暫時(shí)中止自身的事情轉(zhuǎn)去處理事件的過程,稱為中斷響應(yīng)過程。CPU對事件的整個(gè)處理過程,稱為中斷服務(wù)。為實(shí)現(xiàn)中斷而編寫的服務(wù)程序叫做中斷服務(wù)程序。事件處理完畢,再回到原來被中斷的地方,稱為中斷返回。單片機(jī)是通過相應(yīng)的硬件電路和軟件設(shè)置來完成中斷功能的,所以將能完成中斷功能的硬件系統(tǒng)和軟件系統(tǒng)統(tǒng)稱為中斷系統(tǒng)。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的基本概念和基本結(jié)構(gòu)采用中斷技術(shù)可以使單片機(jī)實(shí)現(xiàn)以下功能:(1)分時(shí)操作。(2)實(shí)時(shí)處理。(3)故障處理。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的基本概念和基本結(jié)構(gòu)MCS-51單片機(jī)的中斷系統(tǒng)包括5個(gè)中斷源,2個(gè)中斷優(yōu)先級,4個(gè)用于中斷控制的寄存器IE、IP、TCON和SCON。

單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的基本概念和基本結(jié)構(gòu)2.中斷系統(tǒng)的基本結(jié)構(gòu)INT0—外部中斷請求0,由引腳P3.2提供,中斷請求標(biāo)志為IE0,由IT0選擇其有效方式。INT1—外部中斷請求1,由引腳P3.3提供,中斷請求標(biāo)志為IE1,由IT1選擇其有效方式。T0—定時(shí)器/計(jì)數(shù)器T0溢出中斷請求,中斷請求標(biāo)志為TF0。T1—定時(shí)器/計(jì)數(shù)器T1溢出中斷請求,中斷請求標(biāo)志為TF1。TxD/RxD—串行中斷請求,中斷請求標(biāo)志為TI或RI。

中斷源單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的基本概念和基本結(jié)構(gòu)通常,外部中斷源有以下幾種:(1)I/O設(shè)備中斷源。(2)控制對象中斷源。(3)故障中斷源。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的基本概念和基本結(jié)構(gòu)MCS-51單片機(jī)通過中斷請求標(biāo)志寄存器TCON、SCON,中斷允許控制寄存器IE和中斷優(yōu)先級控制寄存器IP對中斷實(shí)現(xiàn)控制。

1.中斷請求控制(1)TCON中的中斷標(biāo)志位

D7D6D5D4D3D2D1D0

(88H)8FH8EH8DH8CH8BH8AH89H88HTCONTF1TF0IE1IT1IE0IT0單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)①IT0—外部中斷0觸發(fā)方式控制位當(dāng)IT0=0時(shí),外部中斷0為電平觸發(fā)方式當(dāng)IT0=1時(shí),外部中斷0為邊沿觸發(fā)方式與中斷有關(guān)的標(biāo)志位的含義如下:兩種觸發(fā)方式的比較:電平觸發(fā)方式時(shí),外部中斷源的有效低電平必須保持到請求獲得響應(yīng)時(shí)為止,否則就會漏掉;在中斷服務(wù)結(jié)束之前,中斷源的有效低電平必須撤除,否則中斷返回之后將再次產(chǎn)生中斷。邊沿觸發(fā)方式時(shí),在相繼兩次采樣中,先采樣到外部中斷輸入為高電平,下一個(gè)周期采樣到為低電平,則置位中斷申請標(biāo)志IE0。若CPU暫時(shí)不能響應(yīng),中斷申請標(biāo)志也不會丟失,直到CPU響應(yīng)此中斷時(shí)才清“0”。另外,為了保證下降沿能夠被可靠地采樣到,外部中斷源引腳上的負(fù)脈沖寬度至少要保持一個(gè)機(jī)器周期。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)②IE0—外部中斷0的中斷請求標(biāo)志位當(dāng)CPU檢測到引腳上出現(xiàn)有效的中斷信號時(shí)(若IT0=0,且檢測到引腳為低電平時(shí);若IT0=1,且檢測到引腳當(dāng)出現(xiàn)負(fù)跳變時(shí)),IE0由硬件置“1”,向CPU申請中斷。③IT1—外部中斷1觸發(fā)方式控制位其意義與IT0類似。④IE1—外部中斷1的中斷請求標(biāo)志位其意義與IE0類似。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)⑤TF0—T0溢出中斷請求標(biāo)志位當(dāng)啟動(dòng)定時(shí)器/計(jì)數(shù)器T0計(jì)數(shù)后,T0從初值開始加1計(jì)數(shù),當(dāng)最高位產(chǎn)生溢出時(shí),TF0由硬件置“1”,向CPU申請中斷。CPU響應(yīng)TF0中斷時(shí),由硬件清“0”TF0。⑥TF1—T1溢出中斷請求標(biāo)志位功能和TF0類似。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)①TI—串行口發(fā)送中斷標(biāo)志位每當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)后,TI由硬件自動(dòng)置“1”。CPU響應(yīng)該中斷時(shí),不能自動(dòng)清除TI,必須用軟件對TI標(biāo)志位清“0”。②RI—串行口接收中斷標(biāo)志位每當(dāng)串行口接收完一幀串行數(shù)據(jù)后,RI由硬件自動(dòng)置“1”。CPU響應(yīng)該中斷時(shí),不能自動(dòng)清除RI,必須用軟件對RI標(biāo)志位清“0”。(2)SCON中的中斷標(biāo)志位D7D6D5D4D3D2D1D0(98H)9FH9EH9DH9CH9BH9AH99H98HSCONTIRI單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)2.中斷允許控制中斷源的開放和屏蔽由IE控制(1,開放;0,禁止)D7D6D5D4D3D2D1D0(A8H)AFHAEHADHACHABHAAHA9HA8HIEEAESET1EX1ET0EX0EX0:外中斷0允許

ET0:T0中斷允許

EX1:外中斷1允許

EA:CPU中斷允許

ET1:T1中斷允許

ES:串口中斷允許單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)復(fù)位后,IE清0,所有中斷請求被禁止。若使某一個(gè)中斷源被允許中斷,除了IE相應(yīng)的位的被置“1”,還必須使EA位=1。改變IE的內(nèi)容,可由位操作指令來實(shí)現(xiàn),即:

SETBbit;

CLRbit。也可用字節(jié)操作指令來編寫。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)【例5-1】假設(shè)允許外部中斷0和定時(shí)器/計(jì)數(shù)器0中斷,禁止其它中斷源的中斷請求,試根據(jù)假設(shè)設(shè)置IE的相應(yīng)值。參考程序1(用位操作指令):

CLRES CLREX1 CLRET1 SETBET0 SETBEX0 SETBEA參考程序2(用字節(jié)操作指令)

MOV IE,#83H或 MOV 0A8H,#83H 單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)3.中斷優(yōu)先級控制MCS-51有兩個(gè)中斷優(yōu)先級,可實(shí)現(xiàn)兩級中斷嵌套。兩級中斷嵌套的過程如下所示:單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)中斷優(yōu)先級遵循的原則:低優(yōu)先級中斷請求不得打斷高優(yōu)先級的中斷服務(wù);但高優(yōu)先級中斷請求可以打斷低優(yōu)先級的中斷服務(wù)。任何一種中斷(不管是高級還是低級),一旦得到響應(yīng),不會再被它的同級中斷源所中斷。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)中斷優(yōu)先級由IP控制(1,高級;0,低級)

D7D6D5D4D3D2D1D0(B8H)BFHBEHBDHBCHBBHBAHB9HB8HIPPSPT1PX1PT0PX0PX0:外中斷0優(yōu)先級

PT0:T0中斷優(yōu)先級

PX1:外中斷1優(yōu)先級PT1:T1中斷優(yōu)先級

PS:串口中斷優(yōu)先級單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)

復(fù)位后,IP清0,即全部設(shè)置為低優(yōu)先級中斷。同一優(yōu)先級的自然順序(自高至低):INT0、T0、INT1、T1、串口。

MCS-51的中斷系統(tǒng)有兩個(gè)不可尋址的“優(yōu)先級激活觸發(fā)器”:一個(gè)用來指示某高優(yōu)先級的中斷正在執(zhí)行,所有后來的中斷均被阻止;另一個(gè)用來指示某低優(yōu)先級的中斷正在執(zhí)行,所有同級中斷都被阻止,但不阻斷高優(yōu)先級的中斷請求。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)【例5-2】設(shè)MCS-51的外部中斷0和定時(shí)器/計(jì)數(shù)器0中斷為高優(yōu)先級,其它中斷請求為低優(yōu)先級。試設(shè)置IP寄存器的相應(yīng)值。參考程序1(用位操作指令)

SETB PX0 SETB PT0 CLRPX1 CLRPT1 CLRPS 參考程序2(用字節(jié)操作指令)

MOV IP,#03H 或 MOV 0B8H,#03H 單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的控制與實(shí)現(xiàn)中斷處理過程可分3個(gè)階段:中斷響應(yīng)、中斷處理和中斷返回。1.中斷響應(yīng)(1)中斷響應(yīng)條件①有中斷源發(fā)出中斷請求②中斷總允許位EA=1③申請中斷的中斷源的中斷允許位為1④無同級或更高級中斷正在被服務(wù)⑤當(dāng)前指令已執(zhí)行到最后一個(gè)機(jī)器周期⑥若當(dāng)前正在執(zhí)行的指令是RETI或是訪問IE、IP的指令,該指令以及緊接著的另一條指令已執(zhí)行完。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程(2)中斷響應(yīng)過程將相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器置1(阻斷后來同級或低級中斷)執(zhí)行硬件LCALL指令(PC入棧,中斷服務(wù)程序入口址送PC

)執(zhí)行中斷服務(wù)程序

單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程各中斷源的入口地址如下所示:中斷源入口地址INT00003HT0000BHINT10013HT1001BHRxD/TxD0023H中斷服務(wù)程序入口存放指令LJMP或AJMP狀態(tài)觸發(fā)器的復(fù)位由中斷返回指令RETI控制單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程(3)中斷響應(yīng)時(shí)間中斷響應(yīng)時(shí)間最短為3個(gè)機(jī)器周期受阻時(shí)要附加3~5個(gè)機(jī)器周期(無同級或高級中斷正進(jìn)行)

查詢周期不是當(dāng)前指令的最后機(jī)器周期(如MUL,+3)查詢周期恰逢RETI類指令(且后跟MUL指令+5)所以,中斷響應(yīng)時(shí)間最長為8個(gè)機(jī)器周期單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程(4)中斷請求的撤消中斷請求被響應(yīng)后,要及時(shí)撤銷中斷請求,否則會引起重復(fù)響應(yīng)。①定時(shí)器/計(jì)數(shù)器中斷請求的撤消

中斷請求被響應(yīng)后,硬件自動(dòng)將中斷請求標(biāo)志位TF0或TF1清“0”

,因此定時(shí)器/計(jì)數(shù)器中斷請求是自動(dòng)撤銷的。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程②外部中斷請求的撤消該中斷請求的撤銷,包括中斷標(biāo)志位的清“0”和外中斷信號的撤消。邊沿觸發(fā)方式:中斷被響應(yīng)后,

IE0或IE1由硬件自動(dòng)清“0”;由于跳沿信號過后就消失了,所以外部中斷請求也是自動(dòng)撤消的。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程

電平觸發(fā)方式:中斷被響應(yīng)后,IE0或IE1由硬件自動(dòng)清“0”;但中斷請求信號的低電平可能繼續(xù)存在,在以后的機(jī)器采樣中,又會把已清“0”的IE0或IE1重新置“1”。要徹底解決電平方式外部中斷請求的撤銷,需在中斷響應(yīng)后把中斷請求信號引腳從低電平強(qiáng)制改變?yōu)楦唠娖?。因?yàn)镃PU無法直接干預(yù)外電路,所以在引腳處用硬件電路(再配合相應(yīng)的軟件)來撤消外電路過期的中斷請求。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程電平方式外部中斷請求的撤銷電路如下:為實(shí)現(xiàn)上圖所示的撤銷中斷請求功能,需要在中斷服務(wù)程序中加如下兩條指令:SETB P1.0或ORL P1,#01HCLR P1.0或ANL P1,#0FEH單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程③串行口中斷請求的撤消串行口中斷被響應(yīng)后,CPU無法知道是接收中斷還是發(fā)送中斷,還需測試這兩個(gè)中斷標(biāo)志位的狀態(tài),以判定是接收操作還是發(fā)送操作。所以串行口中斷請求的撤消只能使用軟件方法,即在中斷服務(wù)程序中用如下指令清除標(biāo)志位:

CLRTI;清TI標(biāo)志位

CLRRI;清RI標(biāo)志位單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程2.中斷處理中斷處理包括兩部分內(nèi)容:保護(hù)現(xiàn)場和為中斷源服務(wù)?,F(xiàn)場:中斷時(shí)刻單片機(jī)中某些寄存器和存儲器單元中的數(shù)據(jù)或狀態(tài)。保護(hù)現(xiàn)場:將現(xiàn)場送入堆棧保存?,F(xiàn)場恢復(fù):從堆棧彈出保存的現(xiàn)場。要保護(hù)哪些內(nèi)容,由用戶根據(jù)中斷處理程序的具體情況決定。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程為中斷源服務(wù)是指根據(jù)中斷源的具體要求進(jìn)行相應(yīng)的處理。編寫中斷處理程序時(shí)應(yīng)注意以下幾點(diǎn):(1)如果中斷服務(wù)程序的長度超過8字節(jié),則需在中斷入口地址單元處放一條無條件轉(zhuǎn)移指令。(2)若在執(zhí)行當(dāng)前中斷程序時(shí)禁止更高優(yōu)先級中斷,應(yīng)用軟件關(guān)閉CPU中斷或屏蔽更高級中斷源的中斷,在中斷返回前再開放中斷。(3)在保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場時(shí),為了不使現(xiàn)場信息受到破壞或造成混亂,一般應(yīng)關(guān)閉CPU中斷,使CPU暫不響應(yīng)新的中斷請求。中斷處理流程單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程【例5-3】假設(shè)需要將PSW、A和工作寄存器R0~R7(00H~07H)的內(nèi)容進(jìn)行現(xiàn)場保護(hù),請根據(jù)中斷處理流程圖編寫中斷處理程序。參考程序INT:

CLR

EA ;CPU關(guān)中斷

PUSH

PSW;現(xiàn)場保護(hù)

PUSH

ACC SETB

RS0;將工作寄存器組由0組變?yōu)?組

SETB

EA ;CPU開中斷

中斷處理程序段

CLR

EA ;CPU關(guān)中斷

POP

ACC;現(xiàn)場恢復(fù)

POP

PSW

SETB

EA

;CPU開中斷

RETI

;中斷返回,恢復(fù)斷點(diǎn)單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程說明:(1)因?yàn)镽n(n=0~7)的物理地址是由PSW中RS1和RS0的狀態(tài)決定的,所以在對PSW進(jìn)行保護(hù)之后,可以通過修改RS1或RS0的值實(shí)現(xiàn)對Rn的現(xiàn)場保護(hù)。題中的R0~R7屬于0組工作寄存器,對應(yīng)地址為00H~07H,若要采用壓入堆棧的方式進(jìn)行保護(hù),執(zhí)行中斷處理程序前需要執(zhí)行8條PUSH指令,執(zhí)行中斷處理程序后還需要8條POP指令與之對應(yīng),程序?qū)兊煤芊爆?。而本例只是?zhí)行一條“SETBRS0”指令,便將工作寄存器組由0組變?yōu)?組,R0~R7的對應(yīng)地址變?yōu)?8H~0FH,原來R0~R7對應(yīng)的00H~07H的內(nèi)容便被保護(hù)起來。當(dāng)執(zhí)行完中斷處理程序后,在恢復(fù)PSW值的同時(shí),工作寄存器組又恢復(fù)為0組,R0~R7繼續(xù)對應(yīng)00H~07H。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程(2)“中斷處理程序段”,應(yīng)根據(jù)中斷任務(wù)的具體要求,來編寫這部分中斷處理程序。(3)如果本中斷服務(wù)程序不允許被其它的中斷所中斷。可將“中斷處理程序段”前后的“SETBEA”和“CLREA”兩條指令去掉。(4)若改變Rn的物理地址(修改RS1或RS0),則必須考慮堆棧區(qū)設(shè)置的問題。因?yàn)槟J(rèn)堆棧區(qū)和第1組工作寄存器組的物理地址(08H~0FH)重疊。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程3.中斷返回中斷服務(wù)程序最后指令必須是RETI,其功能:將斷點(diǎn)從堆棧彈送PC,CPU從原斷點(diǎn)繼續(xù)執(zhí)行將相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器清0,恢復(fù)原來工作狀態(tài)

注意不能用RET代替RETI

中斷服務(wù)程序中PUSH和POP必須成對使用單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程4.中斷請求的深入理解單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的處理過程中斷源中斷請求

標(biāo)志位名稱置位條件置位方法清零方法中斷方式查詢方式INT0IE0單片機(jī)12引腳輸入有效信號硬件自動(dòng)置位硬件自動(dòng)清零軟件編程清零INT1IE1單片機(jī)13引腳輸入有效信號硬件自動(dòng)置位硬件自動(dòng)清零軟件編程清零T0TF0計(jì)數(shù)器/定時(shí)器0產(chǎn)生計(jì)數(shù)溢出(計(jì)滿)硬件自動(dòng)置位硬件自動(dòng)清零軟件編程清零T1TF1計(jì)數(shù)器/定時(shí)器1產(chǎn)生計(jì)數(shù)溢出(計(jì)滿)硬件自動(dòng)置位硬件自動(dòng)清零軟件編程清零TxDTI發(fā)送緩沖器空(發(fā)完一個(gè)字節(jié))硬件自動(dòng)置位軟件編程清零軟件編程清零RxDRI接收緩沖器滿(收到一個(gè)字節(jié))硬件自動(dòng)置位軟件編程清零軟件編程清零中斷請求標(biāo)志位的變化情況1.中斷程序的結(jié)構(gòu)常用的中斷程序結(jié)構(gòu)如下:

ORG0000H LJMPMAIN

ORG中斷入口地址

LJMPINT ?MAIN:?中斷初始化程序?

INT:中斷服務(wù)程序單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用中斷程序一般包含中斷初始化程序和中斷服務(wù)程序兩部分。2.中斷程序的內(nèi)容中斷初始化程序的設(shè)計(jì)內(nèi)容:

(1)設(shè)置中斷允許控制寄存器IE。

(2)設(shè)置中斷優(yōu)先級寄存器IP。

(3)對外中斷源,要設(shè)置中斷請求是采用電平觸發(fā)方式還是跳沿觸發(fā)方式。中斷服務(wù)程序要根據(jù)中斷任務(wù)的具體要求進(jìn)行編寫。

單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用【例5-4】試編寫設(shè)置外部中斷源0為邊沿觸發(fā)的高優(yōu)先級中斷源的初始化程序。參考程序1(采用位操作指令)SETB EASETB EX0SETB PX0SETBIT0參考程序2(采用字節(jié)傳送指令)MOV IE,#81HMOV IP,#01HMOV TCON,#01H單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用【例5-5】如圖所示,89C51的P1口接了8個(gè)發(fā)光二極管,在外部中斷1上接了一個(gè)按鍵,試編程實(shí)現(xiàn)如下功能:通過外部中斷1,依次點(diǎn)亮8個(gè)發(fā)光二極管中的一個(gè)。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用3.外部中斷源的應(yīng)用程序參考程序

ORG 0000H LJMP MAIN ORG 0013H LJMP INT MAIN: SETB EA SETB EX1 SETB PX1 SETB IT1 MOV A,#0FEH HERE: LJMP HERE INT: MOV P1,A RL A RETI END單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用【例5-6】對于上題所示的電路,試編程實(shí)現(xiàn)如下功能:當(dāng)無外部中斷請求時(shí),每隔1s,依次點(diǎn)亮8個(gè)發(fā)光二極管中的1個(gè);當(dāng)有外部中斷請求時(shí),8只發(fā)光二極管的顯示狀態(tài)改為閃爍顯示(假設(shè)二極管點(diǎn)亮及熄滅的時(shí)間都是1s),閃爍5次后,繼續(xù)依次點(diǎn)亮。假設(shè)系統(tǒng)時(shí)鐘頻率為12MHz。

分析:根據(jù)題意,在無外部中斷請求時(shí),依次點(diǎn)亮8只發(fā)光二極管中的1個(gè),所以數(shù)據(jù)循環(huán)左移或循環(huán)右移的程序段要放在主程序中,當(dāng)有外部中斷請求時(shí),再根據(jù)要求修改P1口的狀態(tài)。

單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用參考程序

ORG 0000H LJMP MAIN ORG 0013H LJMP INTMAIN:

MOVSP,#6FH SETB EA SETB EX1 SETB IT1 MOV A,#0FEH LOOP: MOV P1,A LCALLD_1s RL A LJMP LOOP

單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用INT:

PUSHPSW SETBRS0 MOV R7,#05H;置循環(huán)次數(shù)L1: MOV P1,#00H;8個(gè)發(fā)光二極管都點(diǎn)亮 LCALLD_1s MOV P1,#0FFH;8個(gè)發(fā)光二極管都熄滅 LCALLD_1s DJNZ R7,L1

POPPSW RETI ;中斷返回D_1s: MOVR6,#10 ;延時(shí)1s子程序D100ms: MOV R5,#200DL: MOV R4,#250 DJNZ R4,$ DJNZ R5,DL DJNZ R6,D100ms RET ;子程序返回 END

單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用4.外部中斷源的擴(kuò)展及應(yīng)用擴(kuò)展外部中斷源的方法有:定時(shí)器/計(jì)數(shù)器擴(kuò)展法采用中斷和查詢相結(jié)合的擴(kuò)展法采用硬件電路擴(kuò)展法單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用中斷和查詢相結(jié)合的外部中斷源擴(kuò)展法:利用MCS-51的兩個(gè)外部中斷線,每一個(gè)中斷輸入線可以通過“與”的關(guān)系連接多個(gè)外部中斷源,同時(shí)利用MCS-51的I/O端口作為各中斷源的識別標(biāo)志,其原理如下所示。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用【例5-8】用單片機(jī)監(jiān)測X1、X2、X3三個(gè)外部設(shè)備在運(yùn)行過程中是否有故障。不管哪一個(gè)設(shè)備,一旦出現(xiàn)故障,必須馬上處理,所以采用中斷系統(tǒng)來檢測這三個(gè)外部設(shè)備。當(dāng)系統(tǒng)無故障時(shí),3個(gè)故障源輸入端X1~X3全為低電平,對應(yīng)的3個(gè)顯示燈全滅;當(dāng)某個(gè)設(shè)備出現(xiàn)故障時(shí),其對應(yīng)的輸入端由低電平轉(zhuǎn)為高電平,從而引起MCS-51單片機(jī)中斷,中斷服務(wù)程序的任務(wù)是判定故障,并點(diǎn)亮對應(yīng)的發(fā)光二極管。實(shí)現(xiàn)上述功能的電路如圖5-9所示。其中,發(fā)光二極管LED1~LED3對應(yīng)3個(gè)輸入端X1~X3。3個(gè)故障源通過或非門與89C51的外部中斷0的輸入端相連,同時(shí),X1~X3與P1口的P1.0~P1.2引腳相連,3個(gè)發(fā)光二極管LED1~LED3分別與P1口的P1.3~P1.5相連。單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用參考程序

ORG 0000H LJMP MAIN ORG 0003H LJMP SERVEMAIN: MOV P1,#0FFH SETB IT0

SETB EX0 SETB EA LJMP $單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用SERVE: JNB P1.0,L1 CLR P1.3L1: JNB P1.1,L2 CLR P1.4L2: JNB P1.2,L3 CLR P1.5L3: RETI

END 單片機(jī)的中斷系統(tǒng)-中斷系統(tǒng)的應(yīng)用1.定時(shí)器/計(jì)數(shù)器的基本結(jié)構(gòu)基本型:T0,定時(shí)、計(jì)數(shù)。

T1,定時(shí)、計(jì)數(shù)、串口波特率發(fā)生器。

單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的基本結(jié)構(gòu)和工作原理2.定時(shí)器/計(jì)數(shù)器的工作原理定時(shí)器/計(jì)數(shù)器的核心部件是加1計(jì)數(shù)器。定時(shí)器模式時(shí),是對內(nèi)部機(jī)器周期計(jì)數(shù)。計(jì)數(shù)值乘以機(jī)器周期就是定時(shí)時(shí)間。計(jì)數(shù)器模式時(shí),是對外部事件計(jì)數(shù)。脈沖由T0(P3.4)或T1(P3.5)引腳輸入。

單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的基本結(jié)構(gòu)和工作原理MCS-51單片機(jī)中有兩個(gè)SFR與定時(shí)/計(jì)數(shù)有關(guān):TMOD用于設(shè)置定時(shí)器/計(jì)數(shù)器的工作模式和工作方式TCON用于控制定時(shí)器/計(jì)數(shù)器的啟動(dòng)、停止和中斷請求1.工作方式寄存器TMOD(89H)

D7D6D5D4D3D2D1D0TMOD(89H)GATEM1M0GATEM1M0←定時(shí)器/計(jì)數(shù)器T1→←定時(shí)器/計(jì)數(shù)器T0→單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的控制與狀態(tài)TMOD中各位的含義如下:①M(fèi)1、M0—工作方式選擇位定時(shí)器/計(jì)數(shù)器有4種工作方式,由M1M0進(jìn)行設(shè)置,如下表所示。M1M0方式說明00方式013位定時(shí)器/計(jì)數(shù)器01方式116位定時(shí)器/計(jì)數(shù)器10方式2自動(dòng)重新裝載的8位定時(shí)器/計(jì)數(shù)器11方式3T0分成兩個(gè)8位計(jì)數(shù)器,T1停止計(jì)數(shù)單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的控制與狀態(tài)②C/T—定時(shí)/計(jì)數(shù)模式選擇位C/T=0,設(shè)置為定時(shí)模式,對內(nèi)部機(jī)器周期進(jìn)行計(jì)數(shù)。C/T=1,設(shè)置為計(jì)數(shù)模式,對來自T0、T1引腳的外部脈沖信號進(jìn)行計(jì)數(shù)。③GATE—門控位GATE=0時(shí),只要用軟件使TCON中的運(yùn)行控制位TRx為1,就可以啟動(dòng)Tx。GATE=1時(shí),要用軟件使運(yùn)行控制位TRx為1,同時(shí)或引腳要為高電平時(shí),才可以啟動(dòng)Tx。注意:TMOD不能進(jìn)行位尋址。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的控制與狀態(tài)2.控制寄存器TCON(88H)TCON的高4位用于控制定時(shí)器/計(jì)數(shù)器的啟動(dòng)、停止和中斷申請。格式如下所示:

D7D6D5D4D3D2D1D0(88H)8FH8EH8DH8CH8BH8AH89H88HTCONTF1TR1TF0TR0IE1IT1IE0IT0TFx:Tx溢出標(biāo)志位。響應(yīng)中斷后TFx由硬件自動(dòng)清0。TRx:Tx運(yùn)行控制位。置1時(shí)開始工作;清0時(shí)停止工作。TRx要由軟件置1或清0(即啟動(dòng)與停止要由軟件控制)。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的控制與狀態(tài)T0有方式0、1、2、3;T1有方式0、1、2。以T0為例說明。1.方式0:13位計(jì)數(shù)器單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的工作方式方式0是為兼容MCS-48而設(shè)的,在實(shí)際應(yīng)用中幾乎不再使用。2.方式1:16位計(jì)數(shù)器單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的工作方式門控位作用當(dāng)GATE=0時(shí)僅由TR0控制與門的開啟。與門輸出1時(shí),控制開關(guān)接通,計(jì)數(shù)開始;當(dāng)GATE=1時(shí)與門的開啟由INT0和TR0共同控制。這種方式可以用來測量INT0引腳上正脈沖的寬度。

單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的工作方式3.方式2:8位自動(dòng)重裝初值計(jì)數(shù)器方式2省去了重裝初值的時(shí)間,可以實(shí)現(xiàn)精確的定時(shí),常用于產(chǎn)生串行通信中的波特率。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的工作方式4.方式3(僅T0有此方式,T1的方式3將停止計(jì)數(shù))TL0進(jìn)行8位定時(shí)/計(jì)數(shù)

TH0進(jìn)行8位定時(shí)(借用T1的TR1、TF1)

T0處于方式3時(shí),T1可定為方式0、方式1和方式2,用來作為串行口的波特率發(fā)生器,或不需要中斷的場合。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的工作方式1.計(jì)數(shù)初值的計(jì)算假設(shè)當(dāng)前工作方式下的最大計(jì)數(shù)值用M表示,則各種工作方式的最大計(jì)數(shù)值如下:方式0,M=213=8192;方式1,M=216=65536;方式2,M=28=256;方式3,M=28=256。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的初值計(jì)算和初始化假設(shè)用X表示計(jì)數(shù)初值,N表示能產(chǎn)生溢出的計(jì)數(shù)值計(jì)數(shù)模式下,計(jì)數(shù)值與計(jì)數(shù)初值之間的關(guān)系如下:

X=M-N定時(shí)模式,計(jì)數(shù)值N乘以機(jī)器周期Tcy等于定時(shí)時(shí)間t,即:

t=N×Tcy=(M-X)×Tcy由此式可以得到計(jì)數(shù)初值X的表達(dá)式如下所示:

X=M-t/Tcy 其中Tcy=12/fosc。

單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的初值計(jì)算和初始化2.定時(shí)器/計(jì)數(shù)器初始化初始化的步驟如下:(1)對TMOD賦值,以設(shè)定T0和T1的工作模式和工作方式;(2)計(jì)算計(jì)數(shù)初值,并送入TH0、TL0、TH1、TH1;(3)給IE和IP賦值,以開放相應(yīng)中斷和設(shè)置中斷優(yōu)先級;(4)設(shè)置TR0、TR1,以啟動(dòng)或禁止T0、T1的運(yùn)行。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的初值計(jì)算和初始化1.初值計(jì)算和初始化【例5-9】假設(shè)定時(shí)時(shí)間為5ms,單片機(jī)主頻為6MHz,使用T0,求方式1的計(jì)數(shù)初值。解:Tcy=12/(6MHz)=2μs X=M-t/Tcy=M-5ms/(2μs)=M-2500對于方式1,X=216-2500=63036=0F63CH,其中低8位3CH要送入TL0,高8位F6H要送入TH0。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用【例5-10】假設(shè)T0為定時(shí)模式,按方式2工作,TH0、TL0的初值均為0FH,且允許T0中斷,請對該定時(shí)器進(jìn)行初始化。參考程序MOV TMOD,#02H;置T0為定時(shí)器方式2MOV TL0,#0FH;置計(jì)數(shù)初值MOV TH0,#0FHSETB EA ;CPU開中斷SETB ET0 ;允許T0中斷SETB TR0 ;啟動(dòng)T0工作單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用2.計(jì)數(shù)應(yīng)用【例5-11】在某工廠的一條自動(dòng)飲料生產(chǎn)線上,每生產(chǎn)12瓶飲料,就需要發(fā)出一個(gè)包裝控制信號自動(dòng)執(zhí)行裝箱操作。試編寫程序完成這一計(jì)數(shù)任務(wù),假設(shè)用T0完成計(jì)數(shù),用P1.0發(fā)出控制信號,如下圖所示。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用分析(1)選擇工作方式因?yàn)橛?jì)數(shù)值為12,所以選用T0的工作方式2來完成此任務(wù)。假設(shè)此時(shí)T1不工作,則方式控制字為TMOD=06H。(2)求計(jì)數(shù)初值XX=256-12=244=F4H因此,TL0和TH0的初值都為F4H。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用參考程序1(采用中斷方式)

ORG 0000H LJMP MAIN ORG 000BH LJMP DVT0MAIN: MOV TMOD,#06H MOV TH0,#0F4H MOV TL0,#0F4H SETB ET0 SETB EA SETB TR0 LJMP $DVT0: SETB P1.0 NOP NOP CLR P1.0 RETI END單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用參考程序2(采用查詢方式)

ORG 0000H

MOV TMOD,#06H MOV TL0,#0F4H MOV TH0,#0F4H MOV IE,#00H SETB TR0LOOP:JNB TF0,LOOP CLR TF0 SETB P1.0 NOP NOP CLR P1.0

LJMP LOOP END單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用【例5-12】利用定時(shí)器T1的方式2對外部信號計(jì)數(shù),要求每計(jì)滿100個(gè)數(shù)將P1.7取反。分析(1)確定方式字假設(shè)此時(shí)T0不工作,則T1工作在方式2的控制字為TMOD=60H。(2)計(jì)算初值

X=28-100=156=9CH因此,TL1和TH1的初值都為9CH。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用參考程序

ORG 0000H LJMP MAIN ORG 001BH CPL P1.7 RETI MAIN: MOV TMOD,#60H MOV TL1,#9CH MOV TH1,#9CH SETB ET1 SETB EA SETB TR1HERE: LJMP HERE END單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用3.定時(shí)應(yīng)用【例5-13】假設(shè)系統(tǒng)時(shí)鐘頻率為6MHz,現(xiàn)欲利用定時(shí)器T0每隔1ms產(chǎn)生寬度為1個(gè)機(jī)器周期的正脈沖,并由P1.0送出,如下圖所示,請編程實(shí)現(xiàn)該功能。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用分析(1)選擇工作方式因?yàn)門cy=12/fosc=2μs,由定時(shí)器各種工作方式的特性,可計(jì)算出:方式0最長可定時(shí)16.384ms;方式1最長可定時(shí)131.072ms;方式2、3最長可定時(shí)512

s。本題中定時(shí)時(shí)間t=1ms,選則T0的工作方式1來完成此任務(wù)。假設(shè)此時(shí)T1不工作,則方式控制字為TMOD=01H。(2)計(jì)算初值X X=216-1000μs/2μs=65536-500=65036=FE0CH因此T0的初值為TH0=0FEH,TL0=0CH。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用參考程序1(采用查詢工作方式)

ORG 0000H CLR P1.0 MOV TMOD,#01H MOV TH0,#0FEH MOV TL0,#0CH SETB TR0LOOP: JNB TF0,LOOP CLR TF0 SETB P1.0 CLR P1.0 MOV TH0,#0FEH MOV TL0,#0CH LJMP LOOP END單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用參考程序2(采用中斷工作方式)

ORG 0000H LJMP MAIN ORG 000BH LJMP T0INTMAIN: CLR P1.0 MOV TMOD,#01H MOV TH0,#0FEH MOV TL0,#0CH

MOV IE,#82H SETB TR0LOOP: LJMP LOOPT0INT: SETB P1.0 CLR P1.0 MOV TH0,#0FEH MOV TL0,#0CH RETI END單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用【例5-14】設(shè)時(shí)鐘頻率為12MHz,編程實(shí)現(xiàn)用定時(shí)器T0產(chǎn)生50Hz的方波,并由P1.0輸出此方波。分析(1)選擇工作方式因?yàn)門cy=12/fosc=1μs,所以方式0最長可定時(shí)8.912ms;方式1最長可定時(shí)65.536ms;方式2、3最長可定時(shí)256

s。因?yàn)?0Hz方波的周期為20ms,所以本題的定時(shí)時(shí)間為10ms,所以選擇T0的工作方式1來完成此任務(wù)。假設(shè)此時(shí)T1不工作,則方式控制字為TMOD=01H。(2)計(jì)算初值XX=216-10000μs/1μs=65536-10000=55536=D8F0H因此T0的初值為TH0=0D8H,TL0=0F0H。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用參考程序

ORG 0000H LJMP MAIN ORG 000BH LJMP T0INTMAIN:MOV TMOD,#01H MOV TH0,#0D8H MOV TL0,#0F0H

MOV IE,#82H SETB TR0LOOP:LJMP LOOP T0INT:CPL P1.0 MOV TH0,#0D8H MOV TL0,#0F0H RETI END單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用【例5-16】89C51的P2口接了8個(gè)發(fā)光二極管,要求通過定時(shí)器1實(shí)現(xiàn)8個(gè)發(fā)光二極管每隔1s從右向左依次循環(huán)點(diǎn)亮。假設(shè)系統(tǒng)時(shí)鐘頻率為12MHz。電路如下圖所示。單片機(jī)的定時(shí)器/計(jì)數(shù)器-定時(shí)器/計(jì)數(shù)器的應(yīng)用分析①選擇工作方式本題定時(shí)時(shí)間較長,超出方式0~3的最長定時(shí)范圍,所以不能直接采用方式0~3實(shí)現(xiàn)該定時(shí)功能。我們可以將這1s定時(shí)時(shí)間分成若干份,每份定時(shí)時(shí)間在所選工作方式的定時(shí)范圍內(nèi),然后用軟件進(jìn)行計(jì)數(shù)來實(shí)現(xiàn)該功能。本題選擇T1的工作方式1,每隔50ms中斷一次,中斷20次為1s。假設(shè)此時(shí)T0不工作,則方式控制字為TMOD=10H。

②計(jì)算計(jì)數(shù)初值X=216-50000/1=15536=3CB0H因此:TH1=3CH,TL1=B0H③20次計(jì)數(shù)的實(shí)現(xiàn)采用循環(huán)程序的方法實(shí)現(xiàn)中斷20次計(jì)數(shù)。

溫馨提示

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

評論

0/150

提交評論