第5章MCS-51的中斷系統(tǒng)_第1頁(yè)
第5章MCS-51的中斷系統(tǒng)_第2頁(yè)
第5章MCS-51的中斷系統(tǒng)_第3頁(yè)
第5章MCS-51的中斷系統(tǒng)_第4頁(yè)
第5章MCS-51的中斷系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、復(fù)習(xí)四個(gè)并行口的使用復(fù)習(xí)四個(gè)并行口的使用: :1.1.如果單片機(jī)內(nèi)部有程序存貯器,不需要擴(kuò)展外部存貯器如果單片機(jī)內(nèi)部有程序存貯器,不需要擴(kuò)展外部存貯器和和I/OI/O接口,單片機(jī)的四個(gè)口均可作接口,單片機(jī)的四個(gè)口均可作I/OI/O口使用??谑褂?。2.2.四個(gè)口在作輸入口使用時(shí),均應(yīng)先對(duì)其寫(xiě)四個(gè)口在作輸入口使用時(shí),均應(yīng)先對(duì)其寫(xiě)“1”1”,以避,以避免誤讀。免誤讀。3.3.P0P0口作口作I/OI/O口使用時(shí)應(yīng)外接口使用時(shí)應(yīng)外接10K10K的上拉電阻,其它口則可的上拉電阻,其它口則可不必。不必。4.4.P2P2的某幾根線作地址使用時(shí),剩下的線不能作的某幾根線作地址使用時(shí),剩下的線不能作I/OI/O

2、口線口線使用。使用。5.5.P3P3口的某些口線作第二功能時(shí),剩下的口線可以單獨(dú)作口的某些口線作第二功能時(shí),剩下的口線可以單獨(dú)作I/OI/O口線使用??诰€使用。并口編程舉例 下面舉例說(shuō)明端口作為通用下面舉例說(shuō)明端口作為通用I/O口時(shí)的功能,其口時(shí)的功能,其他功能的應(yīng)用實(shí)例在后面章節(jié)說(shuō)明。他功能的應(yīng)用實(shí)例在后面章節(jié)說(shuō)明。 例例1.設(shè)計(jì)一電路,監(jiān)視某開(kāi)關(guān)設(shè)計(jì)一電路,監(jiān)視某開(kāi)關(guān)K,用發(fā)光二極管用發(fā)光二極管LED顯示開(kāi)關(guān)狀態(tài):如果開(kāi)關(guān)合上,顯示開(kāi)關(guān)狀態(tài):如果開(kāi)關(guān)合上,LED 亮;亮; 開(kāi)開(kāi)關(guān)打開(kāi),關(guān)打開(kāi),LED熄滅。熄滅。 開(kāi)關(guān)接在開(kāi)關(guān)接在P1.1P1.1口線,口線,LEDLED接接P1.0P1.0口

3、線,當(dāng)開(kāi)關(guān)斷開(kāi)時(shí),口線,當(dāng)開(kāi)關(guān)斷開(kāi)時(shí),P1.1P1.1為為+5V+5V,對(duì),對(duì)應(yīng)數(shù)字量為應(yīng)數(shù)字量為“1”1”,開(kāi),開(kāi) 關(guān)合上時(shí)關(guān)合上時(shí)P1.1P1.1電平為電平為0V0V,對(duì)應(yīng)數(shù)字量為,對(duì)應(yīng)數(shù)字量為“0”0”,可以用位指令對(duì)開(kāi)關(guān)狀態(tài)進(jìn)行檢測(cè)可以用位指令對(duì)開(kāi)關(guān)狀態(tài)進(jìn)行檢測(cè) 。LEDLED+5V5VVccVcc-EAEARSTRST10uF 10uF 1K1KP1.0P1.089S5189S51P1.1P1.11K1K30P30P30P30PXTAL1XTAL1XTAL2XTAL2GNDGND89C5189C51+5V5VVccVcc-EAEARSTRST10uF10uF 1K1KP1.0P1.0

4、89S5189S51+5V+5VP1.1P1.11K1K30P30P30P30PXTAL1XTAL1XTAL2XTAL2GNDGND89C5189C51K K#include #include main()main() P1_0=0; / P1_0=0; /使發(fā)光二極管滅使發(fā)光二極管滅 while while(1 1) P1_1=1; / P1_1=1; /先對(duì)先對(duì)P1P1口寫(xiě)入口寫(xiě)入“1”1” if if( P1_1=1P1_1=1 ) /開(kāi)關(guān)開(kāi),二極管滅開(kāi)關(guān)開(kāi),二極管滅 P1_0=0; P1_0=0; else / else /開(kāi)關(guān)合上,二極管亮開(kāi)關(guān)合上,二極管亮 P1_0=1; P1_0

5、=1; +5V+5VP1.0P1.0LEDLED 在上述電路圖中二極管亮度不夠,按下面兩在上述電路圖中二極管亮度不夠,按下面兩種電路接法,增加了驅(qū)動(dòng)能力,二極管更亮些。種電路接法,增加了驅(qū)動(dòng)能力,二極管更亮些。接成灌電流形式:接成灌電流形式:P1.0P1.0+5V+5VLEDLED1加驅(qū)動(dòng)電路:加驅(qū)動(dòng)電路: 例例2 2. .在下圖中在下圖中P1.4P1.4P1.7P1.7接四個(gè)發(fā)光二極管接四個(gè)發(fā)光二極管LED,P1.0LED,P1.0P1.3P1.3接四個(gè)開(kāi)關(guān),編程將開(kāi)關(guān)的狀態(tài)反映到接四個(gè)開(kāi)關(guān),編程將開(kāi)關(guān)的狀態(tài)反映到發(fā)光二極管上。發(fā)光二極管上。 89C5189C51P1.0P1.0P1.1P1

6、.1P1.2P1.2P1.3P1.3P1.4P1.4P1.5P1.5P1.6P1.6P1.7P1.7+5V+5V+5V+5V1K1K4 4330330 4 4EA#includevoid main() char data a; P1=0 x0ff; /P1口置口置1 while(1) a=P1; /讀入低四位讀入低四位 P1=a4; /低四位送至高四位低四位送至高四位 P1=P1|0X0F; /低四位值低四位值1,高四位保持,高四位保持 例例3 3. .用用P1.0P1.0輸出輸出1KHz1KHz和和500Hz500Hz的音頻信號(hào)驅(qū)動(dòng)揚(yáng)的音頻信號(hào)驅(qū)動(dòng)揚(yáng)聲器,作報(bào)警信號(hào),要求聲器,作報(bào)警信號(hào),要

