單片機(jī)原理及接口技術(shù)-基于C51 Proteus仿真(第二版)課件 第4、5章 80C51單片機(jī)IO端口及應(yīng)用最終;80C51單片機(jī)的中斷系統(tǒng)最終_第1頁
單片機(jī)原理及接口技術(shù)-基于C51 Proteus仿真(第二版)課件 第4、5章 80C51單片機(jī)IO端口及應(yīng)用最終;80C51單片機(jī)的中斷系統(tǒng)最終_第2頁
單片機(jī)原理及接口技術(shù)-基于C51 Proteus仿真(第二版)課件 第4、5章 80C51單片機(jī)IO端口及應(yīng)用最終;80C51單片機(jī)的中斷系統(tǒng)最終_第3頁
單片機(jī)原理及接口技術(shù)-基于C51 Proteus仿真(第二版)課件 第4、5章 80C51單片機(jī)IO端口及應(yīng)用最終;80C51單片機(jī)的中斷系統(tǒng)最終_第4頁
單片機(jī)原理及接口技術(shù)-基于C51 Proteus仿真(第二版)課件 第4、5章 80C51單片機(jī)IO端口及應(yīng)用最終;80C51單片機(jī)的中斷系統(tǒng)最終_第5頁
已閱讀5頁,還剩91頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1第4章80C51單片機(jī)I/O端口及應(yīng)用24.1P0口4.2P1口4.3P2口4.4P3口4.5I/O口簡單輸入輸出設(shè)計(jì)4.6單片機(jī)I/O口控制電磁繼電器4.7單片機(jī)I/O口控制光耦4.8單片機(jī)I/O口控制雙向可控硅4.8.1晶閘管工作原理4.8.2單片機(jī)I/O口控制雙向可控硅接口設(shè)計(jì)4.9單片機(jī)I/O口控制固態(tài)繼電器3第4章80C51單片機(jī)I/O端口及應(yīng)用80C51單片機(jī)共有4個(gè)8位雙向I/O端口,即P0~P3口,它們都被定義為SFR,可以按字節(jié)尋址輸入或輸出,每一位還能按位尋址,便于實(shí)現(xiàn)位控功能。P0口為三態(tài)雙向口,負(fù)載能力為8個(gè)LS型TTL門電路,作為一般的I/O口使用時(shí),P0口是一個(gè)準(zhǔn)雙向口。P1、P2、P3口也為準(zhǔn)雙向口(用作輸入線時(shí),口鎖存器必須先寫入“1”,故稱為準(zhǔn)雙向口),負(fù)載能力為4個(gè)LS型TTL電路。44.1P0口P0口是具有雙功能的8位并行I/O口,字節(jié)尋址地址為80H,位地址為80H~87H。1.P0口的位電路結(jié)構(gòu)P0口的8位都具有如圖4-1所示的位電路結(jié)構(gòu),由1個(gè)鎖存器、1個(gè)轉(zhuǎn)換開關(guān)、2個(gè)場效應(yīng)管構(gòu)成的輸出驅(qū)動(dòng)電路、2個(gè)輸入緩沖器、1個(gè)反相器及1個(gè)與門構(gòu)成。圖4-1P0口的位電路結(jié)構(gòu)52.P0口工作原理(1)P0口作為地址/數(shù)據(jù)總線分時(shí)復(fù)用口當(dāng)80C51單片機(jī)外部擴(kuò)展存儲(chǔ)器或者I/O接口芯片,需要P0口作為地址/數(shù)據(jù)總線分時(shí)使用時(shí),“控制”信號(hào)輸出高電平;轉(zhuǎn)換開關(guān)MUX將T2與反相器輸出端接通,同時(shí)“與門”開鎖,“地址或數(shù)據(jù)”信號(hào)通過與門驅(qū)動(dòng)T1管,并通過反相器驅(qū)動(dòng)T2管,使得P0.x引腳的輸出狀態(tài)隨“地址/數(shù)據(jù)”狀態(tài)的變化而變化。具體輸出過程如下。①當(dāng)“地址/數(shù)據(jù)”內(nèi)容為1時(shí),“與門”輸出1,T1場效應(yīng)管導(dǎo)通,而T2場效應(yīng)管截止,P0.x輸出為1;②當(dāng)“地址/數(shù)據(jù)”內(nèi)容為0時(shí),“與門”輸出0,T1場效應(yīng)管截止,而T2場效應(yīng)管導(dǎo)通,P0.x輸出為0。可見上方場效應(yīng)管起到內(nèi)部上拉電阻作用。6(2)P0口作為通用I/O口當(dāng)80C51單片機(jī)不作地址/數(shù)據(jù)總線使用時(shí),可作為第一功能,即通用I/O口使用,此時(shí)“控制”信號(hào)輸出為低電平;MUX將T2與鎖存器的Q反端接通。同時(shí),“與門”輸出為低電平,使得場效應(yīng)管T1處于截止?fàn)顟B(tài),此時(shí)輸出級(jí)是漏極開路的開漏電路。P0口用作一般I/O口的具體過程如下。①P0口作為I/O口輸出時(shí),來自CPU的“寫”脈沖加在鎖存器時(shí)鐘端CP上,由內(nèi)部總線輸出的數(shù)據(jù)從D端進(jìn)入,經(jīng)反相后出現(xiàn)在Q反端,再經(jīng)T2管反相,于是在P0.x位引腳上的數(shù)據(jù)正好與內(nèi)部總線上輸出數(shù)據(jù)一致。

