版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第6章輸入/輸出和中斷系統(tǒng)
單片機(jī)原理及應(yīng)用16.1微機(jī)的輸入/輸出方式CPU與外部設(shè)備交換信息通常有以下幾種方式:(1)程序控制傳送方式,又分為無條件傳送方式和查詢傳送方式(2)中斷傳送方式(3)直接存儲器存取(DMA)方式
無條件傳送流程圖查詢傳送流程圖2◆無條件傳送的缺點(diǎn)必須確認(rèn)外設(shè)是準(zhǔn)備好的◆查詢傳送的缺點(diǎn)
CPU在查詢過程中什么都不能做,CPU的工作效率低下◆解決的方法采用中斷方式◆中斷方式與以上兩種方式的根本區(qū)別
CPU由數(shù)據(jù)傳送的主動方變?yōu)楸粍臃酵庠O(shè)需要傳送數(shù)據(jù),向CPU發(fā)出中斷請求,CPU響應(yīng)后,轉(zhuǎn)去為外設(shè)服務(wù)(傳送數(shù)據(jù)),服務(wù)后CPU繼續(xù)執(zhí)行原來的程序3◆應(yīng)用程序的一般形式從本章開始,涉及到單片機(jī)的應(yīng)用(設(shè)計(jì)單片機(jī)的應(yīng)用電路、編制單片機(jī)的應(yīng)用程序)許多單片機(jī)的初學(xué)者都普遍存在這樣的問題:對自己要設(shè)計(jì)的作品的功能很清楚,但不知道如何安排各個(gè)部分程序,也就是不太會設(shè)計(jì)程序流程圖4◆應(yīng)用程序的一般形式(以你們?yōu)槔┏跏蓟鞒绦驘o限循環(huán)執(zhí)行的幾件事(可能包含幾個(gè)子程序)其中如果有緊急事情的話,還需要有中斷服務(wù)程序56.2中斷系統(tǒng)概念中斷的定義:
當(dāng)中央處理器CPU正在處理某事件時(shí),外界發(fā)生了更為緊急的請求,要求CPU暫停當(dāng)前的工作,轉(zhuǎn)而去處理這個(gè)緊急事件,處理完畢后,再回到原來被中斷的地方,繼續(xù)原來的工作,這樣的過程稱為中斷。主程序斷點(diǎn)正在執(zhí)行中的某條指令中斷服務(wù)程序RETI響應(yīng)中斷請求返回主程序中斷響應(yīng)中斷返回中斷服務(wù)中斷過程流程6◆當(dāng)CPU正在處理一個(gè)中斷源請求時(shí),發(fā)生了另一個(gè)優(yōu)先級比它高的中斷源請求。如果CPU能夠暫停對原來的中斷源的處理程序,轉(zhuǎn)而去處理優(yōu)先級更高的中斷源請求,處理完以后,再回到原來的低級中斷處理程序,這樣的過程稱為中斷嵌套?!艟哂羞@種功能的中斷系統(tǒng)稱為多級中斷系統(tǒng);沒有中斷嵌套功能的則稱為單級中斷系統(tǒng)。主程序響應(yīng)低級別中斷請求響應(yīng)高級別中斷請求二級中斷嵌套示意76.3MCS-51中斷系統(tǒng)結(jié)構(gòu)80C51單片機(jī)有5個(gè)中斷源,具有兩個(gè)中斷優(yōu)先級,可以實(shí)現(xiàn)二級中斷嵌套5個(gè)中斷源的排列順序由中斷優(yōu)先級控制寄存器IP和順序查詢邏輯電路(圖6-4中的自然優(yōu)先級排隊(duì)電路)共同決定5個(gè)中斷源對應(yīng)5個(gè)固定的中斷入口地址(中斷矢量,見p.146)與中斷系統(tǒng)有關(guān)的特殊功能寄存器(4個(gè)):
定時(shí)器控制寄存器TCON、串口控制寄存器SCON、中斷允許寄存器IE、中斷優(yōu)先級控制寄存器IP5個(gè)中斷源:外部中斷:INT0和INT1
定時(shí)器/計(jì)數(shù)器溢出中斷:定時(shí)器/計(jì)數(shù)器T0和T1
串口中斷:TX或RX(發(fā)送或接收中斷)89
6.3.1中斷源與中斷請求標(biāo)志
MCS-51單片機(jī)設(shè)有5個(gè)中斷源,中斷請求標(biāo)志分別是:2個(gè)外部中斷請求標(biāo)志:IE0(INT0)、IE1(INT1)2個(gè)內(nèi)部定時(shí)器/計(jì)數(shù)器溢出中斷請求標(biāo)志:TF0(定時(shí)器/計(jì)數(shù)器T0)、TF1(定時(shí)器/計(jì)數(shù)器T1)1個(gè)內(nèi)部串行口中斷請求標(biāo)志:TI或RI
這些中斷請求標(biāo)志分別由特殊功能寄存器TCON和SCON的相應(yīng)位鎖存10定時(shí)器/計(jì)數(shù)器控制寄存器(TCON)TF1TF0IE1IT1IE0IT088HT1溢出中斷請求標(biāo)志T0溢出中斷請求標(biāo)志外中斷0觸發(fā)方式0:低電平觸發(fā)1:邊沿觸發(fā)外中斷0中斷請求標(biāo)志0:無中斷請求1:有中斷請求外中斷1觸發(fā)方式外中斷1中斷請求標(biāo)志CPU相應(yīng)中斷后,將TF1自動清0若查詢方式,則需軟件清011串口控制寄存器(SCON)TIRI98H串口發(fā)送中斷請求標(biāo)志每發(fā)送1幀數(shù)據(jù)后硬件置1軟件清0串口接收中斷請求標(biāo)志每接收1幀數(shù)據(jù)后硬件置1軟件清0注:CPU響應(yīng)中斷后,并不清除TI或RI,所以必須由軟件清0126.3.2MCS-51的中斷控制中斷的開放和屏蔽中斷 中斷允許寄存器IE的作用,是控制所有中斷源的開放或禁止,以及每個(gè)中斷源是否被允許。寄存器IE的位格式如下:中斷允許寄存器(IE)EA××ESET1EX1ET0EX0A8H總允許位串口外中斷0定時(shí)器T0外中斷1定時(shí)器T11:允許中斷0:禁止中斷13中斷優(yōu)先級別的設(shè)定MCS-51系列單片機(jī)具有兩個(gè)中斷優(yōu)先級。對于所有的中斷源,均可由軟件設(shè)置為高優(yōu)先級中斷或低優(yōu)先級中斷每個(gè)中斷源的中斷優(yōu)先級都可以通過程序來設(shè)定,由中斷優(yōu)先級寄存器IP統(tǒng)一管理中斷優(yōu)先級寄存器(IP)×××PSPT1PX1PT0PX0B8H串口外中斷0定時(shí)器T0外中斷1定時(shí)器T10:低優(yōu)先級1:高優(yōu)先級14例如CPU開中斷可由以下兩條指令來實(shí)現(xiàn):
SETBEA;EA置1或ORLIE,#80H;按位“或”,EA置1CPU關(guān)中斷可由以下兩條指令來實(shí)現(xiàn):
CLREA;EA清0或ANLIE,#7FH;按位“與”,EA清0
又如設(shè)置外部中斷源0為高優(yōu)先級,外部中斷源1為低優(yōu)先級,可由下面指令來實(shí)現(xiàn):
SETBPX0;PX0置1CLRPX1;PX1清015
優(yōu)先級結(jié)構(gòu)在工作過程中中斷系統(tǒng)對各中斷源的處理遵循以下基本原則:低優(yōu)先級中斷可以被高優(yōu)先級中斷所中斷,反之不能。中斷源的自然優(yōu)先級中斷源同級自然優(yōu)先級外部中斷0最高級定時(shí)器0中斷↓外部中斷1┆
定時(shí)器1中斷↓串行口中斷最低級16例:設(shè)80C51的片外中斷為高優(yōu)先級,片內(nèi)中斷為低優(yōu)先級,試設(shè)置IP相應(yīng)值。解:(a)用字節(jié)操作指令
MOVIP,#05H
(b)用位操作指令
SETBPX0SETBPX1CLRPSCLRPT0CLRPT1176.3.3中斷處理過程中斷處理過程可分為三個(gè)階段,即中斷響應(yīng)、中斷處理和中斷返回。
(1)中斷響應(yīng)◆響應(yīng)條件有中斷源發(fā)出中斷請求中斷總允許位EA=1,即CPU開中斷申請中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽無同級或更高級中斷正在被服務(wù)當(dāng)前的指令周期已經(jīng)結(jié)束若現(xiàn)行指令為RETI或者是訪問IE或IP指令時(shí),該指令以及緊接著的另一條指令已執(zhí)行完18◆
中斷響應(yīng)操作過程
MCS-51的CPU在第1個(gè)機(jī)器周期按優(yōu)先級順序查詢中斷標(biāo)志,如查詢到某個(gè)中斷標(biāo)志為1,將在接下來的2個(gè)機(jī)器周期按優(yōu)先級進(jìn)行中斷處理:中斷系統(tǒng)首先將斷點(diǎn)地址進(jìn)棧保護(hù),并通過硬件自動將相應(yīng)的中斷矢量地址裝入PC,以便進(jìn)入相應(yīng)的中斷服務(wù)程序?!?/p>
中斷響應(yīng)時(shí)間
在一般情況下,MCS-51響應(yīng)中斷的時(shí)間至少為3個(gè)機(jī)器周期。中斷源中斷矢量地址中斷源中斷矢量地址外中斷00003H定時(shí)器T0000BH外中斷10013H定時(shí)器T1001BH串口0023H19(2)中斷處理◆各中斷源的入口矢量地址之間只相隔8個(gè)單元,一般的中斷服務(wù)程序是容納不下的,因而最常用的方法是在中斷入口地址單元處存放一條無條件轉(zhuǎn)移指令,轉(zhuǎn)至存儲器其他的任何空間?!羧粼趫?zhí)行當(dāng)前中斷程序時(shí)禁止更高優(yōu)先級中斷,應(yīng)用軟件關(guān)閉CPU中斷(屏蔽該高級中斷),在中斷返回前再開放中斷?!粼诒Wo(hù)現(xiàn)場和恢復(fù)現(xiàn)場時(shí),為了不使現(xiàn)場信息受到破壞或造成混亂,一般應(yīng)關(guān)閉CPU中斷,使CPU暫不響應(yīng)新的中斷請求(用于在應(yīng)用中使用了兩個(gè)以上的中斷)0003H(INT0的中斷矢量):LJMPINT_0(INT0程序入口地址)中斷服務(wù)程序:保護(hù)現(xiàn)場
…………中斷服務(wù)恢復(fù)現(xiàn)場
RETI20(3)中斷返回在中斷服務(wù)程序中,最后一條指令必須為中斷返回指令RETI
返回到程序斷點(diǎn)處繼續(xù)執(zhí)行6.4中斷請求的撤除6.4.1.定時(shí)器/計(jì)數(shù)器中斷請求的撤除 其中斷請求是自動撤除的,無需采取其他措施。6.4.2.串行口中斷請求的撤除通過如下指令將RI和TI撤除:
CLRRI;撤除接收中斷
CLRTI;撤除發(fā)送中斷216.4.3.外部中斷請求的撤除(電平觸發(fā))
INSVR:ANLP1,#0FEHORLP1,#01H┇RETIEND22用單穩(wěn)態(tài)觸發(fā)器構(gòu)成的外部中斷請求電路(電平觸發(fā))單穩(wěn)態(tài)觸發(fā)器中斷請求信號由于電平觸發(fā)的外部中斷請求需人為撤消,所以,外部中斷請求一般設(shè)置為邊沿觸發(fā)236.5中斷系統(tǒng)的初始化及應(yīng)用6.5.1.中斷系統(tǒng)的初始化(1)開放某中斷源的中斷請求
(2)設(shè)定所用中斷的中斷優(yōu)先級*(3)若為外部中斷,則應(yīng)規(guī)定中斷觸發(fā)方式(低電平或邊沿觸發(fā))(4)CPU開中斷24例6-2:寫出INT1為低電平觸發(fā)、高優(yōu)先級的中斷系統(tǒng)初始化程序。解:(1)采用位操作指令
SETBEX1
;外中斷1開中斷
SETBPX1;令其為高優(yōu)先級
CLRIT1;令其為電平觸發(fā)
SETBEA;CPU開總中斷
(2)采用字節(jié)型指令
MOVIE,#84H
;開中斷
ORLIP,#04H;高優(yōu)先級
ANLTCON,#0FBH;電平觸發(fā)256.5.2.中斷系統(tǒng)的應(yīng)用(中斷處理)
ORGADDRESS;ADDRESS為中斷矢量(5個(gè)中斷矢量之一)
LJMPINTVS;INTVS為中斷服務(wù)程序入口MAIN: ……..┇
LJMPMAIN
INTVS:CLREA;關(guān)中斷
PUSHPSW;保護(hù)現(xiàn)場
PUSHACC┇SETBEA;開中斷,允許CPU響應(yīng)高級中斷┇中斷服務(wù)┇
CLREA;關(guān)中斷
POPACC;恢復(fù)現(xiàn)場
POPPSW┇SETBEA;開中斷
RETI;中斷返回若系統(tǒng)中只使用了一個(gè)中斷源,則CPU開、關(guān)中斷可以略去26
中斷源及其對應(yīng)的中斷矢量(表6-1p.146)外部中斷0(INT0):0003H
定時(shí)器0中斷:000BH
外部中斷1(INT1):0013H
定時(shí)器1中斷:001BH
串口中斷:0023H
中斷矢量的間隔為8個(gè)單元,所以應(yīng)在中斷矢量地址處安排一條無條件轉(zhuǎn)移指令LJMP中斷服務(wù)程序標(biāo)號(或AJMP)6.5.3中斷應(yīng)用舉例例6-3P1.7~P1.4為輸入口,P1.3~P1.0為輸出口,反映輸入口開關(guān)的狀態(tài),輸入為高電平時(shí),相應(yīng)的LED亮。每中斷一次,對外部狀態(tài)檢測一次,外部中斷采用邊沿觸發(fā)方式。(R-S觸發(fā)器作用:消除開關(guān)抖動
1-S2-R)27流程圖28;機(jī)器碼必須從0000H開始存放;轉(zhuǎn)到主程序;INT0的中斷矢量;轉(zhuǎn)到INT0中斷服務(wù)程序;定義主程序;允許INT0中斷;設(shè)為邊沿觸發(fā);CPU開中斷;CPU等中斷;定義中斷服務(wù)程序;設(shè)P1口高4位輸入和低4位輸出初態(tài);將狀態(tài)送到P1口;讀開關(guān)狀態(tài);將高4位狀態(tài)交換到低4位;輸出到低4位;中斷返回 ORG0000HLJMPMAIN
ORG0003H
LJMPINSER
ORG0050HMAIN:SETBEX0
SETBIT0
SETBEAHERE:SJMPHERE
ORG0200H
INSER:MOVA,#0F0HMOVP1,A
MOVA,P1
SWAPA
MOVP1,A
RETIEND
初始化296.6MCS-51外部中斷擴(kuò)展方法
MCS-51單片機(jī)有兩個(gè)外部中斷請求輸入端
INT0和INT1。在實(shí)際應(yīng)用中,若外部中斷源有兩個(gè)以上時(shí),就需要進(jìn)行外部中斷擴(kuò)展。擴(kuò)展外部中斷源的方法有兩種:用定時(shí)器擴(kuò)展外部中斷源(定時(shí)器章節(jié)介紹)I/O口查詢方式擴(kuò)展外部中斷源306.6.2.硬件申請軟件查詢擴(kuò)展中斷源注:反相器一定是OC門輸出,否則輸出短路!用4個(gè)反相器構(gòu)成的4輸入或非門31中斷服務(wù)程序是一個(gè)查詢程序32 ORG0003H LJMPINTRP ………INTRP:PUSHPSW PUSHACC JBP1.0,DV1 JBP1.1,DV2 JBP1.2,DV3 JBP1.3,DV4EXIT: POPACC POPPSW RETIDV1: ……..
裝置1中斷服務(wù)
AJMPEXITDV2: ……..
裝置2中斷服務(wù)
AJMPEXITDV3: ……..
裝置3中斷服務(wù)
AJMPEXITDV4: ……..
裝置4中斷服務(wù)
AJMPEXIT33例6-4利用中斷顯示系統(tǒng)故障正常時(shí)監(jiān)測點(diǎn)為低電平故障時(shí)監(jiān)測點(diǎn)為高電平系統(tǒng)工作正常時(shí),4個(gè)監(jiān)測點(diǎn)均為低電平,LED不亮某個(gè)部分出現(xiàn)故障時(shí),相應(yīng)的監(jiān)測點(diǎn)為高電平,對應(yīng)的LED點(diǎn)亮LED1LED2LED3LED434
ORG0000H
AJMPMAIN
;上電復(fù)位,轉(zhuǎn)向主程序
ORG0003H
;外部中斷0入口地址
AJMPINSER
;轉(zhuǎn)向中斷服務(wù)程序
ORG0050HMAIN:ANLP1,#55H;P1.0,P1.2,P1.4,P1.6為輸入;P1.1,P1.3,P1.5,P1.7輸出為0SETBEX0;允許外部中斷0中斷
SETBIT0;選擇邊沿觸發(fā)方式
SETBEA;CPU開中斷HERE:SJMPHERE
;等待中斷INSER:JNBP1.0,L1;查詢中斷源,P1.0=0,轉(zhuǎn)L1SETBP1.1;是P1.0引起的中斷,使相應(yīng)的二極管亮L1:JNBP1.2,L2;繼續(xù)查詢
SETBP1.3L2:JNBP1.4,L3SETBP1.5L3:JNBP1.6,L4SETBP1.7L4:RETIEND
注意查詢的方法監(jiān)測點(diǎn)低電平為正常P1.0、P1.2、P1.4、P1.6接監(jiān)測點(diǎn)
設(shè)置堆棧35中斷應(yīng)用:
1.LED控制S1S2用按鍵開關(guān)S1、S2控制LED閃亮與熄滅P1.0=0,LED亮P1.0=1,LED滅36流程圖延時(shí)子程序(略)控制熄滅控制閃亮37
LIANGBIT00H ORG0000H LJMPST ORG0003H LJMPINT_0
ORG0013H LJMPINT_1
ORG0050HST: SETBP1.0
SETBEX0
SETBIT0
SETBEX1
SETBIT1
SETBEA CLRLIANG
MOVSP,#60H;定義一個(gè)位標(biāo)志,LIANG=1,LED閃亮;轉(zhuǎn)到主程序;轉(zhuǎn)到INT0服務(wù),控制熄滅;轉(zhuǎn)到INT1服務(wù),控制閃亮;定義主程序;外設(shè)初始化,LED熄滅;允許INT0中斷;INT0邊沿觸發(fā);允許INT1中斷;INT1邊沿觸發(fā);CPU開中斷;標(biāo)志初始化;設(shè)置堆棧38MAIN: JNBLIANG,LED_MIE CLRP1.0 LCALLDELAY SETBP1.0 LCALLDELAY SJMPMAINLED_MIE:SETBP1.0 SJMPMAININT_0:CLRLIANG RETIINT_1:SETBLIANG RETI;亮標(biāo)志≠1,轉(zhuǎn)LED滅;否則LED閃亮;LED熄滅;亮標(biāo)志=0;中斷返回;亮標(biāo)志=1;中斷返回CPLP1.0LCALLDELAY39DELAY: MOVR7,#250DL1: MOVR6,#250DL2: NOP;1機(jī)器周期(1uS)
NOP;1機(jī)器周期(1uS)
DJNZR6,DL2;2機(jī)器周期(2uS)
DJNZR7,DL1 RET;延時(shí)250mS END ;fosc=12MHz40中斷應(yīng)用:
2.中斷控制流水燈循環(huán)方向用開關(guān)控制流水燈的循環(huán)方向采用中斷控制方式在中斷服務(wù)程序中設(shè)置循環(huán)方向標(biāo)志41主程序流程圖中斷服務(wù)程序流程圖(有鍵按下進(jìn)入)F_L為循環(huán)方向標(biāo)志42 F_LBIT00H ORG0000H LJMPMAIN ORG0003H LJMPINT_0 ORG0050H;********主程序初始化********MAIN: SETBEX0 SETBIT0 SETBEA MOVSP,#60H MOVA,#0FEH SET
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度塔吊司機(jī)承包建筑起重設(shè)備操作人員勞務(wù)合同2篇
- 2024年服務(wù)合同增補(bǔ)合同樣本版B版
- 2024年度租賃合同提前終止及押金退還協(xié)議3篇
- 2024年度版權(quán)質(zhì)押合同:某作者將著作權(quán)質(zhì)押給某銀行獲取貸款3篇
- 2024版?zhèn)€人租房合同(含租賃押金與租金支付方式)3篇
- 2024年度廣告投放合同:廣告公司為客戶在其平臺上投放廣告的合同3篇
- 2024年度高科技園區(qū)企業(yè)安保勞務(wù)派遣合同3篇
- 2024年度茶葉產(chǎn)業(yè)鏈供應(yīng)鏈金融合同2篇
- 2024唐山骨瓷品牌海外市場拓展合同3篇
- 2024年度停薪留職合同員工再就業(yè)指導(dǎo)服務(wù)條款2篇
- 生物質(zhì)在煉鐵中的應(yīng)用
- 加氣混凝土砌塊施工方法
- 舞臺機(jī)械系統(tǒng)工程柵頂鋼結(jié)構(gòu)施工方案
- 銷售冠軍團(tuán)隊(duì)銷售職場培訓(xùn)動態(tài)PPT
- 學(xué)歷學(xué)位審核登記表
- AQL抽樣檢驗(yàn)表(標(biāo)準(zhǔn)版本20)
- 原核藻類、真核藻類
- 交通事故快速處理單(正反打印)
- 通科實(shí)習(xí)出科考核病歷
- 獅子王2經(jīng)典臺詞中英文對照
- 水利工程竣工驗(yàn)收報(bào)告表格(共5頁)
評論
0/150
提交評論