7、求1KHz1KHz信號(hào)響信號(hào)響100ms 100ms ,500Hz500Hz信號(hào)響信號(hào)響200ms200ms,交替進(jìn)行,交替進(jìn)行,P1.7P1.7接一開(kāi)關(guān)進(jìn)行接一開(kāi)關(guān)進(jìn)行控制,當(dāng)開(kāi)關(guān)合上響報(bào)警信號(hào),當(dāng)開(kāi)關(guān)斷開(kāi)告警信控制,當(dāng)開(kāi)關(guān)合上響報(bào)警信號(hào),當(dāng)開(kāi)關(guān)斷開(kāi)告警信號(hào)停止,編出程序。號(hào)停止,編出程序。 分析分析:500Hz500Hz信號(hào)周期為信號(hào)周期為2ms2ms,信號(hào)電平為每信號(hào)電平為每1ms1ms變反變反1 1次。次。1KHz1KHz的信號(hào)周期為的信號(hào)周期為1ms1ms,信號(hào)電平信號(hào)電平 每每500500 S S變反變反1 1次,編一個(gè)延時(shí)次,編一個(gè)延時(shí)500500 S S子程序,延時(shí)子程序,延時(shí)

8、1ms1ms只需調(diào)用只需調(diào)用2 2次。用次。用R2R2控制音響時(shí)間長(zhǎng)短,控制音響時(shí)間長(zhǎng)短,A A作音響頻作音響頻率的交換控制的標(biāo)志。率的交換控制的標(biāo)志。A=FFA=FF時(shí)產(chǎn)生時(shí)產(chǎn)生1KHz1KHz信號(hào),信號(hào),A=0A=0時(shí)產(chǎn)生時(shí)產(chǎn)生500Hz500Hz信號(hào)。信號(hào)。 P1.0 波波 形形 圖圖 1ms 1ms100個(gè)個(gè)T (變反變反200次即次即200ms)。500S500S100個(gè)個(gè)T (變反變反200次即次即100ms)。TT#includevoid Delay_n500us( );void main() unsigned char data i=0; char a= 0;/作為作為1khz

9、和和500hz的區(qū)分的區(qū)分 while(1) while(p1_7=0);/檢測(cè)開(kāi)關(guān)檢測(cè)開(kāi)關(guān) for (i=0;i200;i+) p1_0=p1_0; /產(chǎn)生矩形波產(chǎn)生矩形波 Delay_n500us();/500us延時(shí)延時(shí) if( a!=0) /如果是如果是500hz則需要?jiǎng)t需要1ms延時(shí)延時(shí) Delay_n500us(); a=a; /延時(shí)延時(shí)500usvoid Delay_n500us( ) int j=0; for ( j=0;j250;j+) ;流水燈的控制 單片機(jī)的最小系統(tǒng)板,在P1口接8個(gè)LED等。使得8個(gè)LED燈從P1_0-1_7循環(huán)點(diǎn)亮。#includevoid Delay

10、_n500ms( );void main() unsigned char data i=0; while(1) P1=1; for (i=0;i8;i+) Delay_n500ms();/500ms延時(shí)延時(shí) P1=P11; 智能小車(chē)驅(qū)動(dòng)Q1Q1,Q4Q4導(dǎo)通,正轉(zhuǎn)導(dǎo)通,正轉(zhuǎn)Q2Q2,Q3Q3導(dǎo)通,反轉(zhuǎn)導(dǎo)通,反轉(zhuǎn)Q1Q1和和Q2Q2,Q3Q3和和Q4Q4不能同時(shí)導(dǎo)通不能同時(shí)導(dǎo)通正轉(zhuǎn)正轉(zhuǎn):ENABLE =1:ENABLE =1,L=0L=0,R=1R=1反轉(zhuǎn)反轉(zhuǎn):ENABLE =1:ENABLE =1,L=1L=1,R=0R=0不動(dòng)不動(dòng):ENABLE =0:ENABLE =0 ENABLE=1,L

11、=1,R=1ENABLE=1,L=1,R=1如何實(shí)現(xiàn)小車(chē)的停轉(zhuǎn),前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn)?如何實(shí)現(xiàn)小車(chē)的停轉(zhuǎn),前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn)?第第5章章 89C51的中斷系統(tǒng)的中斷系統(tǒng) 在在CPUCPU和外設(shè)交換信息時(shí),存在著快速和外設(shè)交換信息時(shí),存在著快速CPUCPU和慢速外設(shè)間和慢速外設(shè)間的矛盾,機(jī)器內(nèi)部有時(shí)也可能出現(xiàn)突發(fā)事件,為此,計(jì)算機(jī)的矛盾,機(jī)器內(nèi)部有時(shí)也可能出現(xiàn)突發(fā)事件,為此,計(jì)算機(jī)中通常采用中斷技術(shù)。使得中通常采用中斷技術(shù)。使得單片單片機(jī)機(jī)能及時(shí)地響應(yīng)和處理單片能及時(shí)地響應(yīng)和處理單片機(jī)外部事件或內(nèi)部事件所提出的中斷請(qǐng)求機(jī)外部事件或內(nèi)部事件所提出的中斷請(qǐng)求。對(duì)事件的整個(gè)處理過(guò)程,稱為對(duì)事件的

12、整個(gè)處理過(guò)程,稱為中斷處理中斷處理(或中斷服務(wù)或中斷服務(wù))。)。CPUCPU正在執(zhí)行程序;正在執(zhí)行程序;單片機(jī)外部或內(nèi)部發(fā)生的某一單片機(jī)外部或內(nèi)部發(fā)生的某一事件事件,請(qǐng)求請(qǐng)求CPUCPU迅速去處理;迅速去處理;CPUCPU暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)到中斷暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)到中斷服務(wù)處理程序處理所發(fā)生的事件;服務(wù)處理程序處理所發(fā)生的事件;處理完該事件后,再回到原來(lái)被中處理完該事件后,再回到原來(lái)被中止的地方,繼續(xù)原來(lái)的工作,這稱止的地方,繼續(xù)原來(lái)的工作,這稱為為中斷中斷。 CPUCPU處理事件的過(guò)程,稱為處理事件的過(guò)程,稱為CPUCPU的的中斷響應(yīng)過(guò)程。中斷響應(yīng)過(guò)程。中斷方式中斷方式優(yōu)點(diǎn)優(yōu)點(diǎn):大大

13、地大大地提高了提高了CPUCPU的工作效率。的工作效率。5.1 5.1 中斷的概念中斷的概念能夠?qū)崿F(xiàn)中斷處理功能的部件稱為能夠?qū)崿F(xiàn)中斷處理功能的部件稱為中斷系統(tǒng)中斷系統(tǒng);產(chǎn)生中斷的請(qǐng)求源稱為產(chǎn)生中斷的請(qǐng)求源稱為中斷請(qǐng)求源中斷請(qǐng)求源。中斷源向中斷源向CPUCPU提出的處理請(qǐng)求,稱為提出的處理請(qǐng)求,稱為中斷請(qǐng)求中斷請(qǐng)求( (或中斷或中斷申請(qǐng)申請(qǐng)) )。中斷處理的過(guò)程:中斷處理的過(guò)程: 進(jìn)入中斷進(jìn)入中斷保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)中斷處理恢復(fù)現(xiàn)場(chǎng)中斷處理恢復(fù)現(xiàn)場(chǎng) 中斷返回中斷返回 5.2 5.2 89C5189C51中斷系統(tǒng)的結(jié)構(gòu)中斷系統(tǒng)的結(jié)構(gòu)有有5 5個(gè)中斷請(qǐng)求源,兩個(gè)中斷優(yōu)先級(jí),可兩級(jí)嵌套。個(gè)中斷請(qǐng)求源,兩