注意,當(dāng)P0口作輸出口使用時(shí),輸出級(jí)屬開漏電路,在P0.x引腳應(yīng)外接上拉電阻。7②P0口作為I/O口輸入時(shí),端口中的兩個(gè)三態(tài)緩沖器用于讀操作。有2種讀操作:讀鎖存器和讀引腳。“讀引腳”:當(dāng)執(zhí)行一般的端口輸入指令時(shí),引腳上的外部信號(hào)既加在三態(tài)緩沖器BUF2的輸入端,又加在場效應(yīng)管T2漏極上,若此時(shí)T2導(dǎo)通,則引腳上的電位被鉗在0電平上。為使讀引腳能正確地讀入,在輸入數(shù)據(jù)時(shí),要先向鎖存器置“1”,使其Q反端為0,使輸出級(jí)T1和T2兩個(gè)管子均被截止,引腳處于懸浮狀態(tài);作高阻抗輸入。“讀引腳”脈沖把三態(tài)緩沖器打開,于是引腳上的數(shù)據(jù)經(jīng)緩沖器到內(nèi)部總線;“讀鎖存器”:這種讀操作是為了“讀-修改-寫”指令的需要。即先讀端口,對(duì)讀入的數(shù)據(jù)修改,然后再寫入鎖存器。例如,邏輯與、或非等指令。83.P0口使用總結(jié)綜上所述,P0口在使用時(shí)有如下說明:(1)當(dāng)P0口用作地址/數(shù)據(jù)總線使用時(shí)(第2功能),是一個(gè)真正的雙向口,直接與外部擴(kuò)展的存儲(chǔ)器或I/O連接,輸出/輸入8位數(shù)據(jù)作為數(shù)據(jù),同時(shí)通過與地址譯碼器連接,輸出低8位地址。(2)當(dāng)P0口作通用I/O口使用時(shí)(第1功能),需要在片外接上拉電阻,此時(shí)端口不存在高阻抗的懸浮狀態(tài),因此是一個(gè)準(zhǔn)雙向口。(3)P0口讀引腳(端口)時(shí),輸出鎖存器需要先置“1”再讀。若沒有置“1”,將讀出鎖存器內(nèi)容。【例4-1】讀P0.3引腳,若為高電平,將變量aa加1。讀引腳前,先將P0口置1。unsignedintaa=0x00,sbitP0_3=P0^3;P0=0xff;while(P0_3==1){aa=aa+1;}94.2P1口P1口是一個(gè)內(nèi)部自帶上拉電阻的8位準(zhǔn)雙向I/O口。80C51單片機(jī)P1口只作通用I/O口,字節(jié)尋址地址為90H,位地址為90H~97H。1.P1口的位電路結(jié)構(gòu)P1口的8位都具有如圖4-2所示的位電路結(jié)構(gòu),由1個(gè)鎖存器、1個(gè)場效應(yīng)管輸出驅(qū)動(dòng)電路、2個(gè)輸入緩沖器、1個(gè)上拉電阻構(gòu)成。圖4-2P1口的位電路結(jié)構(gòu)102.P1口的工作原理(1)當(dāng)P1口作輸出口時(shí),若內(nèi)部總線將“1”寫入鎖存器,使輸出場效應(yīng)驅(qū)動(dòng)管T截止,輸出線由內(nèi)部上拉電阻拉成高電平;若內(nèi)部總線將0寫入鎖存器時(shí),T導(dǎo)通,輸出0。(2)當(dāng)P1口作輸入口時(shí),分讀引腳和讀鎖存器狀態(tài)兩種情況:讀引腳時(shí),打開下面三態(tài)門BUF2,可讀入引腳上信息;讀鎖存器狀態(tài)時(shí),將打開上面三態(tài)門BUF1,此時(shí)Pl口進(jìn)行“讀-修改-寫”操作。①P1口讀引腳輸入信息時(shí),必須先置“1”鎖存器,使T截止;此時(shí),輸入端的電平隨輸入信號(hào)而變,經(jīng)緩沖器BUF2進(jìn)入內(nèi)部總線。②P1口讀鎖存器:鎖存器內(nèi)容經(jīng)打開的BUF1,進(jìn)入內(nèi)部總線。113.P1口使用總結(jié)綜上所述,P1口在使用時(shí)有如下說明:(1)P1口內(nèi)部具有上拉電阻,可以直接被集電極開路或漏極開路的電路驅(qū)動(dòng),不必外接上拉電阻。(2)P1口內(nèi)部自帶上拉電阻,沒有高阻抗輸入狀態(tài),是8位準(zhǔn)雙向口。(3)P1口讀引腳(端口)輸入時(shí),必須先向鎖存器置“1”,再讀鎖存器。124.3P2口P2口是一個(gè)具有雙功能的8位準(zhǔn)雙向I/O口。字節(jié)尋址地址A0H,位地址A0H~A7H。1.P2口位電路結(jié)構(gòu)P2口的8位都具有如圖4-3所示的位電路結(jié)構(gòu),由1個(gè)鎖存器、1個(gè)切換開關(guān)、1個(gè)場效應(yīng)管輸出驅(qū)動(dòng)電路、2個(gè)輸入緩沖器及1個(gè)反相器構(gòu)成。圖4-3P2口的位電路結(jié)構(gòu)132.P2口的工作原理P2口既可以作高8位地址總線使用,也可以作為I/O口使用。(1)P2作為高8位地址總線輸出:受內(nèi)部“控制”信號(hào)作用,多路開關(guān)MUX向上與“地址”輸出信號(hào)接通,經(jīng)反相器和場效應(yīng)管反相后,“地址”信號(hào)輸出在端口引腳線上。(2)P2口作為通用I/O口使用:受內(nèi)部“控制”信號(hào)作用,多路開關(guān)MUX向下與鎖存器輸出端Q接通。①CPU輸出數(shù)據(jù)“1或0”時(shí),數(shù)據(jù)經(jīng)內(nèi)部總線進(jìn)入鎖存器,由鎖存器Q輸出經(jīng)反相器和場效應(yīng)管反相后,輸出在端口引腳線上,P2.x輸出數(shù)據(jù)與CPU輸出數(shù)據(jù)一致。②當(dāng)P2口作輸入口時(shí),有讀引腳和讀鎖存器狀態(tài)兩種情況。讀引腳時(shí),必須先置“1”鎖存器,使T截止;P2.x引腳上的電平經(jīng)下面三態(tài)門BUF2進(jìn)入內(nèi)部總線。讀鎖存器狀態(tài)時(shí),上面三態(tài)門BUF1打開,此時(shí)P2.x鎖存器內(nèi)容經(jīng)Q端通過BUF1進(jìn)入內(nèi)部總線,屬于“讀-修改-寫”操作。143.P2口使用說明(1)P2作高8位地址總線時(shí),與P0口輸出的(經(jīng)地址鎖存器輸出的)低8位地址總線共同構(gòu)成16位地址總線,尋址64KB存儲(chǔ)器或者I/O接口地址空間。(2)P2作為通用I/O口使用時(shí),是一個(gè)準(zhǔn)雙向口,當(dāng)讀引腳(端口)輸入時(shí),須先向鎖存器置“1”,再讀鎖存器。154.4P3口P3口是具有雙功能的8位準(zhǔn)雙向I/O口。字節(jié)尋址地址為B0H,位地址為B0H~B7H。1.P3口的位電路結(jié)構(gòu)P3口的8位都具有如圖4-4所示的位電路結(jié)構(gòu),由1個(gè)鎖存器、1個(gè)與非門、1個(gè)場效應(yīng)管驅(qū)動(dòng)電路、2個(gè)輸入緩沖器、1個(gè)上拉電阻構(gòu)成。由圖可見,P3端口的各端口線有第二輸入功能、第二輸出功能、通用I/O口功能選擇。圖4-4P3口的位電路結(jié)構(gòu)162.P3口的工作原理(1)第二輸入功能及第二輸出功能①當(dāng)P3口作為第二輸入功能時(shí),鎖存器須先置“1”,“第二輸出功能”端此時(shí)也為1,“與非門”輸出為0,保證場效應(yīng)管T截止,P3.x引腳的信號(hào)經(jīng)過輸入緩沖器得到。②當(dāng)P3口作為第二輸出功能時(shí),鎖存器也必須先置“1”,打開“與非門”,則“第二輸出功能”線輸出的“0或1”信號(hào)經(jīng)過“與非門”和場效應(yīng)管T的2次反向,使得P3.x內(nèi)容與第二輸出功能線輸出的內(nèi)容一致。17(2)當(dāng)P3口作為第一功能,即I/O口功能時(shí),也分2種情況。①P3作為I/O輸出時(shí),“第二輸出功能”輸出高電平,“與非門”開啟。CPU輸出的“1或0”信號(hào),由內(nèi)部總線經(jīng)鎖存器輸出,經(jīng)過“與非門”和場效應(yīng)管2次反向,使得P3.x引腳輸出與CPU輸出一致。②P3口作I/O輸入時(shí),若要“讀引腳”,輸出鎖存器同樣需要置“1”,“第二輸出功能”端也置1,使得場效應(yīng)管T截止,P3.x引腳信息經(jīng)下端2個(gè)輸入三態(tài)門到內(nèi)部總線。如果鎖存器不置1就讀,則鎖存器鎖存內(nèi)容經(jīng)Q端輸出,通過讀鎖存器控制的三態(tài)門到內(nèi)部總線,實(shí)現(xiàn)讀鎖存器操作。183.P3口使用說明(1)P3口內(nèi)部具有上拉電阻,沒有高阻態(tài),為準(zhǔn)雙向口,不必外接上拉電阻。(2)P3口優(yōu)先考慮第二功能,某一位只有不作為第二功能使用時(shí),才可考慮I/O口的功能。(3)P3口讀引腳(端口)輸入和第二功能輸入時(shí),必須先向鎖存器置“1”,再讀鎖存器。194.5I/O口簡單輸入輸出設(shè)計(jì)【例4-2】開關(guān)控制8只LED計(jì)數(shù)與顯示電路如圖4-5所示,P3.1連接開關(guān)SW1,將P1.0~P1.7連接8個(gè)發(fā)光二極管LED0~LED7;編寫程序?qū)崿F(xiàn)SW1每上下?lián)軇?dòng)一次,8個(gè)發(fā)光二極管按16進(jìn)制方式加一點(diǎn)亮。2021參考程序如下:#include<reg51.h>sbitP3_1=P3^1;voiddelay(unsignedinti)//延時(shí){unsignedintj,k;for(k=0;k<i;k++)for(j=0;j<125;j++);}22voidmain(void){unsignedintx=0x00,temp=0x00;P1=0xff;while(1){while(P3_1==1);//P3.1為高電平delay(10);//調(diào)用延時(shí)程序while(P3_1==0);//P3.1為低電平delay(10);//調(diào)用延時(shí)程序x=x+1;temp=x;x=~x;//二極管低電平點(diǎn)亮P1=x;//送P1口x=temp;

}}23【例4-3】利用單片機(jī)的P1口接8個(gè)發(fā)光二極管,P2口接8個(gè)開關(guān),要求實(shí)現(xiàn):當(dāng)開關(guān)動(dòng)作時(shí),對(duì)應(yīng)的發(fā)光二極管亮或滅,電路如圖4-6所示。只須把P2口的內(nèi)容讀出后,通過P1口輸出即可。2425參考程序:#include<reg51.h>voidmain(void){unsignedchari;P2=0xff;for(;;){i=P2;P1=i;}}264.6單片機(jī)I/O口控制電磁繼電器在控制系統(tǒng)中,常常存在電子電路與電氣電路的互相連接問題,需要電子電路控制電氣電路的執(zhí)行元件,例如電動(dòng)機(jī)、電磁鐵、電燈等,同時(shí)實(shí)現(xiàn)電子線路與電氣電路的電隔離,以保護(hù)電子電路和人身的安全,繼電器在其中起了重要的橋梁作用。繼電器有固態(tài)繼電器SSR和電磁繼電器,常用的繼電器大部分屬于電磁式繼電器,電磁繼電器是自動(dòng)控制電路中常用的一種元件,是用較小電流控制較大電流的一種自動(dòng)開關(guān)。電磁繼電器是由鐵芯、線圈、銜鐵、觸點(diǎn)以及底座等構(gòu)成,觸點(diǎn)有動(dòng)觸點(diǎn)和靜觸點(diǎn)之分。固態(tài)繼電器是一種由集成電路和分立元件組合而成的一體化無觸點(diǎn)電子開關(guān)器件,其功能與電磁繼電器基本相似。271.電磁繼電器的電路符號(hào)和觸點(diǎn)形式電磁繼電器的線圈只有一個(gè),但其帶觸點(diǎn)的簧片則常設(shè)置多組。在電路中,表示繼電器時(shí)可畫出線圈與控制電路的有關(guān)觸點(diǎn)。線圈用長方框表示,標(biāo)有繼電器的文字符號(hào)K或KR。觸點(diǎn)有兩種表示方法:一種是把它們直接畫在長方框的一側(cè),此表示法比較直觀;另一種是把各個(gè)觸點(diǎn)分別畫到各自的控制電路中,常在同一繼電器的觸點(diǎn)與線圈旁分別標(biāo)注相同的文字符號(hào),并將觸點(diǎn)組編號(hào),以示區(qū)別。繼電器的觸點(diǎn)有三種形式。(1)動(dòng)合型(H型)線圈不通電時(shí),兩觸點(diǎn)是斷開的,通電后,兩個(gè)觸點(diǎn)閉合(以合字的拼音字頭“H”表示)。(2)動(dòng)斷型(D型)線圈不通電時(shí),兩觸點(diǎn)是閉合的,通電后,兩個(gè)觸點(diǎn)斷開(用斷字的拼音字頭“D”表示)。28(3)轉(zhuǎn)換型(Z型)這是觸點(diǎn)組型。這種觸點(diǎn)組共有3個(gè)觸點(diǎn),中間是動(dòng)觸點(diǎn),上下各一個(gè)靜觸點(diǎn)。線圈不通電時(shí),動(dòng)觸點(diǎn)和一個(gè)靜觸點(diǎn)接觸(一個(gè)斷開,另一個(gè)閉合),線圈通電后,動(dòng)觸點(diǎn)就移動(dòng),使原來斷開的閉合,原來閉合的斷開,達(dá)到轉(zhuǎn)換的目的。觸點(diǎn)組稱為轉(zhuǎn)換觸點(diǎn),用“轉(zhuǎn)”字的拼音字頭“Z”表示。電磁繼電器的常用符號(hào)如圖4-7所示。在電路中,觸點(diǎn)的畫法應(yīng)按線圈不通電時(shí)的原始狀態(tài)畫出。29302.電磁繼電器的工作原理電磁繼電器是一種功率開關(guān)器件,輸入開關(guān)信號(hào),只要讓繼電器的吸合線圈通過一定的電流,線圈產(chǎn)生的磁力就會(huì)帶動(dòng)銜鐵移動(dòng),從而帶動(dòng)開關(guān)點(diǎn)的接通和斷開,由此控制電路的通或斷。電磁繼電器主要用于低壓控高壓或小電流控大電流的場合,由于繼電器的強(qiáng)電觸點(diǎn)與吸合線圈之間是隔離的,所以繼電器控制輸出電路不需要專門設(shè)計(jì)隔離電路。313.電磁繼電器接口電路【例4-4】利用單片機(jī)I/O口控制繼電器的開合,實(shí)現(xiàn)對(duì)外部裝置的控制。電路如圖4-8,由于單片機(jī)引腳的驅(qū)動(dòng)能力有限,控制端P2.5引腳連接一個(gè)NPN三極管,當(dāng)P2.5輸出低電平時(shí),繼電器不工作,當(dāng)P2.5輸出高電平時(shí),繼電器工作,常開觸點(diǎn)吸合,LED將隨繼電器的開關(guān)連接到電源端而點(diǎn)亮。圖中,繼電器電路中,在繼電器的線圈兩頭加一個(gè)二極管D1以吸收繼電器線圈斷電時(shí)產(chǎn)生的反電勢,從而保護(hù)晶體管,防止干擾。32#include<reg51.h>sbitP2_5=P2^5;voiddelay(unsignedinti){unsignedintj,k;for(k=0;k<i;k++)for(j=0;j<125;j++);}voidmain(void){while(1){P2_5=0;delay(1000);P2_5=1;delay(1000);}}334.7單片機(jī)I/O口控制光耦在單片機(jī)控制系統(tǒng)中,單片機(jī)總要對(duì)被控對(duì)象實(shí)現(xiàn)控制操作。后向通道是計(jì)算機(jī)實(shí)現(xiàn)控制運(yùn)算處理后,對(duì)被控對(duì)象的輸出通道接口。后向通道的特點(diǎn)是弱電控制強(qiáng)電,即小信號(hào)輸出實(shí)現(xiàn)大功率控制。常見的被控對(duì)象有電機(jī)、電磁開關(guān)等。后向通道往往所處環(huán)境惡劣,控制對(duì)象多為大功率伺服驅(qū)動(dòng)機(jī)構(gòu),電磁干擾較為嚴(yán)重。為防止干擾竄入和保證系統(tǒng)的安全,通常采用光電耦合器實(shí)現(xiàn)信號(hào)的傳輸,同時(shí)又可將系統(tǒng)與現(xiàn)場隔離開。光電耦合器具有體積小、使用壽命長、工作溫度范圍寬、抗干擾性能強(qiáng),無觸點(diǎn)且輸入與輸出在電氣上完全隔離等特點(diǎn),因而在各種電子設(shè)備上得到廣泛的應(yīng)用。光電耦合器可用于隔離電路、負(fù)載接口及各種家用電器等電路中。341.光電耦合器的封裝及組合光電耦合器有金屬封裝和塑料封裝兩種形式。金屬封裝采用金屬外殼,且用玻璃絕緣,芯片采用環(huán)焊以保證發(fā)光管與接收管對(duì)準(zhǔn)。塑料封裝采用雙列直插式結(jié)構(gòu),管芯先裝于管腳上,中間用透明樹脂固定,具有聚光作用,故靈敏度較高,較為常用。常用的光電耦合器組合形式有4種,如圖4-9所示。其中,圖4-9(a)是普通型光電耦合器,用于100kHz以下頻率的裝置中;圖4-9(b)是高速型光電耦合器,響應(yīng)速度高;圖4-9(c)是達(dá)林頓輸出型光電耦合器,具有達(dá)林頓輸出的一切特性,可直接用于驅(qū)動(dòng)較低頻率的負(fù)載;圖4-9(d)是晶閘管輸出型,其輸出部分為光控晶閘管,常用于大功率的隔離驅(qū)動(dòng)場合。在實(shí)際應(yīng)用中,可根據(jù)實(shí)際需要選用結(jié)構(gòu)簡單的器件,以降低成本。35362.光電耦合器的工作原理