14、個(gè)中斷優(yōu)先級(jí),可兩級(jí)嵌套。5.5.2.1 2.1 中斷請(qǐng)求源中斷請(qǐng)求源五個(gè)中斷請(qǐng)求源五個(gè)中斷請(qǐng)求源 :(1 1)INT0INT0* *外部中斷請(qǐng)求外部中斷請(qǐng)求0 0,由引腳,由引腳INT0INT0* *(P3.2)(P3.2)輸入,中斷輸入,中斷請(qǐng)求標(biāo)志為請(qǐng)求標(biāo)志為IE0IE0。(2 2)INT1INT1* *外部中斷請(qǐng)求外部中斷請(qǐng)求1 1,由引腳,由引腳INT1INT1* *(P3.3)(P3.3)輸入,中斷輸入,中斷請(qǐng)求標(biāo)志為請(qǐng)求標(biāo)志為IE1IE1。(3 3)定時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T0T0溢出溢出中斷請(qǐng)求,中斷請(qǐng)求標(biāo)志為中斷請(qǐng)求,中斷請(qǐng)求標(biāo)志為T(mén)F0TF0。(4 4)定時(shí)器定時(shí)器/

15、 /計(jì)數(shù)器計(jì)數(shù)器T1T1溢出溢出中斷請(qǐng)求,中斷請(qǐng)求標(biāo)志為中斷請(qǐng)求,中斷請(qǐng)求標(biāo)志為T(mén)F1TF1。(5 5)串行口中斷請(qǐng)求串行口中斷請(qǐng)求,中斷請(qǐng)求標(biāo)志為,中斷請(qǐng)求標(biāo)志為T(mén)ITI或或RIRI。符號(hào)符號(hào) 名名 稱稱 中中 斷斷 引引 起起 原原 因因 中斷服務(wù)中斷服務(wù)程序入口程序入口INT0INT0 外部中外部中斷斷0 0 P3.2P3.2引腳的低電平或下降引腳的低電平或下降沿信號(hào)沿信號(hào) 0003H0003HINT1INT1 外部中外部中斷斷1 1P3.3P3.3引腳的低電平或下降引腳的低電平或下降沿信號(hào)沿信號(hào) 0013H0013HT0T0定時(shí)器定時(shí)器0 0中斷中斷 定時(shí)計(jì)數(shù)器定時(shí)計(jì)數(shù)器0 0計(jì)數(shù)回零

16、溢出計(jì)數(shù)回零溢出 000BH000BHT1T1定時(shí)器定時(shí)器1 1中斷中斷 定時(shí)計(jì)數(shù)器定時(shí)計(jì)數(shù)器1 1計(jì)數(shù)回零溢出計(jì)數(shù)回零溢出 001BH001BHTI/RITI/RI 串行口串行口中斷中斷 串行通信完成一幀數(shù)據(jù)發(fā)串行通信完成一幀數(shù)據(jù)發(fā)送或接收引起中斷送或接收引起中斷 0023H0023HTCONTCON為定時(shí)器為定時(shí)器/ /計(jì)數(shù)器的控制寄存器計(jì)數(shù)器的控制寄存器, ,但同時(shí)可設(shè)置外部中斷的中斷方式。但同時(shí)可設(shè)置外部中斷的中斷方式。包含:包含:(1 1)T0T0和和T1T1的溢出中斷請(qǐng)求標(biāo)志位的溢出中斷請(qǐng)求標(biāo)志位TF1TF1和和TF0TF0(2 2)外部中斷請(qǐng)求標(biāo)志位外部中斷請(qǐng)求標(biāo)志位IE1IE1

17、與與IE0IE0。5.2.25.2.2中斷控制中斷控制1 1、TCONTCON1.1.IT0IT0和和IT1IT1為外中斷為外中斷INT0 INT0 和和INT1INT1中斷觸發(fā)方式選擇,若選下降沿觸發(fā)則相中斷觸發(fā)方式選擇,若選下降沿觸發(fā)則相應(yīng)位置應(yīng)位置1 1;若選低電平觸發(fā),;若選低電平觸發(fā),ITIT相應(yīng)位置相應(yīng)位置0 0??捎绍浖?。可由軟件置“1”“1”或清或清“0”“0”. .2.2.TR0 TR0 和和 TR1 TR1 為定時(shí)器為定時(shí)器T0T0和和T1 T1 工作啟動(dòng)和停止控制。工作啟動(dòng)和停止控制。 3.3.某中斷源有中斷請(qǐng)求,該中斷標(biāo)志置某中斷源有中斷請(qǐng)求,該中斷標(biāo)志置1 1,無(wú)中

18、斷請(qǐng)求,該中斷標(biāo)志置,無(wú)中斷請(qǐng)求,該中斷標(biāo)志置0 0 。 IE0 IE0,IE1IE1由硬件清由硬件清“0”“0”; TF1 TF1,TFOTFO由硬件清由硬件清“0”“0”,也可由軟件清,也可由軟件清0 0 。4. 4. 當(dāng)當(dāng)5151單片機(jī)復(fù)位后,單片機(jī)復(fù)位后,TCONTCON被清被清0 0,則,則CPUCPU關(guān)中斷,所有中斷請(qǐng)求被禁止。關(guān)中斷,所有中斷請(qǐng)求被禁止。INT0方式方式下沿下沿/低低電平電平 INT0請(qǐng)求請(qǐng)求有有/無(wú)無(wú) INT1方式方式下沿下沿/ 低低電平電平 INT1 請(qǐng)求請(qǐng)求有有/無(wú)無(wú) T0 工作工作啟啟/停停 T0 請(qǐng)求請(qǐng)求有有/無(wú)無(wú) T1工作工作啟啟/停停 T1 請(qǐng)求請(qǐng)求

19、有有/無(wú)無(wú) IT0 IE0IT1IE1TR0 TF0 TR1 TF1中斷請(qǐng)求標(biāo)志及外部中斷方式選擇寄存器中斷請(qǐng)求標(biāo)志及外部中斷方式選擇寄存器TCONTCON外部中斷使用外部中斷使用定時(shí)器使用定時(shí)器使用外部中斷的兩種觸發(fā)方式:外部中斷的兩種觸發(fā)方式: 電平觸發(fā)電平觸發(fā)方式和方式和跳沿觸發(fā)跳沿觸發(fā)方式。方式。1 1 電平觸發(fā)方式電平觸發(fā)方式 CPU CPU在每個(gè)機(jī)器周期采樣到的外部中斷輸入線的電平為低電平時(shí)觸發(fā)中斷。在每個(gè)機(jī)器周期采樣到的外部中斷輸入線的電平為低電平時(shí)觸發(fā)中斷。 如在中斷服務(wù)程序返回之前,低電平依然有效,則會(huì)再次響應(yīng)中斷。如在中斷服務(wù)程序返回之前,低電平依然有效,則會(huì)再次響應(yīng)中斷。

20、2 2 跳沿觸發(fā)方式跳沿觸發(fā)方式 連續(xù)兩次采樣,一個(gè)機(jī)器周期采樣到外部中斷輸入為高,下一個(gè)機(jī)器周期連續(xù)兩次采樣,一個(gè)機(jī)器周期采樣到外部中斷輸入為高,下一個(gè)機(jī)器周期采樣為低,則置采樣為低,則置“1”“1”中斷請(qǐng)求標(biāo)志,直到中斷請(qǐng)求標(biāo)志,直到CPUCPU響應(yīng)此中斷時(shí),該標(biāo)志才清響應(yīng)此中斷時(shí),該標(biāo)志才清0 0。這樣不會(huì)丟失中斷,但這樣不會(huì)丟失中斷,但輸入的負(fù)脈沖寬度至少保持輸入的負(fù)脈沖寬度至少保持1 1個(gè)機(jī)器周期個(gè)機(jī)器周期。 (2 2)SCONSCON為串行口控制寄存器,字節(jié)地址為為串行口控制寄存器,字節(jié)地址為9898H H。 串行口的串行口的發(fā)送中斷發(fā)送中斷和和接收中斷接收中斷的中斷請(qǐng)求標(biāo)志的中斷

21、請(qǐng)求標(biāo)志TITI和和RIRI。(1 1)TITI發(fā)送中斷請(qǐng)求標(biāo)志位。串口每發(fā)送完一幀串行數(shù)據(jù)后,硬件自動(dòng)發(fā)送中斷請(qǐng)求標(biāo)志位。串口每發(fā)送完一幀串行數(shù)據(jù)后,硬件自動(dòng)置置“1”“1”TITI。必須在中斷服務(wù)程序中用必須在中斷服務(wù)程序中用軟件軟件對(duì)對(duì)TITI標(biāo)志清標(biāo)志清“0”“0”。(2 2)RIRI接收中斷請(qǐng)求標(biāo)志位。串口接收完一個(gè)數(shù)據(jù)幀,硬件自動(dòng)置接收中斷請(qǐng)求標(biāo)志位。串口接收完一個(gè)數(shù)據(jù)幀,硬件自動(dòng)置“1”“1”RIRI標(biāo)志。標(biāo)志。必須在中斷服務(wù)程序中用必須在中斷服務(wù)程序中用軟件軟件對(duì)對(duì)RIRI標(biāo)志清標(biāo)志清“0”“0”。(3)(3)中斷的允許和禁止中斷的允許和禁止中斷控制寄存器中斷控制寄存器IEIE

22、控制控制CPUCPU對(duì)中斷源的開(kāi)放或屏蔽。對(duì)中斷源的開(kāi)放或屏蔽。EAEA - - - - ES ES ETIETI EX1EX1 ET0ET0 EX0EX0中斷總中斷總控允控允/ /禁禁 不不 用用 不不用用 串行口串行口允允/ /禁禁 定時(shí)器定時(shí)器T1T1允允/ /禁禁 INT1INT1允允/ /禁禁 定時(shí)器定時(shí)器T0T0允允/ /禁禁 INT0INT0允允/ /禁禁 IEIE對(duì)中斷的開(kāi)放和關(guān)閉為對(duì)中斷的開(kāi)放和關(guān)閉為兩級(jí)兩級(jí)控制控制EAEA:中斷總控開(kāi)關(guān),是:中斷總控開(kāi)關(guān),是CPUCPU是否響應(yīng)中斷的前提。是否響應(yīng)中斷的前提。 EA=1EA=1,CPUCPU開(kāi)中斷開(kāi)中斷; ; EA=0 EA

23、=0, CPUCPU關(guān)中斷。關(guān)中斷。ESES: 串行口中斷允許位,串行口中斷允許位, ES=1ES=1,允許串行口發(fā)送允許串行口發(fā)送/ /接收中斷;接收中斷; ES=0ES=0,禁止串行口中斷。禁止串行口中斷。ET1ET1:定時(shí)器定時(shí)器T1T1中斷允許位,中斷允許位, ET1=1ET1=1,允許允許T1T1計(jì)數(shù)溢出中斷;計(jì)數(shù)溢出中斷; ET1=0ET1=0,禁止禁止T1T1中斷。中斷。ET0ET0: 定時(shí)器定時(shí)器T0T0中斷允許位中斷允許位, , ET0=1 ET0=1,允許,允許T1T1計(jì)數(shù)溢出中斷;計(jì)數(shù)溢出中斷; ET0=0ET0=0,禁止,禁止T0T0中斷。中斷。EX1EX1: 外部中斷

24、外部中斷INT1INT1允許位,允許位, EX1=1EX1=1,允許,允許INT1INT1中斷;中斷; EX1= 0EX1= 0,禁止,禁止INT1INT1中斷。中斷。EX0EX0: 外部中斷外部中斷INT0INT0允許位,允許位, EX0=1EX0=1,允許,允許INT0INT0中斷;中斷; EX0= 0EX0= 0,禁止,禁止INT0INT0中斷。中斷。 MCS51MCS51復(fù)位后,復(fù)位后,IEIE清清0 0,所有中斷請(qǐng)求被禁止。所有中斷請(qǐng)求被禁止。若使某一個(gè)中斷源被若使某一個(gè)中斷源被允許中斷,除了允許中斷,除了IEIE相相應(yīng)的位的被置應(yīng)的位的被置“1” “1” ,還必須使還必須使EAEA

25、位位=1=1。IEIE的控制方法的控制方法改變改變IEIE的內(nèi)容,可直接設(shè)置對(duì)應(yīng)的位值,通過(guò)位操作實(shí)現(xiàn)實(shí)現(xiàn)的內(nèi)容,可直接設(shè)置對(duì)應(yīng)的位值,通過(guò)位操作實(shí)現(xiàn)實(shí)現(xiàn)也可設(shè)置也可設(shè)置IEIE字節(jié)的數(shù)值字節(jié)的數(shù)值例例5-15-1 若允許片內(nèi)若允許片內(nèi)2 2個(gè)定時(shí)器個(gè)定時(shí)器/ /計(jì)數(shù)器中斷,禁止其它中斷源的計(jì)數(shù)器中斷,禁止其它中斷源的中斷請(qǐng)求。編寫(xiě)設(shè)置中斷請(qǐng)求。編寫(xiě)設(shè)置IEIE的相應(yīng)程序段的相應(yīng)程序段(1 1)用位操作指令來(lái)編寫(xiě)如下程序段)用位操作指令來(lái)編寫(xiě)如下程序段: ES=0; /禁止串行口中斷禁止串行口中斷 EX1=0; /禁止外部中斷禁止外部中斷1 1中斷中斷 EX0=0; /禁止外部中斷禁止外部中斷