光電耦合器是通過光電元件來實(shí)現(xiàn)功能的。光電元器件是一種光電轉(zhuǎn)換裝置,它的輸出特性與二極管或三極管基本相同,不同的是光電元器件接收的是光能量。以光電三極管為例,其導(dǎo)通與截止,是由發(fā)光二極管所加正向電壓控制的。當(dāng)發(fā)光二極管加上正向電壓時(shí),發(fā)光二極管有電流通過發(fā)光,使光電三極管內(nèi)阻減小而導(dǎo)通;反之,當(dāng)發(fā)光二極管不加正向電壓或所加正向電壓很小時(shí),發(fā)光二極管中無電流或通過電流很小,發(fā)光強(qiáng)度減弱,光電三極管的內(nèi)阻增大而截止。由于發(fā)光二極管與光電三極管之間是通過光來傳遞信息的,沒有電氣上的聯(lián)系,從而實(shí)現(xiàn)了電氣上的隔離。因此,光電耦合器廣泛地應(yīng)用于信號(hào)隔離、開關(guān)電路、數(shù)模轉(zhuǎn)換、邏輯電路、長線傳輸、過載保護(hù)、高壓控制和電路變換。373.光電耦合器的接口電路光電耦合技術(shù)廣泛用于測量控制系統(tǒng),典型的光電耦合器TLP521-4的應(yīng)用電路如圖4-10所示,其中,D為發(fā)光二極管,VCC為工作電源,R1為限流電阻,R2為三極管負(fù)載電阻,當(dāng)P1.0~P1.3輸出高電平時(shí),發(fā)光二極管無電流流過,因此不發(fā)光,光電三極管T沒有接收到光能量,處于截止?fàn)顟B(tài),輸出電壓Vo=VCC。當(dāng)P1.0~P1.3輸出低電平時(shí),有電流流過4個(gè)發(fā)光二極管D1~D4,產(chǎn)生紅外光線,T1~T4接收到光能量,從工作區(qū)進(jìn)入飽和區(qū),光電三極管導(dǎo)通,VO1~VO4均為0V,輸出低電平。38