26、0 0中斷中斷 ET0=1; /允許定時(shí)器允許定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T0T0中斷中斷 ET1=1; /允許定時(shí)器允許定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T1T1中斷中斷 EA=1; /CPU/CPU開(kāi)中斷開(kāi)中斷(2 2)用字節(jié)操作指令來(lái)編寫(xiě):)用字節(jié)操作指令來(lái)編寫(xiě): IE= 0X8A; IE= 0X8A;可歸納為下面可歸納為下面兩條基本規(guī)則兩條基本規(guī)則:(1 1)低優(yōu)先級(jí)可被高優(yōu)先級(jí)中斷,反之則不能。)低優(yōu)先級(jí)可被高優(yōu)先級(jí)中斷,反之則不能。(2)同級(jí)中斷不會(huì)被它的同級(jí)中斷源所中斷。)同級(jí)中斷不會(huì)被它的同級(jí)中斷源所中斷。(4 4) 中斷優(yōu)先級(jí)寄存器中斷優(yōu)先級(jí)寄存器IPIP兩個(gè)中斷優(yōu)先級(jí),可實(shí)現(xiàn)兩個(gè)中斷優(yōu)先

27、級(jí),可實(shí)現(xiàn)兩兩級(jí)中斷嵌套。級(jí)中斷嵌套。 若若CPUCPU正在執(zhí)行高優(yōu)先級(jí)的中斷,則不能被任何正在執(zhí)行高優(yōu)先級(jí)的中斷,則不能被任何中斷源所中斷。中斷源所中斷。中斷優(yōu)先級(jí)管理寄存器中斷優(yōu)先級(jí)管理寄存器IPIP -PSPT1PX1PT0PX0無(wú)無(wú)用用位位無(wú)無(wú)用用位位無(wú)無(wú)用用位位串行串行 口口高高/低低 T1高高/低低 INT1高高/低低 T0高高/低低 INT0高高/低低 五個(gè)中斷源的優(yōu)先級(jí)別由五個(gè)中斷源的優(yōu)先級(jí)別由IP寄存器管理,相應(yīng)位置寄存器管理,相應(yīng)位置1 1,則該中斷,則該中斷源優(yōu)先級(jí)別高,置源優(yōu)先級(jí)別高,置0 0的優(yōu)先級(jí)別低。的優(yōu)先級(jí)別低。由軟件可改變各中斷源的中斷優(yōu)先級(jí)。由軟件可改變各中

28、斷源的中斷優(yōu)先級(jí)。 例例5-25-2 設(shè)置設(shè)置IPIP寄存器的初始值,使寄存器的初始值,使2 2個(gè)外中斷請(qǐng)求為高優(yōu)先級(jí),個(gè)外中斷請(qǐng)求為高優(yōu)先級(jí),其它中斷請(qǐng)求為低優(yōu)先級(jí)。其它中斷請(qǐng)求為低優(yōu)先級(jí)。(1 1)用位操作指令)用位操作指令 PX0=1PX0=1; /2 /2個(gè)外中斷為高優(yōu)先級(jí)個(gè)外中斷為高優(yōu)先級(jí) PX1=1; PX1=1; PS =0; / PS =0; / 串口為低優(yōu)先級(jí)中斷串口為低優(yōu)先級(jí)中斷PT0=0; /PT0=0; /2 2個(gè)定時(shí)器個(gè)定時(shí)器/ /計(jì)數(shù)器低優(yōu)先級(jí)中斷計(jì)數(shù)器低優(yōu)先級(jí)中斷PT1=0;PT1=0;(2 2)用字節(jié)操作指令用字節(jié)操作指令 IP=0X05;IP=0X05;在同時(shí)

29、收到在同時(shí)收到幾個(gè)同一優(yōu)先級(jí)的中斷請(qǐng)求幾個(gè)同一優(yōu)先級(jí)的中斷請(qǐng)求時(shí),時(shí),即即當(dāng)某幾當(dāng)某幾個(gè)中斷源在個(gè)中斷源在IP寄存器相應(yīng)位同為寄存器相應(yīng)位同為1或同為零時(shí),或同為零時(shí),優(yōu)優(yōu)先響應(yīng)哪一個(gè)中斷,取決于先響應(yīng)哪一個(gè)中斷,取決于內(nèi)部的查詢順序內(nèi)部的查詢順序。 中斷查詢次序中斷查詢次序 中斷源中斷源 中斷級(jí)別中斷級(jí)別外部中斷外部中斷0 0最高最高T0T0溢出中斷溢出中斷外部中斷外部中斷1 1T1T1溢出中斷溢出中斷串行口中斷串行口中斷最低最低NNYY執(zhí)執(zhí) 行行 指指 令令中斷響應(yīng)條件滿足中斷響應(yīng)條件滿足?能否馬上執(zhí)行中斷?能否馬上執(zhí)行中斷?斷點(diǎn)的斷點(diǎn)的PC進(jìn)棧進(jìn)棧, 中斷服務(wù)入口地址送中斷服務(wù)入口地址送

30、PC撤撤 除除 中中 斷斷 標(biāo)標(biāo) 志志中中 斷斷 服服 務(wù)務(wù)中中 斷斷 返返 回回, 斷斷 點(diǎn)點(diǎn) 出出 棧棧 送送 PC 中斷請(qǐng)求中斷請(qǐng)求中斷響應(yīng)中斷響應(yīng)中斷服務(wù)中斷服務(wù)中斷返回中斷返回5.35.3中斷處理過(guò)程中斷處理過(guò)程1 1、 響應(yīng)中斷請(qǐng)求的條件響應(yīng)中斷請(qǐng)求的條件 一個(gè)中斷請(qǐng)求被響應(yīng),需滿足以下必要條件:一個(gè)中斷請(qǐng)求被響應(yīng),需滿足以下必要條件:(1 1)該中斷源發(fā)出中斷請(qǐng)求,即該中斷源對(duì)應(yīng)的)該中斷源發(fā)出中斷請(qǐng)求,即該中斷源對(duì)應(yīng)的中斷請(qǐng)中斷請(qǐng)求標(biāo)志為求標(biāo)志為“1”“1”。(2 2)IEIE寄存器中的中斷總允許位寄存器中的中斷總允許位EA=1EA=1。(3 3)該中斷源的)該中斷源的中斷允許

31、位中斷允許位=1=1,即該中斷沒(méi)有被屏蔽。,即該中斷沒(méi)有被屏蔽。2 2、中斷處理會(huì)否被延時(shí)?、中斷處理會(huì)否被延時(shí)? 遇到遇到下列三種情況下列三種情況之一時(shí),中斷響應(yīng)被封鎖:之一時(shí),中斷響應(yīng)被封鎖: (1 1)CPUCPU正在處理同級(jí)的或更高優(yōu)先級(jí)的中斷正在處理同級(jí)的或更高優(yōu)先級(jí)的中斷。 (2 2)所查詢的機(jī)器周期所查詢的機(jī)器周期不是所當(dāng)前正在執(zhí)行指令的最后一不是所當(dāng)前正在執(zhí)行指令的最后一個(gè)機(jī)器周期個(gè)機(jī)器周期。只有在當(dāng)前指令執(zhí)行完畢后,才能進(jìn)行中斷。只有在當(dāng)前指令執(zhí)行完畢后,才能進(jìn)行中斷響應(yīng)。響應(yīng)。 (3 3)正在執(zhí)行的指令是正在執(zhí)行的指令是RETI(RETI(中斷返回指令中斷返回指令) )或是

32、或是訪問(wèn)訪問(wèn)IEIE或或IPIP的指令。的指令。需要再去執(zhí)行完一條指令,才能響應(yīng)新的中斷需要再去執(zhí)行完一條指令,才能響應(yīng)新的中斷請(qǐng)求。請(qǐng)求。如果存在上述三種情況之一,如果存在上述三種情況之一,CPUCPU需要等待高級(jí)中斷處理完需要等待高級(jí)中斷處理完或者當(dāng)前指令執(zhí)行完方可響應(yīng)中斷?;蛘弋?dāng)前指令執(zhí)行完方可響應(yīng)中斷。3 3、中斷響應(yīng)的主要過(guò)程:、中斷響應(yīng)的主要過(guò)程:首先由硬件自動(dòng)生成一條長(zhǎng)調(diào)用指令首先由硬件自動(dòng)生成一條長(zhǎng)調(diào)用指令: : LCALL addr16LCALL addr16接著就由接著就由CPUCPU執(zhí)行該指令執(zhí)行該指令, ,將將PCPC的內(nèi)容壓入堆棧以保護(hù)斷點(diǎn)的內(nèi)容壓入堆棧以保護(hù)斷點(diǎn),再

33、,再將將中斷入口地址裝入中斷入口地址裝入PCPC。各中斷源服務(wù)程序的各中斷源服務(wù)程序的入口地址固定入口地址固定: 中斷源中斷源 入口地址入口地址 外部中斷外部中斷0 0 00030003H H定時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T0 T0 000BH000BH外部中斷外部中斷1 1 00130013H H定時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T1T1001BH001BH串行口中斷串行口中斷00230023H H4 4、外部中斷的響應(yīng)時(shí)間、外部中斷的響應(yīng)時(shí)間 外部中斷的外部中斷的最短最短的響應(yīng)時(shí)間為的響應(yīng)時(shí)間為3 3個(gè)機(jī)器周期個(gè)機(jī)器周期 外部中斷響應(yīng)的外部中斷響應(yīng)的最長(zhǎng)最長(zhǎng)的響應(yīng)時(shí)間為的響應(yīng)時(shí)間為8 8個(gè)機(jī)器

34、周期個(gè)機(jī)器周期 在一個(gè)單一中斷的系統(tǒng)里,在一個(gè)單一中斷的系統(tǒng)里,MCS-51MCS-51單片機(jī)單片機(jī)對(duì)外部中斷請(qǐng)對(duì)外部中斷請(qǐng)求的響應(yīng)的時(shí)間總是在求的響應(yīng)的時(shí)間總是在3 38 8個(gè)機(jī)器周期個(gè)機(jī)器周期之間。之間。 若已在處理同級(jí)或更高級(jí)中斷,若已在處理同級(jí)或更高級(jí)中斷,響應(yīng)時(shí)間無(wú)法計(jì)算。響應(yīng)時(shí)間無(wú)法計(jì)算。5 5、中斷服務(wù)程序、中斷服務(wù)程序各中斷源服務(wù)程序的各中斷源服務(wù)程序的入口地址入口地址: 中斷源中斷源 入口地址入口地址 外部中斷外部中斷0 0 00030003H H定時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T0 T0 000BH000BH外部中斷外部中斷1 1 00130013H H定時(shí)器定時(shí)器/ /計(jì)數(shù)

35、器計(jì)數(shù)器T1T1001BH001BH串行口中斷串行口中斷00230023H H通常將中斷服務(wù)程序安排在程序存貯器的其他地址空間,通常將中斷服務(wù)程序安排在程序存貯器的其他地址空間,而在矢量地址的單元中安排一條轉(zhuǎn)移指令。而在矢量地址的單元中安排一條轉(zhuǎn)移指令。常用的常用的主程序結(jié)構(gòu)主程序結(jié)構(gòu):#include #include main()main() /設(shè)置中斷參數(shù)設(shè)置中斷參數(shù) while(1) while(1) void void funcfunc() interrupt n() interrupt n /中斷處理函數(shù)中斷處理函數(shù) C51C51中斷程序的編制中斷程序的編制 C51C51使用戶能編

36、寫(xiě)高效的中斷服務(wù)程序,編譯器在規(guī)定的中斷源的矢使用戶能編寫(xiě)高效的中斷服務(wù)程序,編譯器在規(guī)定的中斷源的矢量地址中放入無(wú)條件轉(zhuǎn)移指令,使量地址中放入無(wú)條件轉(zhuǎn)移指令,使CPUCPU響應(yīng)中斷后自動(dòng)地從矢量地響應(yīng)中斷后自動(dòng)地從矢量地址跳轉(zhuǎn)到中斷服務(wù)程序的實(shí)際地址,而無(wú)需用戶去安排。址跳轉(zhuǎn)到中斷服務(wù)程序的實(shí)際地址,而無(wú)需用戶去安排。中斷服務(wù)程序定義為函數(shù),函數(shù)的完整定義如下:中斷服務(wù)程序定義為函數(shù),函數(shù)的完整定義如下:返回值返回值 函數(shù)名函數(shù)名()() interrupt ninterrupt nusing musing m 其中必選項(xiàng)其中必選項(xiàng) interrupt ninterrupt n表示將函數(shù)聲明

37、為中斷服務(wù)函數(shù),表示將函數(shù)聲明為中斷服務(wù)函數(shù),n n為中斷源編號(hào),可以是為中斷源編號(hào),可以是0 03131間的整數(shù)間的整數(shù) ,不允許是帶運(yùn)算符,不允許是帶運(yùn)算符的表達(dá)式,的表達(dá)式,n n通常取以下值:通常取以下值:0 0 外部中斷外部中斷0 0;1 1 定時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器0 0溢出中斷溢出中斷2 2 外部中斷外部中斷1 1;3 3 定時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器1 1溢出中斷溢出中斷4 4 串行口發(fā)送與接收中斷串行口發(fā)送與接收中斷5 5 定時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器2 2中斷中斷 各可選項(xiàng)的意義如下:各可選項(xiàng)的意義如下:using musing m 定義函數(shù)使用的工作寄存器組。定

38、義函數(shù)使用的工作寄存器組。 m m的取值范圍為的取值范圍為0 03 3,可缺省。,可缺省。 它對(duì)目標(biāo)代碼的影響是:函數(shù)入口處將當(dāng)前它對(duì)目標(biāo)代碼的影響是:函數(shù)入口處將當(dāng)前寄存器保存,使用寄存器保存,使用 m m 指定的寄存器組,函數(shù)指定的寄存器組,函數(shù)退出時(shí)退出時(shí) 原寄存器組恢復(fù)。選不同的工作寄存原寄存器組恢復(fù)。選不同的工作寄存器組,可方便實(shí)現(xiàn)寄存器組的現(xiàn)場(chǎng)保護(hù)。器組,可方便實(shí)現(xiàn)寄存器組的現(xiàn)場(chǎng)保護(hù)。主程序設(shè)計(jì)主程序設(shè)計(jì) 用戶對(duì)中斷的控制和管理,實(shí)際是對(duì)用戶對(duì)中斷的控制和管理,實(shí)際是對(duì)4 4個(gè)與中斷有關(guān)的個(gè)與中斷有關(guān)的寄存器寄存器IEIE、TCONTCON、IPIP、SCONSCON進(jìn)行控制。這幾