光電耦合器可以作為測控系統(tǒng)輸入接口或者輸出接口,光電耦合器作為單片機(jī)輸入設(shè)備隔離器的例子參考第5章【例5-5】。39【例4-5】用單片機(jī)I/O口控制光電耦合器,電路如圖4-11所示,當(dāng)P2.7引腳輸出低電平時(shí),光耦工作,使燈泡點(diǎn)亮。40參考程序如下:#include<reg51.h>sbitP2_7=P2^7;voiddelay(unsignedinti){unsignedintj,k;for(k=0;k<i;k++)for(j=0;j<125;j++);}voidmain(void){while(1){P2_7=0;delay(1000);P2_7=1;delay(1000);}}414.8單片機(jī)I/O口控制雙向可控硅4.8.1晶閘管工作原理晶閘管又稱為可控硅(SCR),是一種大功率半導(dǎo)體器件,它既可作為控制開關(guān),又具有單向?qū)щ姷恼鞴δ堋Mǔ>чl管作為用較小的功率控制較大的功率的接口。在交、直流電動(dòng)機(jī)調(diào)速系統(tǒng)、調(diào)功系統(tǒng)、隨動(dòng)系統(tǒng)和無觸點(diǎn)開關(guān)等方面均獲得廣泛的應(yīng)用。晶閘管分單向可控硅和雙向可控硅2類。421.單向可控硅單向可控硅電路如圖4-12所示,具有三個(gè)電極:陽極A、陰極C、控制極(門極)G。當(dāng)控制極G不加電壓時(shí),其AC兩端加上正向電壓,正向電流很小,晶閘管并不導(dǎo)通,處于正向阻斷狀態(tài);當(dāng)AC加上正向電壓,且控制極上G也加上正向電壓時(shí),晶閘管便進(jìn)入導(dǎo)通狀態(tài)。此時(shí),管壓降僅1V左右,當(dāng)控制電壓消失,晶閘管仍保持導(dǎo)通狀態(tài)。控制電壓通常采用脈沖形式,以降低觸發(fā)功耗。晶閘管不具有自關(guān)斷能力,要切斷負(fù)載電流,只有使陽極電流減小到維持電流以下,或加反向電壓來關(guān)斷。在交流回路中應(yīng)用,當(dāng)電流過零和進(jìn)入負(fù)半周時(shí),自動(dòng)關(guān)斷,需再次導(dǎo)通,必須重加控制信號(hào)。圖4-12單向可控硅電路432.雙向晶閘管交流電路中常采用雙向晶閘管,如圖4-13所示,把兩只反并聯(lián)的晶閘管制作在同一片硅片上,控制極共用一個(gè),以保證電流能沿正反兩個(gè)方向流通。其原理說明如下。(1)控制極G不加電壓時(shí),A、C間呈高阻抗,管子截止。(2)當(dāng)AC間電壓>1.5V時(shí),不論極性如何,均可使G觸發(fā)電流控制其導(dǎo)通。(3)交流工作時(shí),當(dāng)每一半周交替時(shí),純阻負(fù)載一般能恢復(fù)截止;但在感性負(fù)載情況下,電流相位滯后于電壓,電流過零,可能反向電壓超過轉(zhuǎn)折電壓,使管子反向?qū)āK裕蠊茏幽艹惺芊聪螂妷海话阋覴C吸收回路。(4)A、C可調(diào)換使用,觸發(fā)極性可正可負(fù)。44