39、個(gè)寄存器在單片進(jìn)行控制。這幾個(gè)寄存器在單片機(jī)復(fù)位時(shí)是清零的,因此必須根據(jù)需要對(duì)這幾個(gè)寄存器的有機(jī)復(fù)位時(shí)是清零的,因此必須根據(jù)需要對(duì)這幾個(gè)寄存器的有關(guān)位進(jìn)行預(yù)置,這些設(shè)置放在主程序中:關(guān)位進(jìn)行預(yù)置,這些設(shè)置放在主程序中:開(kāi)中斷總控開(kāi)關(guān)開(kāi)中斷總控開(kāi)關(guān)EAEA,置位中斷源的中斷允許位。置位中斷源的中斷允許位。對(duì)外部中斷對(duì)外部中斷INT0INT0、INT1INT1應(yīng)選擇中斷觸發(fā)方式。應(yīng)選擇中斷觸發(fā)方式。多個(gè)中斷源中斷,應(yīng)設(shè)定中斷優(yōu)先級(jí),預(yù)置多個(gè)中斷源中斷,應(yīng)設(shè)定中斷優(yōu)先級(jí),預(yù)置IPIP。#include#includemain()main() EA=1; / CPU EA=1; / CPU開(kāi)中斷開(kāi)中斷

40、 ET0=1; / ET0=1; /允許外中斷允許外中斷0 0產(chǎn)生中斷產(chǎn)生中斷 PX0=1; / PX0=1; /外中斷外中斷0 0為高級(jí)中斷為高級(jí)中斷 IT0=1; / IT0=1; /外中斷外中斷0 0為跳沿觸發(fā)方式為跳沿觸發(fā)方式 while(1); while(1); Int0()interrupt 0Int0()interrupt 0 P1=0X0FF; P1=0X0FF; 例例5-35-3 假設(shè)允許外部中斷假設(shè)允許外部中斷0 0中斷,并設(shè)定它為高級(jí)中斷,其中斷,并設(shè)定它為高級(jí)中斷,其它中斷源為低級(jí)中斷,采用跳沿觸發(fā)方式。它中斷源為低級(jí)中斷,采用跳沿觸發(fā)方式。中斷服務(wù)程序設(shè)計(jì)中斷服務(wù)程

41、序設(shè)計(jì)編寫(xiě)中斷服務(wù)程序,并注意用保護(hù)現(xiàn)編寫(xiě)中斷服務(wù)程序,并注意用保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng),以免中斷返回時(shí),丟場(chǎng)和恢復(fù)現(xiàn)場(chǎng),以免中斷返回時(shí),丟失原寄存器、累加器中的信息。失原寄存器、累加器中的信息。若要在執(zhí)行當(dāng)前中斷程序時(shí)禁止更若要在執(zhí)行當(dāng)前中斷程序時(shí)禁止更高優(yōu)先級(jí)中斷,可以采用軟件關(guān)高優(yōu)先級(jí)中斷,可以采用軟件關(guān)CPUCPU中斷,或禁止某中斷源中斷,在中中斷,或禁止某中斷源中斷,在中斷返回前再開(kāi)放中斷。斷返回前再開(kāi)放中斷。編程時(shí)候的注意事項(xiàng):編程時(shí)候的注意事項(xiàng):1 1、中斷服務(wù)函數(shù)不允許用于外部函數(shù);、中斷服務(wù)函數(shù)不允許用于外部函數(shù);2 2、中斷服務(wù)程序盡量簡(jiǎn)短。、中斷服務(wù)程序盡量簡(jiǎn)短。3 3、對(duì)于全

42、局變量,服務(wù)程序中如果修改了、對(duì)于全局變量,服務(wù)程序中如果修改了數(shù)值,退出出中斷后,數(shù)值保持被修改后數(shù)值,退出出中斷后,數(shù)值保持被修改后的數(shù)值。的數(shù)值。例例5-5.5-5.在圖中在圖中P1.4P1.4P1.7P1.7接有接有四個(gè)發(fā)光二極管,四個(gè)發(fā)光二極管,P1.0P1.0P1.3P1.3接有四個(gè)開(kāi)關(guān),消抖電路用于接有四個(gè)開(kāi)關(guān),消抖電路用于 產(chǎn)生中斷請(qǐng)求信號(hào),當(dāng)消抖電產(chǎn)生中斷請(qǐng)求信號(hào),當(dāng)消抖電路的開(kāi)關(guān)來(lái)回拔動(dòng)一次將產(chǎn)生路的開(kāi)關(guān)來(lái)回拔動(dòng)一次將產(chǎn)生一個(gè)下降沿信號(hào),通過(guò)一個(gè)下降沿信號(hào),通過(guò)INT0INT0向向CPUCPU申請(qǐng)中斷。申請(qǐng)中斷。要求:初時(shí)發(fā)光二極管全黑,要求:初時(shí)發(fā)光二極管全黑,每中斷一次

43、,每中斷一次,P1.0P1.0P1.3P1.3所接所接的開(kāi)關(guān)狀態(tài)反映到發(fā)光二極管的開(kāi)關(guān)狀態(tài)反映到發(fā)光二極管上,且要求開(kāi)關(guān)斷開(kāi)的對(duì)應(yīng)發(fā)上,且要求開(kāi)關(guān)斷開(kāi)的對(duì)應(yīng)發(fā)光二極管亮。光二極管亮。例例5-6 用用C C語(yǔ)言編程語(yǔ)言編程#include#includeint0() interrupt 0int0() interrupt 0 / /* *INT0INT0中斷函數(shù)中斷函數(shù)* */ / P1=0 x0f; / P1=0 x0f; /* *輸入端先置輸入端先置1 1,燈滅,燈滅* */ / P1=4; / P1=4; /* * 讀入開(kāi)關(guān)狀態(tài),并左移四讀入開(kāi)關(guān)狀態(tài),并左移四 位,使開(kāi)關(guān)反映在發(fā)光二極管上

44、位,使開(kāi)關(guān)反映在發(fā)光二極管上* */ / main()main() P1=0X0F; P1=0X0F; EA=1; / EA=1; /* *開(kāi)中斷總開(kāi)關(guān)開(kāi)中斷總開(kāi)關(guān)* */ / EX0=1; / EX0=1; /* *允許允許INT0INT0中斷中斷* */ / IT0=1; / IT0=1; /* *下降沿產(chǎn)生中斷下降沿產(chǎn)生中斷* */ / while(1); / while(1); /* *等待中斷等待中斷* */ / 例例5-7,正常工作時(shí),單片機(jī)的,正常工作時(shí),單片機(jī)的P1口的口的8個(gè)個(gè)LED循環(huán)左移,右循環(huán)左移,右移,外部中斷移,外部中斷0產(chǎn)生時(shí),產(chǎn)生時(shí),LED亮滅亮滅10次。次。#