雙向可控硅經(jīng)常用作交流調(diào)壓、調(diào)溫、調(diào)功和無觸點(diǎn)開關(guān),以往用硬件產(chǎn)生觸發(fā)脈沖的測控方式不夠靈活,在單片機(jī)測控系統(tǒng)中可利用軟件產(chǎn)生觸發(fā)脈沖。圖4-13雙向晶閘管結(jié)構(gòu)454.8.2單片機(jī)I/O口控制雙向可控硅接口設(shè)計(jì)光耦合雙向可控硅驅(qū)動(dòng)器常作為單片機(jī)輸出與雙向可控硅之間較理想的接口器件,典型的產(chǎn)品有MOTOROLA公司的MOC3000系列的光耦合雙向可控硅驅(qū)動(dòng)器,一般為六引腳雙列直插式封裝,由發(fā)光二極管和雙向可控硅兩部分組成,發(fā)光二極管常由砷化鎵發(fā)光二極管構(gòu)成,在正向電流(5~15mA)作用下能發(fā)出紅外光,觸發(fā)硅光敏雙向可控硅雙向?qū)ā纹瑱C(jī)I/O口控制雙向可控硅接口典型電路如圖4-14所示,通常利用軟件控制單片機(jī)I/O口,使得光耦合雙向可控硅驅(qū)動(dòng)器發(fā)光,光敏雙向可控硅雙向?qū)ǎM(jìn)一步觸發(fā)外部的雙向晶閘管導(dǎo)通。當(dāng)P2.0輸出高電平時(shí),MOC3052輸出端的雙向晶閘管關(guān)斷,外部雙向晶閘管也關(guān)斷。電阻R1的作用是限制流過MOC3052輸出端的電流。46圖4-14光耦合雙向可控硅驅(qū)動(dòng)器接口電路47【例4-6】用單片機(jī)I/O口控制雙向可控硅,電路如圖4-15所示,當(dāng)按下K1開關(guān)并釋放時(shí),單片機(jī)P2.0取反。當(dāng)P2.0為0時(shí),光耦導(dǎo)通并觸發(fā)可控硅,燈泡L1點(diǎn)亮,反之則熄滅。圖4-15單片機(jī)I/O口控制雙向可控硅48參考程序如下:#include<reg51.h>sbitP2_0=P2^0;sbitK1=P1^0;voiddelay(unsignedinti){unsignedintj,k;for(k=0;k<i;k++)for(j=0;j<125;j++);}voidmain(void){ P2_0=1;while(1){if(K1==0){delay(10); if(K1==0) {while(K1==0); P2_0=~P2_0;}}}}494.9單片機(jī)I/O口控制固態(tài)繼電器固態(tài)繼電器是一種新型的無觸點(diǎn)電子繼電器,其輸入端僅要求輸入很小的控制電流,與TTL、HTL、CMOS等集成電路具有較好的兼容性,輸入端可以控制輸出端的通斷。1.固體繼電器內(nèi)部結(jié)構(gòu)固態(tài)繼電器是一種四端器件,固體繼電器內(nèi)部結(jié)構(gòu)如圖4-16所示,由輸入端、輸出端、光耦合器、過零開關(guān)和吸收電路組成。具有兩端輸入和兩端輸出,輸入輸出之間用光耦合器隔離。過零開關(guān)使得輸出開關(guān)點(diǎn)在輸出端電壓在過零的瞬間接通或者斷開,以減少由于開關(guān)電流造成的干擾。為了防止外電路中的尖峰電壓或浪涌電流對(duì)開關(guān)器件造成的破壞,在輸出端回路并聯(lián)有吸收網(wǎng)絡(luò)。502.固態(tài)繼電器的主要特點(diǎn)(1)低噪聲。過零型固態(tài)繼電器在導(dǎo)通和斷開時(shí)都是在過零點(diǎn)進(jìn)行的。(2)可靠性高。因?yàn)闆]有機(jī)械觸點(diǎn),全封閉封裝,所以耐沖擊、耐腐蝕、壽命長。(3)承受浪涌電流大。一般可達(dá)額定值的6~10倍。(4)驅(qū)動(dòng)功率小。驅(qū)動(dòng)電流只須10mA。(5)對(duì)電源的適應(yīng)性強(qiáng)。(6)抗干擾能力強(qiáng)。圖4-16固體繼電器內(nèi)部結(jié)構(gòu)513.單片機(jī)控制固態(tài)繼電器的接口圖4-17是使用固態(tài)繼電器實(shí)現(xiàn)控制單向伺服電動(dòng)機(jī)可逆運(yùn)轉(zhuǎn)的實(shí)例。圖4-17單片機(jī)控制固體繼電器52習(xí)題4一、填空題1.P0的功能是。2.P3口中P3.5位的第二功能符號(hào)為。3.若要從80C51的P1口輸入數(shù)據(jù),必須對(duì)該口先。4.80C51的并行I/O口(P0-P3)用作通用I/O口時(shí),當(dāng)口由原輸出狀態(tài)變?yōu)檩斎霠顟B(tài)方式時(shí),應(yīng)先向口的鎖存器進(jìn)行操作,再進(jìn)行輸入操作才正確。5.80C51單片機(jī)復(fù)位時(shí),P0~P3口的各引腳為電平。53二、簡答題1.簡述80C51內(nèi)部四個(gè)并行I/O口的功能。三、編程題1.編寫程序,從P1.6引腳輸出10個(gè)方波。2.編程讀P1.4-P1.7口的開關(guān)狀態(tài),并送P1.0-P1.3指示燈顯示。

第5章80C51單片機(jī)的中斷系統(tǒng)

54555.1中斷的概念5.280C51中斷系統(tǒng)的結(jié)構(gòu)5.2.1中斷源及中斷標(biāo)志位5.2.2中斷控制寄存器5.3中斷響應(yīng)過程5.4中斷服務(wù)函數(shù)及應(yīng)用5.4.1中斷服務(wù)函數(shù)5.4.2外部中斷服務(wù)函數(shù)應(yīng)用設(shè)計(jì)56第5章80C51單片機(jī)的中斷系統(tǒng)本章介紹80C51單片機(jī)片內(nèi)重要功能部件中斷系統(tǒng)的結(jié)構(gòu)、工作原理和應(yīng)用設(shè)計(jì),通過本章的學(xué)習(xí),讀者重點(diǎn)掌握中斷系統(tǒng)相關(guān)的特殊功能寄存器的使用,能熟練設(shè)計(jì)中斷系統(tǒng)初始化程序以及中斷函數(shù)。5.1中斷的概念在嵌入式系統(tǒng)(包括單片機(jī))應(yīng)用中,當(dāng)內(nèi)部、外部隨機(jī)事件發(fā)生時(shí),能及時(shí)響應(yīng)并實(shí)時(shí)處理都是利用中斷技術(shù)實(shí)現(xiàn)的。中斷是指CPU正在執(zhí)行程序的過程中,CPU內(nèi)部或外部某一事件(如內(nèi)部定時(shí)器/計(jì)數(shù)器的溢出或外部信號(hào)通過某一個(gè)引腳發(fā)生電平的變化、引腳脈沖沿跳變等)作為中斷源向CPU發(fā)出中斷請求信號(hào),要求CPU暫時(shí)終止當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序,待中斷服務(wù)請求處理完畢后,再回到原來被中斷的程序處(斷點(diǎn))繼續(xù)執(zhí)行。這種程序在執(zhí)行過程中由于內(nèi)部或外界的隨機(jī)事件而被中間打斷的情況稱為“中斷”。單片機(jī)對(duì)中斷源中斷服務(wù)請求的整個(gè)響應(yīng)和處理過程如圖5-1所示。57圖5-1單片機(jī)中斷響應(yīng)和處理過程圖

中斷的發(fā)生是由內(nèi)部或外部因素隨機(jī)決定的,程序中無法事先安排調(diào)用指令,所以響應(yīng)中斷服務(wù)程序的過程是由硬件自動(dòng)完成的。這種模式的實(shí)現(xiàn)依靠中斷系統(tǒng),中斷系統(tǒng)是單片機(jī)的重要組成部分,實(shí)時(shí)控制、故障自動(dòng)處理、計(jì)算機(jī)與外設(shè)間數(shù)據(jù)傳送一般采用中斷系統(tǒng)。中斷系統(tǒng)的應(yīng)用大大提高了單片機(jī)的工作效率。80C51單片機(jī)具有比較完善的中斷系統(tǒng),下面介紹其中斷系統(tǒng)的結(jié)構(gòu)及功能。585.280C51中斷系統(tǒng)的結(jié)構(gòu)80C51中斷系統(tǒng)的結(jié)構(gòu)如圖5-2所示。80C51單片機(jī)系統(tǒng)有5個(gè)中斷請求源,分為兩個(gè)中斷優(yōu)先級(jí),中斷服務(wù)程序可實(shí)現(xiàn)兩級(jí)嵌套,中斷系統(tǒng)功能的實(shí)現(xiàn)是通過軟件對(duì)SFR進(jìn)行控制,每個(gè)中斷源可獨(dú)立設(shè)置為允許中斷或關(guān)中斷狀態(tài),每個(gè)中斷源可獨(dú)立設(shè)置為高優(yōu)先級(jí)或低優(yōu)先級(jí)。5.2.1中斷源及中斷標(biāo)志位80C51單片機(jī)有5個(gè),各中斷源是否有中斷請求,是由中斷請求標(biāo)志位來表示的。中斷源及請求標(biāo)志位如表5-1所示。中斷源的中斷請求標(biāo)志位分別由TCON和SCON的相應(yīng)位鎖存。59表5-1中斷源及標(biāo)志位60圖5-280C51中斷系統(tǒng)結(jié)構(gòu)示意圖615.2.2中斷控制寄存器80C51通過對(duì)4個(gè)特殊功能寄存器的設(shè)置來控制5個(gè)中斷源是否允許中斷、各中斷源的中斷優(yōu)先級(jí)別、中斷申請方式以及標(biāo)識(shí)是否有中斷請求等。用于中斷控制和標(biāo)識(shí)的4個(gè)SFR分別是:定時(shí)器/計(jì)數(shù)器及外部中斷控制寄存器TCON、串行口控制寄存器SCON、中斷允許控制寄存器IE以及中斷優(yōu)先級(jí)控制寄存器IP。

1.TCONTCON字節(jié)地址為88H,每位可以單獨(dú)尋址和設(shè)置,每位名稱、位地址及含義如表5-2所示。TCON中包含2位外部中斷請求源的中斷觸發(fā)方式控制位,還包括與中斷有關(guān)的4位標(biāo)志位。表5-2TCON寄存器62

(1)TCON中與外部中斷有關(guān)的2位控制位①IT0:外部中斷0的中斷觸發(fā)方式控制位。IT0=0時(shí),外部中斷0為電平觸發(fā)方式,當(dāng)引腳P3.2為低電平,則IE0自動(dòng)置1,表示有中斷請求。IT0=1時(shí),外部中斷0為跳沿觸發(fā)方式,若CPU檢測到引腳P3.2有由高到低的負(fù)跳邊沿時(shí),則使IE0置1,表示有中斷請求。②IT1:外部中斷1的中斷觸發(fā)方式控制位。其含義與IT0類同。(2)外部中斷觸發(fā)方式有關(guān)外部中斷觸發(fā)方式的說明如下。若ITx(x=0,1)=0,為電平觸發(fā)方式,在引腳P3.2(P3.3)上被檢測的低電平必須保持到CPU響應(yīng)該中斷時(shí)為止,且在中斷服務(wù)程序返回前變?yōu)楦唠娖剑悦庠谥袛喾祷睾笥衷俅雾憫?yīng)該中斷而出錯(cuò)。所以電平觸發(fā)方式適用于外部中斷請求輸入為低電平(為被CPU采樣到,低電平應(yīng)至少保持12個(gè)振蕩周期),且能在中斷服務(wù)程序中撤銷請求源的情況。63

②若ITx=1,則為跳沿觸發(fā)方式。CPU在連續(xù)的兩個(gè)機(jī)器周期中,前一個(gè)機(jī)器周期從P3.2(P3.3)引腳上檢測到高電平,后一個(gè)機(jī)器周期檢測到低電平,才置位IEx(IE0或IE1),由IEx發(fā)出中斷請求。所以跳變觸發(fā)方式的外部中斷,要求輸入的負(fù)脈沖寬度至少保持12個(gè)振蕩周期,以確保檢測到引腳上的電平跳變。(3)TCON中與中斷有關(guān)的標(biāo)志位TCON中與中斷有關(guān)的標(biāo)志位有4位,功能如下。①IE0:外部中斷0的中斷請求標(biāo)志位。當(dāng)單片機(jī)檢測到外部中斷0引腳(P3.2)上出現(xiàn)有效的中斷請求信號(hào)時(shí),由硬件使IE0置1。當(dāng)CPU響應(yīng)該中斷請求時(shí),由硬件自動(dòng)對(duì)IE0清0。②IE1:外部中斷1的中斷請求標(biāo)志。其含義與IE0類同。③TF0:定時(shí)器/計(jì)數(shù)器T0的溢出中斷請求標(biāo)志位,啟動(dòng)定時(shí)器T0后,T0從設(shè)置初值開始加1計(jì)數(shù)。當(dāng)計(jì)數(shù)器T0最高位產(chǎn)生溢出時(shí),由硬件自動(dòng)對(duì)TF0置1,并向CPU發(fā)出中斷請求。當(dāng)CPU響應(yīng)中斷時(shí),由硬件自動(dòng)使TF0清0。64

④TF1:定時(shí)器/計(jì)數(shù)器T1的溢出中斷請求標(biāo)志位。含義與TF0相同。2.SCONSCON字節(jié)地址為98H,每位可以單獨(dú)尋址和設(shè)置,每位名稱、位地址及含義如表5-3所示。SCON中包含2位與串口中斷有關(guān)的標(biāo)志位。表5-3SCON寄存器

(1)串行口發(fā)送中斷請求標(biāo)志TI當(dāng)CPU每發(fā)送完一幀數(shù)據(jù)后,此時(shí)SBUF寄存器空,硬件自動(dòng)對(duì)TI置1,請求中斷。CPU響應(yīng)中斷后,必須在中斷服務(wù)程序中用指令對(duì)TI清0。65

(2)串行口接收中斷請求標(biāo)志RI當(dāng)串行口接收完一幀數(shù)據(jù)時(shí),此時(shí)SBUF寄存器滿,硬件自動(dòng)對(duì)RI置1,請求中斷。CPU響應(yīng)中斷后,必須在中斷服務(wù)程序中用指令對(duì)RI清0。3.中斷允許控制寄存器IEIE字節(jié)地址為A8H,每位可以單獨(dú)尋址并設(shè)置,每位名稱、位地址及含義如表5-4所示。80C51單片機(jī)對(duì)中斷的開放和關(guān)閉采用兩級(jí)控制。第一級(jí)是設(shè)置了1個(gè)總中斷控制位EA(IE.7位),第二級(jí)設(shè)置了5個(gè)中斷源的中斷開放與否的中斷請求允許控制位。表5-4IE寄存器66