45、include #include Void main()Void main() unsigned char i; unsigned char i; P1=0; P1=0; TCON=0X5; TCON=0X5; IE=0X85; IE=0X85; while(1) while(1) P1=0 x1; P1=0 x1; for(jfor(j=0;j8;j+)=0;j8;j+) delay(); delay(); P1=1; P1=1; P1=8; P1=8; for(jfor(j=0;j8;j+)=0;j=1; P1=1; void intx0_isr() interrupt 0void int

46、x0_isr() interrupt 0 intint i=0; i=0; for(ifor(i=0;i10;i+)=0;i10;i+) P1=0X0FF; P1=0X0FF; delay(); delay(); P1=0; P1=0; delay(); delay(); unsigned char a=P1;unsigned char a=P1;P1=a;P1=a;例例5-8,正常工作時(shí),單片機(jī)的,正常工作時(shí),單片機(jī)的P1口的口的8個(gè)個(gè)LED循環(huán)左移,外部中循環(huán)左移,外部中斷斷0產(chǎn)生時(shí),產(chǎn)生時(shí),1,3,5,7LED亮滅亮滅10次,外部中斷次,外部中斷1產(chǎn)生時(shí),產(chǎn)生時(shí),0,2,4,6LED亮滅

47、亮滅10次。次。#include #include Void main()Void main() unsigned char i=0 x1; unsigned char i=0 x1; P1=0; P1=0; TCON=0X5; TCON=0X5; IE=0X85; IE=0X85; P1=i; P1=i; while(1) while(1) i=1; i=1; if(iif(i=0)i=0 x1;=0)i=0 x1; P1=i; P1=i; delay(); delay(); void intx0_isr() interrupt 0void intx0_isr() interrupt 0 i

48、ntint i=0; i=0; for(ifor(i=0;i10;i+)=0;i10;i+) P1=0XAA; P1=0XAA; delay(); delay(); P1=0; P1=0; delay(); delay(); void intx1_isr() interrupt 1void intx1_isr() interrupt 1 intint i=0; i=0; for(ifor(i=0;i10;i+)=0;i10;i+) P1=0X55; P1=0X55; delay(); delay(); P1=0; P1=0; delay(); delay(); #include #includ

49、e unsigned unsigned intint LedNumValLedNumVal =0; =0;unsigned char code unsigned char code Disp_TabDisp_Tab = 0 x3f,0 x06,0 x5b,0 x4f, = 0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40; 0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40; / /* * 主程序主程序 * */ /void void main(voidmain(void) ) I

50、T0=1; / IT0=1; /下降沿觸發(fā)下降沿觸發(fā) EA=1;EA=1; EX1=1; EX1=1; while(1) while(1) P1=Disp_TabLedNumVal%10; P1=Disp_TabLedNumVal%10; / /* * INT1 INT1中斷函數(shù)中斷函數(shù)* */ /void void counter(voidcounter(void) interrupt 2) interrupt 2 EX1=0; EX1=0; LedNumValLedNumVal+; /+; /中斷計(jì)數(shù)中斷計(jì)數(shù) EX1=1;EX1=1; 中斷請(qǐng)求的撤消中斷請(qǐng)求的撤消CPU響應(yīng)中斷后,應(yīng)撤除該

51、中斷請(qǐng)求標(biāo)志,否則會(huì)再次中斷。響應(yīng)中斷后,應(yīng)撤除該中斷請(qǐng)求標(biāo)志,否則會(huì)再次中斷。1 1定時(shí)器定時(shí)器/ /計(jì)數(shù)器中斷請(qǐng)求計(jì)數(shù)器中斷請(qǐng)求的撤消的撤消 中斷請(qǐng)求被響應(yīng)后。硬件會(huì)中斷請(qǐng)求被響應(yīng)后。硬件會(huì)自動(dòng)清自動(dòng)清TF0TF0或或TF1TF1。2 2外部中斷請(qǐng)求外部中斷請(qǐng)求的撤消的撤消 (1 1)跳沿跳沿方式外部中斷請(qǐng)求的撤消是方式外部中斷請(qǐng)求的撤消是自動(dòng)撤消自動(dòng)撤消的。的。(2 2)電平電平方式外部中斷請(qǐng)求的撤消方式外部中斷請(qǐng)求的撤消: : 對(duì)電平觸發(fā)的外部中斷,對(duì)電平觸發(fā)的外部中斷,CPU在響應(yīng)中斷時(shí)也不會(huì)自動(dòng)清除在響應(yīng)中斷時(shí)也不會(huì)自動(dòng)清除中斷標(biāo)志,因此,在中斷標(biāo)志,因此,在CPU響應(yīng)中斷后應(yīng)立即

52、撤除響應(yīng)中斷后應(yīng)立即撤除INT1或或INT0的低電平信號(hào)。的低電平信號(hào)。P1.0P1.0端輸出一個(gè)負(fù)脈沖就可以使端輸出一個(gè)負(fù)脈沖就可以使D D觸發(fā)器置觸發(fā)器置“1”“1”,從而撤消了,從而撤消了低電平的中斷請(qǐng)求信號(hào)。低電平的中斷請(qǐng)求信號(hào)。所需的負(fù)脈沖可增加如下兩條指令得所需的負(fù)脈沖可增加如下兩條指令得到:到: P1=P1|0X01 P1=P1|0X01 ;P1.0P1.0為為“1”“1”P(pán)1=P1&0X0FEP1=P1&0X0FE;P1.0P1.0為為“0”“0” 電平方式的外部中斷請(qǐng)求信號(hào)的完全撤消,是通過(guò)軟硬件相結(jié)電平方式的外部中斷請(qǐng)求信號(hào)的完全撤消,是通過(guò)軟硬件相結(jié)合合的方法來(lái)實(shí)現(xiàn)的。的方法來(lái)實(shí)現(xiàn)的。3 3串行口中斷請(qǐng)求的撤消串行口中斷請(qǐng)求的撤消 響應(yīng)串行口的中斷后,響應(yīng)串行口的中斷后,CPUCPU無(wú)法知道是接收中無(wú)法知道是接收中斷還是發(fā)送中斷,沒(méi)有用硬件清除中斷請(qǐng)求標(biāo)志斷還是發(fā)送中斷,沒(méi)有用硬件清除中斷請(qǐng)求標(biāo)志TITI、RIRI,即這些中斷標(biāo)志,即這些中斷標(biāo)志 不會(huì)自動(dòng)清除,必須用軟件不會(huì)自動(dòng)清除,必須用軟件清除,這是在編串行通信中斷服務(wù)中應(yīng)該注意的。清除,這是在編串行通信中斷服務(wù)中應(yīng)該注意的。TI =0 TI =0 ;清清TITI標(biāo)志位標(biāo)志位RI =0 RI =0 ;清清RIRI標(biāo)志位標(biāo)志位5.4.3 5.4.3 多外部中斷源

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論