(1)中斷允許總控制位EAEA=0,關(guān)閉所有中斷;EA=1,開放所有中斷,但是否允許各中斷源的中斷請求,還取決于各中斷源的中斷允許控制位的設(shè)置。(2)串行口的中斷允許位ESES=0:禁止串口中斷;ES=1:允許串口中斷。(3)定時(shí)器/計(jì)數(shù)器T1的中斷允許位ET1ET1=0:禁止T1中斷;ET1=1:允許T1中斷。(4)外部中斷1()的中斷允許位EX1EX1=0:禁止外部中斷1中斷;EX1=1:允許外部中斷1中斷。(5)定時(shí)器/計(jì)數(shù)器T0的中斷允許位ET0ET0=0:禁止T0中斷;ET0=1:允許T0中斷。67

(6)外部中斷0()的中斷允許位EX0EX0=0:禁止外部中斷0中斷;EX0=1:允許外部中斷0中斷。

4.中斷優(yōu)先級(jí)控制寄存器IP80C51單片機(jī)設(shè)有兩級(jí)中斷優(yōu)先級(jí),可設(shè)置IP寄存器相應(yīng)位實(shí)現(xiàn)2級(jí)中斷優(yōu)先級(jí)選擇。IP字節(jié)地址為B8H,各位名稱、位地址及含義如表5-5所示。表5-5IP寄存器

(1)串行口中斷優(yōu)先級(jí)控制位PSPS=1,設(shè)置串口高優(yōu)先級(jí);PS=0,設(shè)置串口低優(yōu)先級(jí)。(2)定時(shí)器/計(jì)數(shù)器T1中斷優(yōu)先級(jí)控制位PT168

PT1=1,設(shè)置T1高優(yōu)先級(jí);PT1=0,設(shè)置T1低優(yōu)先級(jí)。(3)外部中斷1優(yōu)先級(jí)控制位PX1PX1=1,設(shè)置外部中斷1高優(yōu)先級(jí);PX1=0,設(shè)置外部中斷1低優(yōu)先級(jí)。(4)定時(shí)器/計(jì)數(shù)器T0中斷優(yōu)先級(jí)控制位PT0PT0=1,設(shè)置T0高優(yōu)先級(jí);PT0=0,設(shè)置T0低優(yōu)先級(jí)。(5)外部中斷0中斷優(yōu)先級(jí)控制位PX0PX0=1,設(shè)置外部中斷0高優(yōu)先級(jí);PX0=0,設(shè)置外部中斷0低優(yōu)先級(jí)。80C51單片機(jī)復(fù)位后,IP=0,5個(gè)中斷源都處于低優(yōu)先級(jí)中斷。80C51單片機(jī)中斷系統(tǒng)設(shè)置中斷優(yōu)先級(jí)控制寄存器IP和中斷允許寄存器IE后,如果幾個(gè)同一優(yōu)先級(jí)的中斷源同時(shí)向CPU申請中斷,CPU通過內(nèi)部順序查詢邏輯電路,按自然優(yōu)先級(jí)順69序確定應(yīng)該響應(yīng)哪個(gè)中斷請求。自然優(yōu)先級(jí)由硬件形成,其排列如表5-6所示,依次為外部中斷0、定時(shí)器0溢出中斷、外部中斷1、定時(shí)器1溢出中斷、串行口中斷。5個(gè)中斷源中斷請求響應(yīng)后,程序分別轉(zhuǎn)向?qū)?yīng)的5個(gè)固定的中斷入口地址(中斷向量),具體地址如表5-6所示。表5-6中斷源入口地址及同一優(yōu)先級(jí)下的自然優(yōu)先序

【例5-1】若允許開放外部中斷0、外部中斷1中斷,并選擇外部中斷0為跳沿觸發(fā)方式,外部中斷1為電平出發(fā)方式,并設(shè)置外部中斷1具有高的優(yōu)先級(jí)。參考程序如下:70{……EA=1; //開放總中斷EX0=1; //允許外部中斷0中斷EX1=1; //允許外部中斷1中斷IT0=1; //設(shè)置外部中斷0為跳沿觸發(fā)方式IT1=0; //設(shè)置外部中斷1為電平觸發(fā)方式PX1=1; //外部中斷1具有高優(yōu)先級(jí)……}5.3中斷響應(yīng)過程80C51單片機(jī)對(duì)中斷源中斷請求作出響應(yīng),必須滿足中斷響應(yīng)條件;中斷請求也會(huì)遇到被封鎖的情況,中斷還會(huì)出現(xiàn)嵌套,本節(jié)討論中斷響應(yīng)的過程及中斷響應(yīng)時(shí)間。1.滿足中斷響應(yīng)需要的條件CPU對(duì)中斷請求進(jìn)行響應(yīng),必須檢測到下面5個(gè)條件。(1)中斷允許總控制位開放,即EA=1。71

(2)某一中斷源有請求信號(hào),即中斷源對(duì)應(yīng)的中斷標(biāo)志位為1。(3)該中斷源對(duì)應(yīng)的中斷允許位置1。(4)無同級(jí)或更高級(jí)中斷正在服務(wù)。 (5)當(dāng)前的指令周期已經(jīng)結(jié)束,且當(dāng)前指令不是RETI或訪問IE和IP的指令。CPU響應(yīng)中斷時(shí),第一步置位相應(yīng)的優(yōu)先級(jí)激活觸發(fā)器,以便封鎖同級(jí)和低級(jí)的中斷。第二步,把程序計(jì)數(shù)器PC的內(nèi)容壓入堆棧(但不自動(dòng)保存程序狀態(tài)字PSW),同時(shí)把被響應(yīng)的中斷服務(wù)程序的入口地址裝入PC中。第三步,在硬件的控制下,程序轉(zhuǎn)向被響應(yīng)的中斷向量,執(zhí)行中斷請求需要的中斷服務(wù)程序。

2.中斷請求被封鎖的情況單片機(jī)CPU在每個(gè)機(jī)器周期的S5P2節(jié)拍采樣中斷標(biāo)志,在下一個(gè)機(jī)器周期對(duì)采樣到的中斷源查詢。如果遇到下列3種情況之一時(shí),對(duì)該中斷源的響應(yīng)被封鎖。72

(1)CPU正在處理同級(jí)或高級(jí)的中斷。(2)現(xiàn)行的機(jī)器周期不是當(dāng)前所執(zhí)行指令的最后一個(gè)機(jī)器周期。(3)當(dāng)前正在執(zhí)行的指令是中斷返回指令(RETI)或是對(duì)IE或IP寄存器訪問的指令。

3.中斷的嵌套80C51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí)。當(dāng)CPU正在執(zhí)行中斷服務(wù)程序時(shí),又有其他中斷源發(fā)出中斷申請,CPU要分析判斷,決定是否響應(yīng)該中斷。判決規(guī)則如下:(1)若是同級(jí)中斷源申請中斷,CPU將不予理睬;(2)若是高級(jí)中斷源申請中斷,CPU將轉(zhuǎn)去響應(yīng)高級(jí)中斷請求,待高級(jí)中斷服務(wù)程序執(zhí)行完畢,CPU再轉(zhuǎn)回低級(jí)中斷服務(wù)程序斷點(diǎn)處接著執(zhí)行。這就是中斷的嵌套,二級(jí)中斷嵌套程序執(zhí)行過程如圖5-3所示。73圖5-380C51中斷的嵌套調(diào)用過程

4.中斷響應(yīng)時(shí)間以外部中斷響應(yīng)為例,單片機(jī)在每個(gè)機(jī)器周期的S5P2時(shí),采集外部中斷和的引腳電平,并鎖存到IE0和IE1中,這個(gè)設(shè)置IE0和IEl的標(biāo)志位在下一個(gè)機(jī)器周期才被查詢電路查詢。如果產(chǎn)生了中斷請求,而且滿足響應(yīng)的條件,CPU響應(yīng)中斷后,由硬件生成一條雙機(jī)器周期的長調(diào)用指令轉(zhuǎn)到相應(yīng)的中斷向量處,因此,74從中斷請求有效到執(zhí)行中斷服務(wù)程序的時(shí)間間隔至少需要3個(gè)完整的機(jī)器周期。如果中斷請求被封鎖,那么80C51將需要更長的響應(yīng)時(shí)間。(1)若同級(jí)的或高優(yōu)先級(jí)中斷已經(jīng)在執(zhí)行,則等待時(shí)間取決于正在處理的中斷服務(wù)程序的長度。(2)若正在執(zhí)行的是RETI指令或者是訪問IE或IP指令,指令執(zhí)行時(shí)間為2個(gè)機(jī)器周期,則CPU接著還需要執(zhí)行一條指令才響應(yīng)中斷,如果這條指令是需要最長時(shí)間指令,即4個(gè)機(jī)器周期的MUL或DIV指令,另外加上執(zhí)行由硬件生成的2個(gè)機(jī)器周期的長調(diào)用指令轉(zhuǎn)到相應(yīng)的中斷向量處所需時(shí)間,外部中斷響應(yīng)最長時(shí)間為8個(gè)機(jī)器周期。這樣,在單片機(jī)應(yīng)用系統(tǒng)中只有一個(gè)中斷源的情況下,響應(yīng)時(shí)間總是在3~8個(gè)機(jī)器周期之間。5.4中斷服務(wù)函數(shù)及應(yīng)用在第3章中已簡要介紹中斷服務(wù)函數(shù),C51中定義了中斷函數(shù)來編寫中斷服務(wù)程序,大大減輕了編寫中斷服務(wù)程序的復(fù)雜程度。75本節(jié)介紹中斷服務(wù)函數(shù)的設(shè)計(jì)及應(yīng)用。5.4.1中斷服務(wù)函數(shù)在C51中專門設(shè)計(jì)interrupt修飾符來定義中斷服務(wù)函數(shù),對(duì)聲明為中斷服務(wù)程序的函數(shù),在系統(tǒng)編譯時(shí)會(huì)自動(dòng)將當(dāng)前工作寄存器區(qū)內(nèi)容入棧、函數(shù)返回前將被保護(hù)的內(nèi)容出棧,并將中斷服務(wù)函數(shù)安排在程序存儲(chǔ)器中的相應(yīng)位置。中斷服務(wù)函數(shù)的格式為:函數(shù)類型函數(shù)名(void)interruptnusingm對(duì)中斷服務(wù)函數(shù)使用的說明:1.中斷函數(shù)沒有返回值,函數(shù)類型建議用void類型。2.interrupt后的n為中斷號(hào),對(duì)于MCS-51子系列(如80C51),n取值為0~4,對(duì)MCS-52子系列,n取值為0~5,中斷服務(wù)程序從8×n+3的中斷向量處開始執(zhí)行。中斷號(hào)與中斷向量的對(duì)應(yīng)關(guān)系如表5-7所示。76表5-7中斷號(hào)與中斷向量的對(duì)應(yīng)關(guān)系

3.關(guān)鍵字using是可選項(xiàng),后面的m用來選擇4個(gè)工作寄存器區(qū)。m取值為0~3。工作寄存器區(qū)與工作寄存器地址如表5-8所示。中斷號(hào)n中斷源中斷向量8n+30外部中斷00003H1定時(shí)器/計(jì)數(shù)器T0000BH2外部中斷10013H3定時(shí)器/計(jì)數(shù)器T1001BH4串行口中斷0023H5定時(shí)器/計(jì)數(shù)器T2002BH77表5-8工作寄存器區(qū)及地址

中斷服務(wù)函數(shù)中如果選用usingm,程序執(zhí)行開始會(huì)自動(dòng)將PSW入棧,并修改PSW中的工作寄存器組選擇位RS1、RS0到m指定的工作區(qū)。4.在中斷服務(wù)程序中調(diào)用其他函數(shù),必須保證所調(diào)用函數(shù)使用的工作寄存器區(qū)與中斷函數(shù)使用的寄存器區(qū)不同。工作寄存器區(qū)mRS1 RS0 工作寄存器工作寄存器在RAM中的地址000R0~R700~07H101R0~R708~0FH210R0~R710~17H311R0~R718~1FH785.4.2外部中斷服務(wù)函數(shù)應(yīng)用設(shè)計(jì)本節(jié)通過幾個(gè)案例,介紹有關(guān)外部中斷應(yīng)用程序的設(shè)計(jì)。例5-2】電路如圖5-4所示,設(shè)計(jì)一個(gè)對(duì)外部中斷0計(jì)數(shù)的程序。在80C51單片機(jī)的P1口連接8只LED,在外部中斷0輸入引腳P3.2連接一個(gè)按鈕開關(guān)K。要求如下:(1)每按一次K,產(chǎn)生外部中斷0請求,在外部中斷0服務(wù)程序中統(tǒng)計(jì)中斷發(fā)生的次數(shù);(2)主程序?qū)崿F(xiàn)在8個(gè)LED上按16進(jìn)制方式顯示中斷次數(shù)。79圖5-4一個(gè)外部中斷計(jì)數(shù)電路80

參考程序如下:#include<reg51.h>#defineucharunsignedcharuchara=0x00;voidDelay(unsignedintx)//延時(shí)1ms函數(shù){ucharj;while(x--){for(j=0;j<125;j++);}}voidmain() //主函數(shù){uchartemp;EA=1; //開放總中斷EX0=1; //允許外部中斷0中斷IT0=1; //外部中斷0為負(fù)跳變觸發(fā)方式81while(1) {temp=a;temp=~temp;P1=temp;}}voidint0()interrupt0 //外部中斷0服務(wù)程序{a=a+1;} 【例5-3】設(shè)計(jì)二個(gè)外部中斷嵌套程序,電路如圖5-5所示。在80C51單片機(jī)的P0口連接8只LED,在外部中斷0輸入引腳P3.2和外部中斷1輸入引腳P3.3各接一個(gè)按鈕開關(guān)K1和K2。要求如下:(1)K1和K2均未按下時(shí),P0口連接的8只LED呈間隔點(diǎn)亮后交替;(2)按下K1,產(chǎn)生高優(yōu)先級(jí)的外部中斷0請求,在82中斷服務(wù)程序中使8只LED自上而下流水點(diǎn)亮,顯示3遍。(3)按下K2,產(chǎn)生低優(yōu)先級(jí)的外部中斷1請求,在中斷服務(wù)程序中使8只LED自下而上流水點(diǎn)亮,顯示3遍。圖5-5二個(gè)外部中斷嵌套電路83

參考程序如下:#include<reg51.h>#include<intrins.h> #defineucharunsignedcharuchardisplay[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voidDelay(unsignedintx)//延時(shí)1ms函數(shù){ucharj;while(x--){for(j=0;j<125;j++);}}voidmain() //主函數(shù){EA=1; //開放總中斷EX0=1; //允許外部中斷0中斷EX1=1; //允許外部中斷1中斷84IT0=1; //外部中斷0為負(fù)跳變觸發(fā)方式IT1=1; //外部中斷1為負(fù)跳變觸發(fā)方式PX0=1; //外部中斷0中斷具有高優(yōu)先級(jí)PX1=0; //外部中斷1中斷具有低優(yōu)先級(jí)while(1) {P0=0x55;Delay(500);P0=0xaa;Delay(500);}}voidint0()interrupt0 //外部中斷0服務(wù)程序{ucharm,a;for(m=0;m<3;m++){for(a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論