單片微機(jī)原理與接口技術(shù)(第2版):第7章 中斷與定時(shí)計(jì)數(shù)器_第1頁(yè)
單片微機(jī)原理與接口技術(shù)(第2版):第7章 中斷與定時(shí)計(jì)數(shù)器_第2頁(yè)
單片微機(jī)原理與接口技術(shù)(第2版):第7章 中斷與定時(shí)計(jì)數(shù)器_第3頁(yè)
單片微機(jī)原理與接口技術(shù)(第2版):第7章 中斷與定時(shí)計(jì)數(shù)器_第4頁(yè)
單片微機(jī)原理與接口技術(shù)(第2版):第7章 中斷與定時(shí)計(jì)數(shù)器_第5頁(yè)
已閱讀5頁(yè),還剩148頁(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、1中 斷 概 述2中斷處理過(guò)程380C51的中斷系統(tǒng)及其控制480C51的中斷源的擴(kuò)展580C51的定時(shí)/計(jì)數(shù)器及其應(yīng)用中斷系統(tǒng),中斷系統(tǒng),讓讓微處理器微處理器具備對(duì)外部的異步具備對(duì)外部的異步事件進(jìn)行處理的能力事件進(jìn)行處理的能力。對(duì)對(duì)整個(gè)系統(tǒng)的整個(gè)系統(tǒng)的穩(wěn)定性、健壯性穩(wěn)定性、健壯性至關(guān)重要,至關(guān)重要,同時(shí)也能大大同時(shí)也能大大提高處理器的效率提高處理器的效率,使得,使得系系統(tǒng)的應(yīng)用更加靈活多變統(tǒng)的應(yīng)用更加靈活多變。 定時(shí)定時(shí)、計(jì)數(shù)、計(jì)數(shù)是控制系統(tǒng)中兩個(gè)重是控制系統(tǒng)中兩個(gè)重要功能,在實(shí)際的控制系統(tǒng)中,經(jīng)常要功能,在實(shí)際的控制系統(tǒng)中,經(jīng)常需要對(duì)某些信號(hào)進(jìn)行需要對(duì)某些信號(hào)進(jìn)行定時(shí)掃描和定時(shí)定時(shí)掃描和定

2、時(shí)監(jiān)測(cè)監(jiān)測(cè),或者需要或者需要定時(shí)輸出某些控制信定時(shí)輸出某些控制信號(hào)號(hào)。1 1中斷中斷的的概念概念中斷中斷: :單片機(jī)單片機(jī)在執(zhí)行程序的過(guò)程中,當(dāng)出現(xiàn)異在執(zhí)行程序的過(guò)程中,當(dāng)出現(xiàn)異常情況或特殊請(qǐng)求時(shí),單片機(jī)機(jī)停止當(dāng)前程常情況或特殊請(qǐng)求時(shí),單片機(jī)機(jī)停止當(dāng)前程序的運(yùn)行,轉(zhuǎn)向?qū)@些異常情況或特殊請(qǐng)求序的運(yùn)行,轉(zhuǎn)向?qū)@些異常情況或特殊請(qǐng)求進(jìn)行處理,當(dāng)處理結(jié)束后再返回原程序的間進(jìn)行處理,當(dāng)處理結(jié)束后再返回原程序的間斷處,繼續(xù)執(zhí)行原程序,這一現(xiàn)象稱為斷處,繼續(xù)執(zhí)行原程序,這一現(xiàn)象稱為中斷中斷。中斷中斷是單片機(jī)實(shí)時(shí)處理內(nèi)部或外部事件的一是單片機(jī)實(shí)時(shí)處理內(nèi)部或外部事件的一種內(nèi)部機(jī)制。種內(nèi)部機(jī)制。主程序主程序:

3、:原來(lái)原來(lái)正常執(zhí)行的正常執(zhí)行的程程序序中斷服務(wù)子程序中斷服務(wù)子程序: :用來(lái)用來(lái)處理處理突發(fā)事件或故障的突發(fā)事件或故障的程序程序中斷源中斷源: :導(dǎo)致導(dǎo)致中斷產(chǎn)生的中斷產(chǎn)生的原原因因斷點(diǎn)斷點(diǎn): :主程序主程序被中斷源打斷,被中斷源打斷,轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序的轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序的位置位置圖圖7.1 7.1 中斷執(zhí)行過(guò)程中斷執(zhí)行過(guò)程圖圖(1)對(duì)外部信號(hào)的實(shí)時(shí)處理對(duì)外部信號(hào)的實(shí)時(shí)處理(2)故障處理故障處理 在單片機(jī)系統(tǒng)運(yùn)行過(guò)程中,會(huì)有很多在單片機(jī)系統(tǒng)運(yùn)行過(guò)程中,會(huì)有很多無(wú)法預(yù)測(cè)的故障或錯(cuò)誤產(chǎn)生,無(wú)法預(yù)測(cè)的故障或錯(cuò)誤產(chǎn)生,例如掉電,例如掉電,計(jì)算溢出等。計(jì)算溢出等。這些都是采用中斷的處理方這些都

4、是采用中斷的處理方式。式。從從中斷執(zhí)行的角度來(lái)看,可以分成兩類。中斷執(zhí)行的角度來(lái)看,可以分成兩類。(1 1)處理器預(yù)先考慮的中斷)處理器預(yù)先考慮的中斷 這些這些中斷的處理是處理器在設(shè)計(jì)之初就進(jìn)行中斷的處理是處理器在設(shè)計(jì)之初就進(jìn)行了考慮的。了考慮的。如如:除數(shù)為零中斷除數(shù)為零中斷、溢出中斷溢出中斷、掉電中斷掉電中斷、集成的接口電路集成的接口電路中斷中斷。這類中斷是我們常見(jiàn)的一類中斷,。這類中斷是我們常見(jiàn)的一類中斷,幾乎所有的微處理器都預(yù)先定義了這類中斷幾乎所有的微處理器都預(yù)先定義了這類中斷。此此類中斷發(fā)生后,硬件可以快速地找到相應(yīng)的中類中斷發(fā)生后,硬件可以快速地找到相應(yīng)的中斷服務(wù)子程序去執(zhí)行相應(yīng)

5、的處理斷服務(wù)子程序去執(zhí)行相應(yīng)的處理。不同的處理器不同的處理器對(duì)這類中斷的選擇是不一樣的。對(duì)這類中斷的選擇是不一樣的。(2 2)處理器沒(méi)有預(yù)先)處理器沒(méi)有預(yù)先考慮而考慮而需要擴(kuò)展的中斷需要擴(kuò)展的中斷 這這類中斷通常與具體的實(shí)際應(yīng)用有關(guān),類中斷通常與具體的實(shí)際應(yīng)用有關(guān),微微處理器不可能在設(shè)計(jì)芯片時(shí)就將所有可能的中處理器不可能在設(shè)計(jì)芯片時(shí)就將所有可能的中斷都考慮進(jìn)去,這涉及到成本問(wèn)題。斷都考慮進(jìn)去,這涉及到成本問(wèn)題。同時(shí),微同時(shí),微處理器的中斷資源也是有限的,處理器的中斷資源也是有限的,當(dāng)中斷資源不當(dāng)中斷資源不夠用,我們就需要擴(kuò)展不同的中斷夠用,我們就需要擴(kuò)展不同的中斷。如如:某系統(tǒng)同時(shí)需要:某系統(tǒng)

6、同時(shí)需要外部定時(shí)器中斷外部定時(shí)器中斷和和鍵盤(pán)鍵盤(pán)中中斷斷1簡(jiǎn)單中斷的處理過(guò)程簡(jiǎn)單中斷的處理過(guò)程 當(dāng)當(dāng)有中斷產(chǎn)生時(shí),有中斷產(chǎn)生時(shí),處理器在執(zhí)行完當(dāng)處理器在執(zhí)行完當(dāng)前指令后前指令后,如果允許響應(yīng)中斷的條件滿足,如果允許響應(yīng)中斷的條件滿足,處理器就會(huì)轉(zhuǎn)向中斷服務(wù)子程序處理器就會(huì)轉(zhuǎn)向中斷服務(wù)子程序,中斷系統(tǒng)中斷系統(tǒng)會(huì)自動(dòng)保存斷點(diǎn),會(huì)自動(dòng)保存斷點(diǎn),當(dāng)執(zhí)行完中斷當(dāng)執(zhí)行完中斷服務(wù)子程序后,再返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行原服務(wù)子程序后,再返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行原程序程序。(1 1)中斷源識(shí)別和中斷入口地址查找)中斷源識(shí)別和中斷入口地址查找 當(dāng)當(dāng)處理器收到中斷請(qǐng)求,并允許響應(yīng)時(shí),處理器收到中斷請(qǐng)求,并允許響應(yīng)時(shí),首先要做的就

7、是首先要做的就是識(shí)別中斷源識(shí)別中斷源,然后然后根據(jù)中斷根據(jù)中斷源找到相應(yīng)的中斷入口地址源找到相應(yīng)的中斷入口地址。 如何如何找到中斷入口地址,不同的處理器找到中斷入口地址,不同的處理器有不同的處理方法,有不同的處理方法,如在如在80X8680X86系列處理器中系列處理器中,過(guò)程,過(guò)程較為較為復(fù)雜復(fù)雜,但,但5151單片機(jī)這個(gè)過(guò)程被大大簡(jiǎn)化了單片機(jī)這個(gè)過(guò)程被大大簡(jiǎn)化了, 51 51單片機(jī)單片機(jī)只有只有5 5個(gè)中斷源個(gè)中斷源,中斷中斷程序入程序入口地址是固定的??诘刂肥枪潭ǖ?。 在在處理器找到中斷程序的入口地址后,就會(huì)暫處理器找到中斷程序的入口地址后,就會(huì)暫停主程序的執(zhí)行,轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序,停

8、主程序的執(zhí)行,轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序,為為了在執(zhí)行完中斷服務(wù)子程序后,能夠返回原程序了在執(zhí)行完中斷服務(wù)子程序后,能夠返回原程序斷點(diǎn)處接著執(zhí)行,就需要記憶斷點(diǎn)的位置斷點(diǎn)處接著執(zhí)行,就需要記憶斷點(diǎn)的位置。斷點(diǎn)斷點(diǎn)就是中斷返回后將要執(zhí)行的指令的地址就是中斷返回后將要執(zhí)行的指令的地址,保護(hù)保護(hù)斷點(diǎn)就是保護(hù)斷點(diǎn)地址斷點(diǎn)就是保護(hù)斷點(diǎn)地址,中斷發(fā)生時(shí),中斷發(fā)生時(shí),CPUCPU硬硬件自動(dòng)把這個(gè)地址值壓入堆棧,當(dāng)執(zhí)行完中斷子件自動(dòng)把這個(gè)地址值壓入堆棧,當(dāng)執(zhí)行完中斷子程序后,通過(guò)程序后,通過(guò)RETIRETI指令,再把這個(gè)地址值從堆棧指令,再把這個(gè)地址值從堆棧中彈出送給中彈出送給PCPC,從而實(shí)現(xiàn)中斷返回。,從而實(shí)

9、現(xiàn)中斷返回。(3 3)執(zhí)行中斷服務(wù))執(zhí)行中斷服務(wù)子程序子程序 中斷中斷服務(wù)子程序是中斷的主體服務(wù)子程序是中斷的主體。程序程序的具體內(nèi)容由用戶編程決定,不同的的具體內(nèi)容由用戶編程決定,不同的中斷,不同的應(yīng)用場(chǎng)合下,中斷服務(wù)子程中斷,不同的應(yīng)用場(chǎng)合下,中斷服務(wù)子程序的內(nèi)容不同。序的內(nèi)容不同?,F(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)保護(hù): : 中斷中斷發(fā)生后,在主程序執(zhí)行時(shí),很多計(jì)算的中間結(jié)發(fā)生后,在主程序執(zhí)行時(shí),很多計(jì)算的中間結(jié)果都是使用內(nèi)部寄存器來(lái)保存的,果都是使用內(nèi)部寄存器來(lái)保存的,在主程序和中斷在主程序和中斷服務(wù)子程序中很可能會(huì)用到同一個(gè)寄存器,服務(wù)子程序中很可能會(huì)用到同一個(gè)寄存器,比如我們比如我們最常用到的累加器最常

10、用到的累加器ACCACC,在轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序時(shí),在轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序時(shí),ACCACC中的值為中的值為38H38H,而在中斷服務(wù)子程序中,我們同樣也使用到,而在中斷服務(wù)子程序中,我們同樣也使用到了累加器了累加器ACCACC,如果在中斷返回時(shí),此時(shí)累加器,如果在中斷返回時(shí),此時(shí)累加器ACCACC中的值為中的值為56H56H,那么返回主程序后,就會(huì)導(dǎo)致主程序運(yùn)行出錯(cuò),那么返回主程序后,就會(huì)導(dǎo)致主程序運(yùn)行出錯(cuò)。因此因此在中斷服務(wù)子程序的開(kāi)始,需要把這些在中斷服務(wù)子程序的開(kāi)始,需要把這些共用寄存器的內(nèi)容進(jìn)行保護(hù),共用寄存器的內(nèi)容進(jìn)行保護(hù),這這就是就是現(xiàn)場(chǎng)?,F(xiàn)場(chǎng)保護(hù)。護(hù)。 保護(hù)保護(hù)現(xiàn)場(chǎng)和保護(hù)斷點(diǎn)

11、十分類似,所不同的現(xiàn)場(chǎng)和保護(hù)斷點(diǎn)十分類似,所不同的是,是,保護(hù)斷點(diǎn)是硬件自動(dòng)完成的保護(hù)斷點(diǎn)是硬件自動(dòng)完成的,而而保護(hù)保護(hù)現(xiàn)場(chǎng)則需要用戶編寫(xiě)程序來(lái)實(shí)現(xiàn)現(xiàn)場(chǎng)則需要用戶編寫(xiě)程序來(lái)實(shí)現(xiàn)。其中其中保護(hù)現(xiàn)場(chǎng)除了利用保護(hù)現(xiàn)場(chǎng)除了利用堆棧堆棧來(lái)進(jìn)行保護(hù)外,來(lái)進(jìn)行保護(hù)外,還有一種比較有效的方法就是還有一種比較有效的方法就是切換工作寄切換工作寄存器存器組。組。當(dāng)當(dāng)中斷發(fā)生后,在執(zhí)行中斷服務(wù)子程序之前,可以先中斷發(fā)生后,在執(zhí)行中斷服務(wù)子程序之前,可以先切換到同主程序不同工作寄存器組,在執(zhí)行完中斷服切換到同主程序不同工作寄存器組,在執(zhí)行完中斷服務(wù)子程序后,再切換回主程序使用的工作寄存器組。務(wù)子程序后,再切換回主程序使

12、用的工作寄存器組。(4 4)中斷)中斷返回返回 執(zhí)行執(zhí)行完中斷子程序后完中斷子程序后,需返回,需返回?cái)帱c(diǎn)處斷點(diǎn)處繼續(xù)執(zhí)行主程序繼續(xù)執(zhí)行主程序。在在80C5180C51單片機(jī)中,就是執(zhí)行單片機(jī)中,就是執(zhí)行RETIRETI指令指令,這時(shí)這時(shí),前面保護(hù)的斷點(diǎn),就會(huì)從堆棧中彈,前面保護(hù)的斷點(diǎn),就會(huì)從堆棧中彈出,送入到程序計(jì)數(shù)器出,送入到程序計(jì)數(shù)器PCPC中,繼續(xù)主程序中,繼續(xù)主程序的執(zhí)行。的執(zhí)行。2 2復(fù)雜中斷的執(zhí)行復(fù)雜中斷的執(zhí)行有有多個(gè)中斷源同時(shí)向處理器申請(qǐng)中斷多個(gè)中斷源同時(shí)向處理器申請(qǐng)中斷,CPUCPU該如何處理呢?該如何處理呢?(1 1)中斷優(yōu)先級(jí))中斷優(yōu)先級(jí)中斷優(yōu)先級(jí)中斷優(yōu)先級(jí):給給每個(gè)中斷源

13、賦予不同的優(yōu)先每個(gè)中斷源賦予不同的優(yōu)先級(jí),級(jí),在同一時(shí)刻,有多個(gè)中斷請(qǐng)求時(shí),中斷在同一時(shí)刻,有多個(gè)中斷請(qǐng)求時(shí),中斷系統(tǒng)按照中斷源優(yōu)先級(jí)的高低逐次響應(yīng),系統(tǒng)按照中斷源優(yōu)先級(jí)的高低逐次響應(yīng),即即優(yōu)先級(jí)高的中斷優(yōu)先處理,優(yōu)先級(jí)高的中斷優(yōu)先處理,處理完畢后,再處理完畢后,再處理優(yōu)先級(jí)低的中斷。處理優(yōu)先級(jí)低的中斷。(2 2)中斷)中斷嵌套嵌套 如果如果處理器正在處理一個(gè)中斷,這時(shí)又有處理器正在處理一個(gè)中斷,這時(shí)又有一個(gè)中斷產(chǎn)生了一個(gè)中斷產(chǎn)生了,那么,那么,處理器有處理器有2 2種處理方種處理方法。法。1)1):處理器不響應(yīng)新的中斷處理器不響應(yīng)新的中斷在中斷在執(zhí)行過(guò)程中,不響應(yīng)其他任何新在中斷在執(zhí)行過(guò)程中

14、,不響應(yīng)其他任何新的中的中斷請(qǐng)求斷請(qǐng)求。這種這種方法可以保證方法可以保證中斷處理中斷處理的及時(shí)性的及時(shí)性。但是但是這種機(jī)制有時(shí)這種機(jī)制有時(shí)會(huì)導(dǎo)致比較嚴(yán)重的后果會(huì)導(dǎo)致比較嚴(yán)重的后果,比如比如一些重要的中斷(如斷電)得不到及時(shí)處理,造成硬件損壞。一些重要的中斷(如斷電)得不到及時(shí)處理,造成硬件損壞。 2) 2):處理器處理器響應(yīng)新的中斷,響應(yīng)新的中斷,這時(shí)就會(huì)出現(xiàn)這時(shí)就會(huì)出現(xiàn)中斷嵌套中斷嵌套。圖圖7.2 7.2 中斷嵌套執(zhí)行過(guò)程圖中斷嵌套執(zhí)行過(guò)程圖中斷中斷嵌套提高了處理器處理嵌套提高了處理器處理能力能力理論上理論上,中斷嵌套的層數(shù)可以很多,但是嵌,中斷嵌套的層數(shù)可以很多,但是嵌套層數(shù)太多,由于每次

15、嵌套需要保護(hù)斷點(diǎn)與套層數(shù)太多,由于每次嵌套需要保護(hù)斷點(diǎn)與現(xiàn)場(chǎng),從而導(dǎo)致現(xiàn)場(chǎng),從而導(dǎo)致堆棧生長(zhǎng)得太大,堆棧生長(zhǎng)得太大,這對(duì)資源這對(duì)資源有限的單片機(jī)會(huì)造成較大的負(fù)擔(dān)有限的單片機(jī)會(huì)造成較大的負(fù)擔(dān);另外另外會(huì)導(dǎo)致會(huì)導(dǎo)致最早響應(yīng)的中斷服務(wù)子程序可能最早響應(yīng)的中斷服務(wù)子程序可能要等待很久,要等待很久,才能執(zhí)行完本身的中斷任務(wù),才能執(zhí)行完本身的中斷任務(wù),這明顯這明顯降低了中斷處理的及時(shí)性降低了中斷處理的及時(shí)性。在在80C5180C51單片機(jī)中,允許的最大嵌套層數(shù)為單片機(jī)中,允許的最大嵌套層數(shù)為2 2。5 5個(gè)中斷個(gè)中斷源源:即:即:INT0INT0外部中斷外部中斷0 0和和INT1INT1外部中斷外部中斷1

16、 1, T0T0定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0 0中斷和中斷和T1T1定時(shí)定時(shí)/ /計(jì)計(jì)數(shù)器數(shù)器1 1中斷中斷, RXRX、TXTX串行通信接口中斷串行通信接口中斷。_圖圖7.3 80C517.3 80C51中斷系統(tǒng)結(jié)構(gòu)圖中斷系統(tǒng)結(jié)構(gòu)圖6 6個(gè)中斷申請(qǐng)標(biāo)志個(gè)中斷申請(qǐng)標(biāo)志位位(1 1)TCONTCON中的中斷中的中斷標(biāo)志標(biāo)志TCON的地址是的地址是88H,可按位,可按位尋址尋址位地址位地址8FH 8EH 8DH 8CH 8BH 8AH 89H 88H位名稱位名稱TF1TR1 TF0 TR0IE1IT1IE0IT0TF1TF1:定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1(T1)1(T1)中斷請(qǐng)求標(biāo)志位,當(dāng)中斷請(qǐng)求

17、標(biāo)志位,當(dāng)計(jì)數(shù)器計(jì)數(shù)溢出時(shí),計(jì)數(shù)器計(jì)數(shù)溢出時(shí),在中斷被響應(yīng)后,轉(zhuǎn)向相在中斷被響應(yīng)后,轉(zhuǎn)向相應(yīng)的中斷服務(wù)程序,由硬件自動(dòng)置應(yīng)的中斷服務(wù)程序,由硬件自動(dòng)置TF1=0TF1=0,在在查詢方式下由軟件清除查詢方式下由軟件清除。TF0TF0:定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1(T0)1(T0)中斷請(qǐng)求標(biāo)志位中斷請(qǐng)求標(biāo)志位,操作與操作與TF1TF1相同相同。IE1IE1:外部中斷外部中斷1 1中斷請(qǐng)求標(biāo)志位中斷請(qǐng)求標(biāo)志位。在在外部中斷設(shè)為外部中斷設(shè)為下降沿觸發(fā)下降沿觸發(fā)時(shí)時(shí),INT1INT1引腳引腳的下降沿置的下降沿置該位為該位為1 1,中斷被響應(yīng)后,該位由,中斷被響應(yīng)后,該位由硬件自動(dòng)清零硬件自動(dòng)清零;在在外

18、部中斷設(shè)為外部中斷設(shè)為低電平觸發(fā)低電平觸發(fā)時(shí),當(dāng)時(shí),當(dāng)INT1INT1為低電平(為低電平(0 0)時(shí),時(shí),IE1IE1置置1 1,此時(shí),撤銷(xiāo)中斷的辦法只有,此時(shí),撤銷(xiāo)中斷的辦法只有把外部輸入把外部輸入的低電平變?yōu)楦唠娖降牡碗娖阶優(yōu)楦唠娖健T1IT1:外部中斷外部中斷1 1觸發(fā)方式選擇位觸發(fā)方式選擇位。當(dāng)當(dāng)IT1=1IT1=1,INT1INT1引腳引腳為為下降沿觸發(fā)方式下降沿觸發(fā)方式;IT1=0IT1=0,INT1INT1引腳引腳為為低電平觸發(fā)方式低電平觸發(fā)方式。_IE0IE0:外部中斷外部中斷0 0中斷請(qǐng)求標(biāo)志位。操作與中斷請(qǐng)求標(biāo)志位。操作與IE1IE1相同。相同。IT0IT0:外部中斷外部

19、中斷0 0觸發(fā)方式選擇位。功能與觸發(fā)方式選擇位。功能與IT1IT1相同相同。定時(shí)定時(shí)/ /計(jì)數(shù)器中斷計(jì)數(shù)器中斷:當(dāng)計(jì)數(shù)當(dāng)計(jì)數(shù)溢出時(shí),在最近機(jī)器周期的溢出時(shí),在最近機(jī)器周期的S5P2S5P2期間期間設(shè)置設(shè)置TF0TF0或或TF1TF1為為1 1。中斷請(qǐng)求標(biāo)志位置中斷請(qǐng)求標(biāo)志位置1 1后,后,會(huì)一直保持到中斷被響應(yīng),會(huì)一直保持到中斷被響應(yīng),然后由單片機(jī)的然后由單片機(jī)的內(nèi)部硬件自動(dòng)對(duì)它清零;內(nèi)部硬件自動(dòng)對(duì)它清零;在查詢方式下,則在查詢方式下,則只能用軟件清零只能用軟件清零。例如例如:設(shè)定設(shè)定時(shí)時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0 0工作在工作在1616位計(jì)數(shù)器模式,位計(jì)數(shù)器模式,當(dāng)當(dāng)計(jì)數(shù)到計(jì)數(shù)到FFFFHFFFF

20、H后,下一個(gè)計(jì)數(shù)(下降后,下一個(gè)計(jì)數(shù)(下降沿)一旦到來(lái),計(jì)數(shù)器就會(huì)設(shè)置中斷標(biāo)沿)一旦到來(lái),計(jì)數(shù)器就會(huì)設(shè)置中斷標(biāo)志位志位TF0=1TF0=1,同時(shí)同時(shí)計(jì)數(shù)結(jié)果變?yōu)橛?jì)數(shù)結(jié)果變?yōu)?000H0000H。圖7.4 計(jì)數(shù)器溢出示意圖外部中斷:兩兩個(gè)外部中斷口個(gè)外部中斷口,分別從,分別從INT0INT0(P3.2P3.2)和和INT1INT1(P3.3P3.3)引腳輸入)引腳輸入。這這兩個(gè)引腳是功能復(fù)用引腳,即可以作為普通兩個(gè)引腳是功能復(fù)用引腳,即可以作為普通I/OI/O口,也可作為外部中斷輸入引腳口,也可作為外部中斷輸入引腳。當(dāng)當(dāng)用作外部中斷輸入時(shí),其中斷觸發(fā)方式是可用作外部中斷輸入時(shí),其中斷觸發(fā)方式是可

21、選的選的。_在每個(gè)機(jī)器周期的S5P2期間掃描外部中掃描外部中斷輸入引腳的電平狀態(tài)斷輸入引腳的電平狀態(tài)。當(dāng)當(dāng)外部中斷設(shè)置為下降沿觸發(fā)時(shí),若處理器外部中斷設(shè)置為下降沿觸發(fā)時(shí),若處理器在連續(xù)在連續(xù)兩個(gè)機(jī)器周期掃描兩個(gè)機(jī)器周期掃描到到INT0INT0引腳引腳的電平先后為高電平的電平先后為高電平和低電平時(shí)和低電平時(shí),就會(huì)設(shè)置中斷標(biāo)志位,就會(huì)設(shè)置中斷標(biāo)志位IE0IE0為為1 1,表示外,表示外部有中斷申請(qǐng),部有中斷申請(qǐng),該中斷申請(qǐng)信號(hào)會(huì)一直保持,直到該中斷申請(qǐng)信號(hào)會(huì)一直保持,直到該中斷被響應(yīng)該中斷被響應(yīng),該標(biāo)志由內(nèi)部硬件自動(dòng)清除。_ 當(dāng)當(dāng)外部中斷設(shè)置為外部中斷設(shè)置為電平觸發(fā)方式時(shí)電平觸發(fā)方式時(shí),在外部,在

22、外部中斷中斷引腳變?yōu)橐_變?yōu)榈碗娖綍r(shí)低電平時(shí),IE0IE0變?yōu)樽優(yōu)? 1,并一直保,并一直保持為持為1 1,直到直到引腳的引腳的輸入變?yōu)楦唠娖綍r(shí),輸入變?yōu)楦唠娖綍r(shí),IE0IE0位位才清才清0 0。因此,低因此,低電平電平觸發(fā)時(shí)觸發(fā)時(shí),對(duì)電平持續(xù)時(shí)間要求:對(duì)電平持續(xù)時(shí)間要求:必須保持引腳必須保持引腳為低電平,直到中斷被響應(yīng)才能變?yōu)榈碗娖?,直到中斷被響?yīng)才能變高高,在在中斷返回前必須變成高電平,以撤銷(xiāo)中斷請(qǐng)中斷返回前必須變成高電平,以撤銷(xiāo)中斷請(qǐng)求求。若低電平若低電平時(shí)間太短時(shí)間太短,則可能導(dǎo)致則可能導(dǎo)致中斷不會(huì)被中斷不會(huì)被響應(yīng)響應(yīng);若若太長(zhǎng)太長(zhǎng),在中斷子程序執(zhí)行完后仍為低電平,在中斷子程序執(zhí)行完后

23、仍為低電平,則則IE0IE0會(huì)一直保持為會(huì)一直保持為1 1,這時(shí)會(huì)導(dǎo)致一次中斷,這時(shí)會(huì)導(dǎo)致一次中斷請(qǐng)求,得到請(qǐng)求,得到多次響應(yīng)多次響應(yīng)。外部中斷外部中斷1 1與外部中斷與外部中斷0 0操作相同。操作相同。(2 2)SCONSCON中的中斷標(biāo)志中的中斷標(biāo)志SCONSCON的地址是的地址是98H98H,可按位,可按位尋址尋址位地址位地址9FH9EH9DH9CH9BH 9AH 99H 98H位名稱位名稱 T1R1TI:串口發(fā)送數(shù)據(jù)中斷請(qǐng)求標(biāo)志位。串口發(fā)送數(shù)據(jù)中斷請(qǐng)求標(biāo)志位。RI:串口接收數(shù)據(jù)中斷請(qǐng)求標(biāo)志位串口接收數(shù)據(jù)中斷請(qǐng)求標(biāo)志位。TITI和和RIRI只要只要有一個(gè)為有一個(gè)為1 1,就可以向,就可以

24、向CPUCPU申請(qǐng)中申請(qǐng)中斷,其斷,其中斷入口地址是相同的,被認(rèn)為是一中斷入口地址是相同的,被認(rèn)為是一個(gè)中斷源個(gè)中斷源。因此因此當(dāng)發(fā)生串口中斷時(shí)當(dāng)發(fā)生串口中斷時(shí),我們,我們必須通過(guò)軟件必須通過(guò)軟件查詢兩個(gè)標(biāo)志位查詢兩個(gè)標(biāo)志位哪個(gè)為哪個(gè)為1 1,來(lái)確定是發(fā)送還,來(lái)確定是發(fā)送還是接收中斷,然后是接收中斷,然后軟件清除相應(yīng)的中斷請(qǐng)求軟件清除相應(yīng)的中斷請(qǐng)求標(biāo)志位標(biāo)志位。由此可知由此可知:在在每個(gè)機(jī)器周期的每個(gè)機(jī)器周期的S5P2S5P2期間,中斷請(qǐng)求標(biāo)志期間,中斷請(qǐng)求標(biāo)志位會(huì)因?yàn)橹袛嘣瓷暾?qǐng)中斷而設(shè)置成位會(huì)因?yàn)橹袛嘣瓷暾?qǐng)中斷而設(shè)置成1 1。如果如果有有1 1位或多位為位或多位為1 1,則表示在同一時(shí)間,則

25、表示在同一時(shí)間,有多個(gè)中斷源向處理器申請(qǐng)中斷。當(dāng)中斷標(biāo)有多個(gè)中斷源向處理器申請(qǐng)中斷。當(dāng)中斷標(biāo)志位為志位為1 1時(shí),處理器是否響應(yīng)這個(gè)中斷請(qǐng)求,時(shí),處理器是否響應(yīng)這個(gè)中斷請(qǐng)求,還需要后面的控制電路來(lái)決定。還需要后面的控制電路來(lái)決定。每個(gè)每個(gè)中斷源都有一個(gè)中斷源都有一個(gè)獨(dú)立的中斷控制開(kāi)獨(dú)立的中斷控制開(kāi)關(guān)關(guān),之后還有一個(gè)之后還有一個(gè)全局的中斷控制開(kāi)關(guān)全局的中斷控制開(kāi)關(guān)。只有只有這些中斷使能這些中斷使能控制位為控制位為1 1時(shí),相應(yīng)時(shí),相應(yīng)的子開(kāi)關(guān)和總開(kāi)關(guān)才會(huì)的子開(kāi)關(guān)和總開(kāi)關(guān)才會(huì)閉合閉合。IEIE的地址為的地址為A8HA8H,可按位,可按位尋址尋址位地址位地址AFHAEHADHACHABH AAH A

26、9H A8H位名稱位名稱EAESET1EX1ET0EX0EAEA:全局中斷使能控制位。全局中斷使能控制位。當(dāng)當(dāng)EA=1EA=1,單片機(jī)允,單片機(jī)允許各個(gè)中斷,此時(shí)還需要由其他中斷使能位來(lái)許各個(gè)中斷,此時(shí)還需要由其他中斷使能位來(lái)確定各個(gè)中斷的允許或禁止;確定各個(gè)中斷的允許或禁止;當(dāng)當(dāng)EA=0EA=0,單片機(jī),單片機(jī)禁止所有中斷,不響應(yīng)任何禁止所有中斷,不響應(yīng)任何中斷請(qǐng)求。中斷請(qǐng)求。ESES:串口中斷使能控制位。串口中斷使能控制位。ES=1ES=1,允許響應(yīng)串,允許響應(yīng)串口發(fā)送中斷和接收中斷;口發(fā)送中斷和接收中斷;ES=0ES=0,禁止響應(yīng)串口,禁止響應(yīng)串口發(fā)送中斷和接收中斷發(fā)送中斷和接收中斷。E

27、T1:定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器1中斷使能控制位。中斷使能控制位。ET1=1ET1=1,允許響應(yīng)定時(shí)允許響應(yīng)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1 1中斷;中斷;ET1=0ET1=0禁止響應(yīng)禁止響應(yīng)定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1 1中斷。中斷。EX1:外部中斷外部中斷1使能控制位。使能控制位。EX1=1EX1=1,允許響,允許響應(yīng)外部中斷應(yīng)外部中斷1 1;EX1=0EX1=0,禁止響應(yīng)外部中斷,禁止響應(yīng)外部中斷1 1。ET0:定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器0中斷使能控制位。中斷使能控制位。功能與功能與EX0EX0相同。相同。EX0:外部中斷外部中斷0使能控制位。使能控制位。功能與功能與EX1EX1相同。相同。4 4中斷優(yōu)

28、先權(quán)管理和中斷嵌套原則中斷優(yōu)先權(quán)管理和中斷嵌套原則 某個(gè)某個(gè)機(jī)器周期的機(jī)器周期的S5P2S5P2期間,若有期間,若有中斷請(qǐng)中斷請(qǐng)求標(biāo)志位有效時(shí),處理器會(huì)在下一個(gè)機(jī)器周求標(biāo)志位有效時(shí),處理器會(huì)在下一個(gè)機(jī)器周期的期的S6S6期間就會(huì)根據(jù)設(shè)置的中斷優(yōu)先等級(jí)響期間就會(huì)根據(jù)設(shè)置的中斷優(yōu)先等級(jí)響應(yīng)中斷,應(yīng)中斷,并在再下一個(gè)機(jī)器周期的并在再下一個(gè)機(jī)器周期的S1S1期間開(kāi)期間開(kāi)始執(zhí)行中斷服務(wù)子程序始執(zhí)行中斷服務(wù)子程序。 5151單片機(jī)支持單片機(jī)支持兩級(jí)中斷優(yōu)先級(jí)兩級(jí)中斷優(yōu)先級(jí),允許用允許用戶設(shè)置每個(gè)中斷源為高級(jí)或低級(jí)中斷。由中戶設(shè)置每個(gè)中斷源為高級(jí)或低級(jí)中斷。由中斷優(yōu)先級(jí)標(biāo)志位來(lái)設(shè)置。斷優(yōu)先級(jí)標(biāo)志位來(lái)設(shè)置。對(duì)

29、應(yīng)位為對(duì)應(yīng)位為1 1則設(shè)置為則設(shè)置為高優(yōu)先級(jí)中斷;高優(yōu)先級(jí)中斷;為為0 0則設(shè)置為低優(yōu)先級(jí)中斷則設(shè)置為低優(yōu)先級(jí)中斷。中斷裁決原則:高級(jí)高級(jí)中斷和低級(jí)中斷同時(shí)申請(qǐng)中斷時(shí),中斷和低級(jí)中斷同時(shí)申請(qǐng)中斷時(shí),優(yōu)先響應(yīng)高級(jí)中斷優(yōu)先響應(yīng)高級(jí)中斷;多個(gè)同級(jí)中斷多個(gè)同級(jí)中斷同時(shí)發(fā)生時(shí)同時(shí)發(fā)生時(shí),按自然,按自然優(yōu)先優(yōu)先級(jí)順序來(lái)級(jí)順序來(lái)處理處理。中斷嵌套原則:高級(jí)高級(jí)中斷可以打斷低級(jí)中斷中斷可以打斷低級(jí)中斷,低級(jí)低級(jí)中斷不能打斷高級(jí)中斷中斷不能打斷高級(jí)中斷,同級(jí)同級(jí)中斷不能打斷同級(jí)中斷不能打斷同級(jí)中斷中斷。中斷源中斷源中斷服務(wù)程序中斷服務(wù)程序入口地址入口地址中斷中斷標(biāo)志標(biāo)志自然優(yōu)自然優(yōu)先級(jí)順序先級(jí)順序外部中斷外部中

30、斷0 00003HIE0高高定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0 0000BHTF0外部中斷外部中斷1 10013HIE1定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1 1001BHTF1串行通信口串行通信口0023HRI或或TI低低IPIP的地址是的地址是B8HB8HPSPS:串口中斷優(yōu)先級(jí)設(shè)置位串口中斷優(yōu)先級(jí)設(shè)置位。當(dāng)當(dāng) PS=1PS=1時(shí),串口中斷設(shè)為高級(jí)中斷時(shí),串口中斷設(shè)為高級(jí)中斷; PS=0時(shí)時(shí),串口中斷設(shè)為低級(jí)中斷。PT1PT1:定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1 1中斷優(yōu)先級(jí)設(shè)置位。中斷優(yōu)先級(jí)設(shè)置位。PT0PT0:定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0 0中斷優(yōu)先級(jí)設(shè)置位。中斷優(yōu)先級(jí)設(shè)置位。PX1PX1:外部中斷外部中斷

31、1 1優(yōu)先級(jí)設(shè)置位。優(yōu)先級(jí)設(shè)置位。PX0PX0:外部中斷外部中斷0 0優(yōu)先級(jí)設(shè)置位。優(yōu)先級(jí)設(shè)置位。(1 1)首先)首先,EA=1EA=1。(2 2)中斷中斷允許子開(kāi)關(guān)允許子開(kāi)關(guān)(PX0PX0,PX1PX1,PT0PT0,PT1PT1,PSPS)為為1 1。(3 3)如果程序正在執(zhí)行讀如果程序正在執(zhí)行讀/ /寫(xiě)寫(xiě)寄存器寄存器IEIE和和IPIP指令指令,則執(zhí)行完該指令后,需要,則執(zhí)行完該指令后,需要再執(zhí)再執(zhí)行一條其他指令行一條其他指令才可以響應(yīng)中斷。才可以響應(yīng)中斷。(4 4)如果程序正在執(zhí)行返回指令,則執(zhí)行完如果程序正在執(zhí)行返回指令,則執(zhí)行完該指令后,需要再執(zhí)行一條其他指令才可以該指令后,需要再

32、執(zhí)行一條其他指令才可以響應(yīng)中斷,響應(yīng)中斷,這個(gè)特性常用來(lái)實(shí)現(xiàn)這個(gè)特性常用來(lái)實(shí)現(xiàn)硬件單步執(zhí)硬件單步執(zhí)行。行。(5 5)任何正在執(zhí)行的指令在任何正在執(zhí)行的指令在未完成前未完成前,中斷,中斷請(qǐng)求都不會(huì)響應(yīng)。請(qǐng)求都不會(huì)響應(yīng)。(6 6)考慮中斷優(yōu)先級(jí)或者中斷嵌套時(shí)帶來(lái)的考慮中斷優(yōu)先級(jí)或者中斷嵌套時(shí)帶來(lái)的延時(shí)。延時(shí)。 當(dāng)中斷當(dāng)中斷響應(yīng)條件都滿足時(shí),處理器響應(yīng)條件都滿足時(shí),處理器在當(dāng)前指令執(zhí)行完后的下一個(gè)機(jī)器周期在當(dāng)前指令執(zhí)行完后的下一個(gè)機(jī)器周期內(nèi),內(nèi),由硬件自動(dòng)執(zhí)行一條由硬件自動(dòng)執(zhí)行一條LCALLLCALL指令,指令,跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)子程序跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)子程序入口去入口去執(zhí)執(zhí)行中斷服務(wù)子程序行中

33、斷服務(wù)子程序。由于由于兩兩個(gè)相鄰的中斷入口地址很接近,個(gè)相鄰的中斷入口地址很接近,只有只有8 8個(gè)字節(jié)個(gè)字節(jié),在在實(shí)際應(yīng)用中,一般都將一個(gè)跳轉(zhuǎn)實(shí)際應(yīng)用中,一般都將一個(gè)跳轉(zhuǎn)指令指令( () )放置入口地址處,放置入口地址處,從而跳轉(zhuǎn)從而跳轉(zhuǎn)到其他程序空間去執(zhí)行較長(zhǎng)的中斷服務(wù)子程到其他程序空間去執(zhí)行較長(zhǎng)的中斷服務(wù)子程序:序:如如外部中斷外部中斷0 0: : ORG ORG 0003H0003H LJMP INT_EX0 LJMP INT_EX0當(dāng)當(dāng)80C5180C51單片機(jī)響應(yīng)中斷請(qǐng)求,跳轉(zhuǎn)到相應(yīng)單片機(jī)響應(yīng)中斷請(qǐng)求,跳轉(zhuǎn)到相應(yīng)的中斷處理子程序時(shí),的中斷處理子程序時(shí),斷點(diǎn)斷點(diǎn)保護(hù)保護(hù)由硬件自動(dòng)由硬件

34、自動(dòng)完成完成保護(hù)保護(hù)現(xiàn)場(chǎng)、恢復(fù)現(xiàn)場(chǎng)、中斷返回現(xiàn)場(chǎng)、恢復(fù)現(xiàn)場(chǎng)、中斷返回都需要用都需要用戶自己戶自己編寫(xiě)編寫(xiě)中斷服務(wù)中斷服務(wù)子程序的具體內(nèi)容要根據(jù)子程序的具體內(nèi)容要根據(jù)具體應(yīng)具體應(yīng)用來(lái)用來(lái)決定決定。此外,此外,是否允許中斷嵌套,是否允許中斷嵌套,在中斷服務(wù)子程序中設(shè)置在中斷服務(wù)子程序中設(shè)置EA=1EA=1,則允許中斷,則允許中斷嵌套嵌套,設(shè)置設(shè)置EA=0EA=0,則不允許中斷嵌套,則不允許中斷嵌套。還需要注意:還需要注意:在在保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)指令的指令的執(zhí)行過(guò)程中,如果執(zhí)行過(guò)程中,如果出現(xiàn)中斷則會(huì)導(dǎo)致程序混出現(xiàn)中斷則會(huì)導(dǎo)致程序混亂亂,因此保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)過(guò)程中需要關(guān)因此保護(hù)現(xiàn)

35、場(chǎng)和恢復(fù)現(xiàn)場(chǎng)過(guò)程中需要關(guān)閉全局中斷。閉全局中斷。 在在編寫(xiě)中斷服務(wù)子程序的代碼時(shí)編寫(xiě)中斷服務(wù)子程序的代碼時(shí),要盡量減少任務(wù)量,讓中斷服務(wù)子程序要盡量減少任務(wù)量,讓中斷服務(wù)子程序能夠快速執(zhí)行完畢,保證實(shí)時(shí)性能夠快速執(zhí)行完畢,保證實(shí)時(shí)性。例如,定時(shí)定時(shí)/ /計(jì)數(shù)器中斷時(shí),為了保證定時(shí)計(jì)數(shù)器中斷時(shí),為了保證定時(shí)時(shí)間的精確性,我們往往只在定時(shí)時(shí)間的精確性,我們往往只在定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器中斷服務(wù)子程序中編寫(xiě)重載初值的代碼,中斷服務(wù)子程序中編寫(xiě)重載初值的代碼,而而其他一些相關(guān)操作都放在主程序執(zhí)行,其他一些相關(guān)操作都放在主程序執(zhí)行,這樣這樣能最大限度的保證定時(shí)時(shí)間的精確度。能最大限度的保證定時(shí)時(shí)間的精確

36、度。中斷服務(wù)子程序的一般結(jié)構(gòu)中斷服務(wù)子程序的一般結(jié)構(gòu)舉例舉例ORG 0000HAJMP MAIN ;跳轉(zhuǎn)主程序跳轉(zhuǎn)主程序ORG 0003H; 外部中斷外部中斷0入口地址入口地址0003H AJMP INT_EX0 ;不同的中斷源使用不一樣的語(yǔ)句不同的中斷源使用不一樣的語(yǔ)句標(biāo)號(hào)標(biāo)號(hào)ORG 0030H;地址由用戶自己設(shè)定地址由用戶自己設(shè)定INT_EX0: ;此例中外部中斷此例中外部中斷0子程序從地址子程序從地址0030H開(kāi)始開(kāi)始CLR EA;保護(hù)現(xiàn)場(chǎng)之前保護(hù)現(xiàn)場(chǎng)之前,關(guān)中斷,防止保護(hù)現(xiàn)場(chǎng)時(shí),關(guān)中斷,防止保護(hù)現(xiàn)場(chǎng)時(shí),又有中斷又有中斷產(chǎn)生產(chǎn)生PUSH PSW;保護(hù)狀態(tài)寄存器保護(hù)狀態(tài)寄存器PSW,壓入堆

37、棧,壓入堆棧PUSH ACC;保護(hù)累加器,壓入堆棧保護(hù)累加器,壓入堆棧PUSH ;保護(hù)中斷服務(wù)子程序中其他使用到的寄存器保護(hù)中斷服務(wù)子程序中其他使用到的寄存器SETB EA;保護(hù)現(xiàn)場(chǎng)完成后保護(hù)現(xiàn)場(chǎng)完成后,開(kāi)中斷開(kāi)中斷 ;此處也可不寫(xiě)此處也可不寫(xiě),表示不允許中斷嵌套表示不允許中斷嵌套;中斷服務(wù)子程序的主體中斷服務(wù)子程序的主體,由用戶由用戶編寫(xiě)編寫(xiě)CLR EA;恢復(fù)現(xiàn)場(chǎng)之前恢復(fù)現(xiàn)場(chǎng)之前, ,關(guān)中關(guān)中斷斷POP ;恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)POP ACC ;恢復(fù)恢復(fù)ACC中的值,彈出中的值,彈出堆棧堆棧POP PSW ;恢復(fù);恢復(fù)PSW中的值,彈出堆棧中的值,彈出堆棧SETB EA ;中斷完成后中斷完成后,

38、,開(kāi)中斷開(kāi)中斷RETI;中斷返回中斷返回,斷點(diǎn)接續(xù)斷點(diǎn)接續(xù),中斷服務(wù)子程序結(jié)束中斷服務(wù)子程序結(jié)束MAIN: ; 主程序主程序8 8中斷撤銷(xiāo)中斷撤銷(xiāo)中斷請(qǐng)求中斷請(qǐng)求撤銷(xiāo)撤銷(xiāo)的的目的目的: :保證對(duì)于一次中斷請(qǐng)保證對(duì)于一次中斷請(qǐng)求信號(hào)只執(zhí)行一次中斷響應(yīng)。求信號(hào)只執(zhí)行一次中斷響應(yīng)。CPUCPU響應(yīng)中斷響應(yīng)中斷后,需要及時(shí)將中斷請(qǐng)求標(biāo)志清除,否則將后,需要及時(shí)將中斷請(qǐng)求標(biāo)志清除,否則將引起一個(gè)中斷信號(hào)觸發(fā)多次中斷響應(yīng)。引起一個(gè)中斷信號(hào)觸發(fā)多次中斷響應(yīng)。其中其中中斷撤銷(xiāo)一般分為中斷撤銷(xiāo)一般分為硬件自動(dòng)處理硬件自動(dòng)處理和和軟件清除軟件清除。硬件硬件自動(dòng)處理:自動(dòng)處理:對(duì)于對(duì)于邊沿觸發(fā)的外部中斷邊沿觸發(fā)的外

39、部中斷、定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器來(lái)說(shuō)來(lái)說(shuō),在,在CPUCPU響應(yīng)中斷后,將自響應(yīng)中斷后,將自動(dòng)清除該中斷請(qǐng)求的標(biāo)志位,無(wú)需軟件處理。動(dòng)清除該中斷請(qǐng)求的標(biāo)志位,無(wú)需軟件處理。軟件軟件清除中斷清除中斷:對(duì)于對(duì)于串行接口串行接口的中斷請(qǐng)求的中斷請(qǐng)求,必須必須用用軟件來(lái)軟件來(lái)人人工清除工清除。定時(shí)計(jì)數(shù)器在查詢方式時(shí)定時(shí)計(jì)數(shù)器在查詢方式時(shí)必須軟件必須軟件人工清除人工清除對(duì)于對(duì)于外部中斷,一般推薦采用外部中斷,一般推薦采用下降沿觸發(fā)下降沿觸發(fā)方方式,而不采用低電平觸發(fā)方式。式,而不采用低電平觸發(fā)方式。因?yàn)榈碗娖揭驗(yàn)榈碗娖接|發(fā)時(shí),有可能觸發(fā)電平在很長(zhǎng)一段時(shí)間內(nèi)觸發(fā)時(shí),有可能觸發(fā)電平在很長(zhǎng)一段時(shí)間內(nèi)都會(huì)保持

40、,這樣很容易引發(fā)再次觸發(fā)。都會(huì)保持,這樣很容易引發(fā)再次觸發(fā)。 而而當(dāng)外部中斷必須使用低電平觸發(fā)時(shí)當(dāng)外部中斷必須使用低電平觸發(fā)時(shí),中斷請(qǐng)求標(biāo)志位只與外部輸入信號(hào)有關(guān)中斷請(qǐng)求標(biāo)志位只與外部輸入信號(hào)有關(guān),實(shí)用案例:實(shí)用案例:在外部中斷輸入引腳和外部中斷在外部中斷輸入引腳和外部中斷源之間接一個(gè)具有異步置源之間接一個(gè)具有異步置1 1功能的功能的D D觸發(fā)觸發(fā)器器 在在外部中斷外部中斷0 0服務(wù)子程序的結(jié)尾部分加入如下代碼即可服務(wù)子程序的結(jié)尾部分加入如下代碼即可:SETB P3.7 ;異步置異步置Q腳為高電平腳為高電平,清除中斷申請(qǐng)清除中斷申請(qǐng)CLR P3.7 ;撤除異步置位信號(hào)撤除異步置位信號(hào),保證能響

41、應(yīng)保證能響應(yīng)新的中斷新的中斷中斷響應(yīng)時(shí)間:中斷響應(yīng)時(shí)間:從從中斷源發(fā)出中斷請(qǐng)中斷源發(fā)出中斷請(qǐng)求到處理器執(zhí)行該中斷服務(wù)子程序的求到處理器執(zhí)行該中斷服務(wù)子程序的這一段這一段時(shí)間時(shí)間。 中斷中斷源發(fā)出中斷請(qǐng)求后,源發(fā)出中斷請(qǐng)求后,在在下下個(gè)個(gè)機(jī)器周期機(jī)器周期的的S5P2S5P2期間相應(yīng)的中斷請(qǐng)求標(biāo)志位置期間相應(yīng)的中斷請(qǐng)求標(biāo)志位置1 1,在在再再下下一個(gè)機(jī)器周期的一個(gè)機(jī)器周期的S6S6期間,處理器會(huì)先判斷所有期間,處理器會(huì)先判斷所有中斷請(qǐng)求中哪個(gè)中斷的優(yōu)先級(jí)高,然后優(yōu)先級(jí)中斷請(qǐng)求中哪個(gè)中斷的優(yōu)先級(jí)高,然后優(yōu)先級(jí)最高的中斷才向處理器申請(qǐng)中斷最高的中斷才向處理器申請(qǐng)中斷。因此因此從中斷源申請(qǐng)中斷到處理器接

42、收到中從中斷源申請(qǐng)中斷到處理器接收到中斷,共需要斷,共需要1 1個(gè)機(jī)器周期的時(shí)間個(gè)機(jī)器周期的時(shí)間。當(dāng)接收到中斷請(qǐng)求后,下一個(gè)機(jī)器周期處理器當(dāng)接收到中斷請(qǐng)求后,下一個(gè)機(jī)器周期處理器是否跳轉(zhuǎn)到中斷服務(wù)子程序入口地址,還受到是否跳轉(zhuǎn)到中斷服務(wù)子程序入口地址,還受到以下影響:以下影響: 當(dāng)前機(jī)器周期內(nèi),處理器是不是正在執(zhí)行當(dāng)前機(jī)器周期內(nèi),處理器是不是正在執(zhí)行指令的最后一個(gè)機(jī)器周期,如果不是,則還指令的最后一個(gè)機(jī)器周期,如果不是,則還需要等到當(dāng)前指令執(zhí)行完成需要等到當(dāng)前指令執(zhí)行完成。例如例如: :正在正在執(zhí)行除法指令的第一個(gè)機(jī)器周期,執(zhí)行除法指令的第一個(gè)機(jī)器周期,則需要等待的機(jī)器周期數(shù)是則需要等待的機(jī)器

43、周期數(shù)是3 3個(gè)機(jī)器個(gè)機(jī)器周期。周期。 若當(dāng)前正在執(zhí)行若當(dāng)前正在執(zhí)行RETIRETI指令或者是其他讀寫(xiě)指令或者是其他讀寫(xiě)與中斷與中斷有關(guān)的寄存器有關(guān)的寄存器IE IE、IPIP的指令,則需要在的指令,則需要在執(zhí)行完該指令后,執(zhí)行完該指令后,再執(zhí)行一條指令再執(zhí)行一條指令,然后再,然后再轉(zhuǎn)入中斷服務(wù)子程序轉(zhuǎn)入中斷服務(wù)子程序。 當(dāng)當(dāng)上述情況沒(méi)有遇到或者已經(jīng)完成等待上述情況沒(méi)有遇到或者已經(jīng)完成等待后,后,會(huì)由硬件自動(dòng)執(zhí)行一個(gè)會(huì)由硬件自動(dòng)執(zhí)行一個(gè)長(zhǎng)跳轉(zhuǎn)長(zhǎng)跳轉(zhuǎn)LCALLLCALL指令指令(2 2個(gè)個(gè)周期周期指令)指令),跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)子跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)子程序入口地址,開(kāi)始執(zhí)行由用戶編寫(xiě)的中斷程序

44、入口地址,開(kāi)始執(zhí)行由用戶編寫(xiě)的中斷服務(wù)程序服務(wù)程序。 綜合綜合上述上述,從中斷申請(qǐng)到執(zhí)行第一條中斷從中斷申請(qǐng)到執(zhí)行第一條中斷服務(wù)程序的服務(wù)程序的最短時(shí)間是最短時(shí)間是3 3個(gè)時(shí)間周期個(gè)時(shí)間周期(優(yōu)先權(quán)掃(優(yōu)先權(quán)掃描描1 1個(gè)周期,個(gè)周期,LCALLLCALL指令指令2 2個(gè)周期個(gè)周期),最最長(zhǎng)的響長(zhǎng)的響應(yīng)時(shí)間為應(yīng)時(shí)間為8 8個(gè)機(jī)器個(gè)機(jī)器周期周期。除了除了必須的必須的3 3個(gè)機(jī)器周期外,個(gè)機(jī)器周期外,考慮考慮最壞最壞 的的情況情況,比如比如: :執(zhí)行執(zhí)行RETIRETI的第一個(gè)機(jī)器周期,那么還必須的第一個(gè)機(jī)器周期,那么還必須1 1個(gè)機(jī)個(gè)機(jī)器周期去等待器周期去等待RETIRETI指令完成,同時(shí),執(zhí)行

45、完指令完成,同時(shí),執(zhí)行完RETIRETI指令指令后還必須再執(zhí)行一個(gè)指令,這個(gè)指令最長(zhǎng)是一個(gè)后還必須再執(zhí)行一個(gè)指令,這個(gè)指令最長(zhǎng)是一個(gè)4 4機(jī)器機(jī)器周期指令,那么總共還需要額外等待周期指令,那么總共還需要額外等待5 5個(gè)機(jī)器周期,加個(gè)機(jī)器周期,加上必須的上必須的3 3個(gè)機(jī)器周期,我們可以估算出最長(zhǎng)的等待時(shí)個(gè)機(jī)器周期,我們可以估算出最長(zhǎng)的等待時(shí)間為間為8 8個(gè)機(jī)器周期個(gè)機(jī)器周期。所以所以中斷響應(yīng)時(shí)間為中斷響應(yīng)時(shí)間為 3-8 3-8 個(gè)機(jī)器周期個(gè)機(jī)器周期。當(dāng)然還有一種情況是,當(dāng)然還有一種情況是,目前正在執(zhí)行同級(jí)或者更高級(jí)目前正在執(zhí)行同級(jí)或者更高級(jí)別的中斷服務(wù)子程序,則需要等到中斷執(zhí)行完畢,等別的中斷

46、服務(wù)子程序,則需要等到中斷執(zhí)行完畢,等待的時(shí)間將更長(zhǎng)。待的時(shí)間將更長(zhǎng)。圖圖7.6 7.6 中斷中斷響應(yīng)時(shí)間分析響應(yīng)時(shí)間分析包括包括:打開(kāi)打開(kāi)全局中斷使能全局中斷使能位位打開(kāi)打開(kāi)使用到的中斷源的中斷使能使用到的中斷源的中斷使能位位根據(jù)根據(jù)具體需求設(shè)置各中斷源的優(yōu)先權(quán)等級(jí)具體需求設(shè)置各中斷源的優(yōu)先權(quán)等級(jí)等等。一般性一般性的的原則原則:就是就是用到哪個(gè)中斷,就設(shè)置哪用到哪個(gè)中斷,就設(shè)置哪個(gè)中斷相關(guān)的控制寄存器個(gè)中斷相關(guān)的控制寄存器。沒(méi)有用到的不去設(shè)沒(méi)有用到的不去設(shè)置,防止意外產(chǎn)生。置,防止意外產(chǎn)生。例如:某系統(tǒng)中需要某系統(tǒng)中需要使用到外部中斷使用到外部中斷1 1,下降,下降沿觸發(fā)方式,定時(shí)器沿觸發(fā)方

47、式,定時(shí)器0 0中斷,串口中斷,其他中斷,串口中斷,其他中斷關(guān)閉不用,串口中斷具有最高優(yōu)先級(jí)中斷關(guān)閉不用,串口中斷具有最高優(yōu)先級(jí)。則則其初始化其初始化代碼:代碼:SETB IT1 ; ;設(shè)置外部中斷設(shè)置外部中斷1 1下降沿觸發(fā)下降沿觸發(fā)SETB EX1 ; ;開(kāi)外部中斷開(kāi)外部中斷1 1使能子開(kāi)關(guān)使能子開(kāi)關(guān)SETB ET0 ;開(kāi)定時(shí)開(kāi)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0 0使能子開(kāi)關(guān)使能子開(kāi)關(guān)SETB ES ;開(kāi)串口中斷使能子開(kāi)關(guān)開(kāi)串口中斷使能子開(kāi)關(guān)SETB PS ;設(shè)置串口中斷為高優(yōu)先級(jí),其余中斷重啟設(shè)置串口中斷為高優(yōu)先級(jí),其余中斷重啟時(shí)默認(rèn)為低優(yōu)先級(jí),可以不設(shè)置時(shí)默認(rèn)為低優(yōu)先級(jí),可以不設(shè)置SETB EA

48、 ;開(kāi)全局中斷;開(kāi)全局中斷擴(kuò)展擴(kuò)展外部中斷源時(shí)有兩個(gè)方法外部中斷源時(shí)有兩個(gè)方法:使用使用定時(shí)定時(shí)/ /計(jì)數(shù)器來(lái)擴(kuò)展和使用查詢方式來(lái)計(jì)數(shù)器來(lái)擴(kuò)展和使用查詢方式來(lái)進(jìn)行擴(kuò)展進(jìn)行擴(kuò)展。其中其中定時(shí)定時(shí)/ /計(jì)數(shù)器擴(kuò)展的方法在介紹定時(shí)計(jì)數(shù)器擴(kuò)展的方法在介紹定時(shí)/ /計(jì)數(shù)器時(shí)詳細(xì)介紹計(jì)數(shù)器時(shí)詳細(xì)介紹,下面下面我們介紹我們介紹查詢方式擴(kuò)展外部中斷源查詢方式擴(kuò)展外部中斷源。圖圖7.7 7.7 中斷擴(kuò)展原理圖中斷擴(kuò)展原理圖參考代碼:ORG 0000HAJMP STARTORG 0013H ;外部中斷外部中斷1入口地址入口地址AJMP INT_EX1 ;不同的中斷源使用不一樣的語(yǔ)句標(biāo)號(hào)不同的中斷源使用不一樣的語(yǔ)句

49、標(biāo)號(hào)ORG 0030H ;外部中斷外部中斷1服務(wù)子程序開(kāi)始地址服務(wù)子程序開(kāi)始地址INT_EX1:CLR EA ;保護(hù)現(xiàn)場(chǎng)之前保護(hù)現(xiàn)場(chǎng)之前,關(guān)中斷關(guān)中斷PUSH ACC ;保護(hù)累加器保護(hù)累加器PUSH PSW ;保護(hù)狀態(tài)寄存器保護(hù)狀態(tài)寄存器PSWPUSH ;保護(hù)中斷服務(wù)子程序中其他使用到的寄保護(hù)中斷服務(wù)子程序中其他使用到的寄存器存器JNB P1.0,INT_EEX10;查詢擴(kuò)展外部中斷查詢擴(kuò)展外部中斷INT10JNB P1.1,INT_EEX11;查詢擴(kuò)展外部中斷查詢擴(kuò)展外部中斷INT11JNB P1.2,INT_EEX12;查詢擴(kuò)展外部中斷查詢擴(kuò)展外部中斷INT12JNB P1.3,INT_E

50、EX13;查詢擴(kuò)展外部中斷查詢擴(kuò)展外部中斷INT13END_INT_EX0: POP ; ;恢復(fù)現(xiàn)場(chǎng),注意彈出堆棧和壓入堆棧的恢復(fù)現(xiàn)場(chǎng),注意彈出堆棧和壓入堆棧的對(duì)應(yīng)關(guān)系對(duì)應(yīng)關(guān)系POP PSWPOP ACCSETB EA;中斷完成后中斷完成后,開(kāi)中斷開(kāi)中斷。RETI;中斷返回中斷返回,斷點(diǎn)接續(xù)斷點(diǎn)接續(xù),中斷服務(wù)子程中斷服務(wù)子程序結(jié)束序結(jié)束INT_EEX10:AJMP END_INT_EX0 INT_EEX11: ;擴(kuò)充外部中斷擴(kuò)充外部中斷1處理,根據(jù)實(shí)際情況編寫(xiě)處理,根據(jù)實(shí)際情況編寫(xiě)AJMP END_INT_EX0INT_EEX12: ;擴(kuò)充外部中斷擴(kuò)充外部中斷2處理,根據(jù)實(shí)際情況編寫(xiě)處理,根據(jù)

51、實(shí)際情況編寫(xiě)AJMP END_INT_EX0INT_EEX13: ;擴(kuò)充外部中斷擴(kuò)充外部中斷3處理,根據(jù)實(shí)際情況處理,根據(jù)實(shí)際情況編寫(xiě)編寫(xiě)AJMP END_INT_EX0ORG 0100HSTART:SETB EX1;打開(kāi)外部中斷打開(kāi)外部中斷0SETB EA;開(kāi)全局中斷開(kāi)全局中斷擴(kuò)展擴(kuò)展的外部中斷的外部中斷INT10INT10具有最高的優(yōu)先級(jí),具有最高的優(yōu)先級(jí),INT13INT13的優(yōu)先級(jí)最低的優(yōu)先級(jí)最低。需注意需注意:在在擴(kuò)充的外部中斷處理程序注意擴(kuò)充的外部中斷處理程序注意中斷撤銷(xiāo)的處理。中斷撤銷(xiāo)的處理。經(jīng)常用經(jīng)常用到到精確延時(shí)、定時(shí)掃描、統(tǒng)計(jì)事件的精確延時(shí)、定時(shí)掃描、統(tǒng)計(jì)事件的發(fā)生發(fā)生次數(shù)

52、、產(chǎn)生次數(shù)、產(chǎn)生一定頻率的聲音一定頻率的聲音等。等。常用常用3 3種種方法:方法: 硬件定時(shí)硬件定時(shí):使用:使用時(shí)基電路時(shí)基電路(如(如555555定時(shí)芯定時(shí)芯片)來(lái)組成硬件定時(shí)電路。這種方法需要額片)來(lái)組成硬件定時(shí)電路。這種方法需要額外的元器件,使得外的元器件,使得系統(tǒng)復(fù)雜,成本高系統(tǒng)復(fù)雜,成本高。且其定。且其定時(shí)值不能由軟件控制并修改,即此時(shí)值不能由軟件控制并修改,即此方法不可方法不可編程,調(diào)試?yán)щy編程,調(diào)試?yán)щy。 軟件定時(shí)軟件定時(shí):通常通過(guò)通常通過(guò)循環(huán)執(zhí)行一段程序來(lái)實(shí)循環(huán)執(zhí)行一段程序來(lái)實(shí)現(xiàn)的現(xiàn)的,優(yōu)點(diǎn)優(yōu)點(diǎn)是能非常方便修改定時(shí)時(shí)間,靈活是能非常方便修改定時(shí)時(shí)間,靈活性和通用性好性和通用性好

53、,缺點(diǎn)是缺點(diǎn)是以占用以占用CPUCPU時(shí)間為代價(jià),時(shí)間為代價(jià),大大降低了大大降低了CPUCPU的利用率,的利用率,且定時(shí)的精度不高,且定時(shí)的精度不高,一般應(yīng)用在定時(shí)時(shí)間較短和精度要求不高的場(chǎng)一般應(yīng)用在定時(shí)時(shí)間較短和精度要求不高的場(chǎng)合。合。 可編程定時(shí)可編程定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器:這種定時(shí)器的定時(shí)值這種定時(shí)器的定時(shí)值和定時(shí)范圍可以用軟件來(lái)確定修改,使用靈活,和定時(shí)范圍可以用軟件來(lái)確定修改,使用靈活,功能強(qiáng)。且不占用處理器時(shí)間,有自己獨(dú)立的功能強(qiáng)。且不占用處理器時(shí)間,有自己獨(dú)立的時(shí)鐘驅(qū)動(dòng)時(shí)鐘驅(qū)動(dòng)。例如:例如:可編程可編程芯片芯片82538253,82548254, ,MC6840MC6840。圖7

54、.8 80C51內(nèi)部定時(shí)/計(jì)數(shù)器結(jié)構(gòu)圖1 1定時(shí)定時(shí)/ /計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu)核心:核心:由由兩個(gè)兩個(gè)1616位加位加1 1計(jì)數(shù)寄存器計(jì)數(shù)寄存器T0T0和和T1T1組成。組成。每個(gè)計(jì)數(shù)寄存器都分成高每個(gè)計(jì)數(shù)寄存器都分成高8 8位和位和低低8 8位。位。T0T0(1616位)由位)由TH0TH0(8 8位)和位)和TL0TL0(8 8位)組成,字節(jié)地位)組成,字節(jié)地址分別是址分別是8CH8CH和和8AH8AH;T1T1(1616位)由位)由TH1TH1(8 8位)和位)和TL1TL1(8 8位)組成,字節(jié)地位)組成,字節(jié)地址分別是址分別是8DH8DH和和8BH8BH。時(shí)鐘時(shí)鐘源可以選擇源可以

55、選擇內(nèi)部時(shí)鐘源內(nèi)部時(shí)鐘源和和外部時(shí)鐘外部時(shí)鐘源源內(nèi)部?jī)?nèi)部時(shí)鐘時(shí)鐘源:源:時(shí)鐘脈沖時(shí)鐘脈沖序列由單片機(jī)內(nèi)部產(chǎn)生序列由單片機(jī)內(nèi)部產(chǎn)生,foscfosc/12/12;外部外部時(shí)鐘時(shí)鐘源:源:由由引腳引腳T0T0(P3.4P3.4)和)和T1(P3.5)T1(P3.5)輸輸入外部時(shí)鐘脈沖序列入外部時(shí)鐘脈沖序列。2.2.定時(shí)定時(shí)/ /計(jì)數(shù)器的計(jì)數(shù)器的功能功能時(shí)鐘時(shí)鐘源源:一一個(gè)為內(nèi)部時(shí)鐘源個(gè)為內(nèi)部時(shí)鐘源,由單片機(jī)內(nèi)部提供時(shí)由單片機(jī)內(nèi)部提供時(shí)鐘信號(hào),此時(shí)頻率固定,鐘信號(hào),此時(shí)頻率固定,常用作定時(shí)器常用作定時(shí)器;另另一個(gè)為外部時(shí)鐘源一個(gè)為外部時(shí)鐘源,此時(shí)外部時(shí)鐘信號(hào)此時(shí)外部時(shí)鐘信號(hào)通過(guò)相應(yīng)的引腳輸入到定時(shí)通

56、過(guò)相應(yīng)的引腳輸入到定時(shí)/ /計(jì)數(shù)器模塊,計(jì)數(shù)器模塊,此時(shí)既可做定時(shí)器也可做計(jì)數(shù)器,常用作此時(shí)既可做定時(shí)器也可做計(jì)數(shù)器,常用作計(jì)數(shù)器,計(jì)數(shù)器,用來(lái)統(tǒng)計(jì)外部事件發(fā)生的次數(shù)。用來(lái)統(tǒng)計(jì)外部事件發(fā)生的次數(shù)。(1)(1)計(jì)數(shù)功能計(jì)數(shù)功能 當(dāng)當(dāng)選擇外部時(shí)鐘源選擇外部時(shí)鐘源時(shí)時(shí),時(shí)鐘信號(hào),時(shí)鐘信號(hào)分別分別由由P3.4P3.4(T0T0)輸入輸入到到T0T0,P3.5P3.5(T1T1)輸入)輸入到到T1T1。 時(shí)鐘信號(hào)時(shí)鐘信號(hào)的下降沿有效,的下降沿有效,單片機(jī)在每個(gè)機(jī)單片機(jī)在每個(gè)機(jī)器周期的器周期的S5P2S5P2期間會(huì)采樣外部輸入時(shí)鐘信號(hào)的期間會(huì)采樣外部輸入時(shí)鐘信號(hào)的電平狀態(tài),當(dāng)連續(xù)兩次采樣得到的信號(hào)先后為電

57、平狀態(tài),當(dāng)連續(xù)兩次采樣得到的信號(hào)先后為“1”1”和和“0”0”時(shí),單片機(jī)認(rèn)為外部輸入了一個(gè)時(shí),單片機(jī)認(rèn)為外部輸入了一個(gè)下降沿,此時(shí)在下一個(gè)機(jī)器周期的下降沿,此時(shí)在下一個(gè)機(jī)器周期的S3P1S3P1期間計(jì)期間計(jì)數(shù)器的計(jì)數(shù)值加數(shù)器的計(jì)數(shù)值加1 1。外部輸入外部輸入的計(jì)數(shù)脈沖的最高頻率為單片機(jī)振蕩的計(jì)數(shù)脈沖的最高頻率為單片機(jī)振蕩頻率的頻率的1/241/24。即。即foscfosc/24/24。為了確保給定的電平在變化前至少被采樣一次,為了確保給定的電平在變化前至少被采樣一次,對(duì)外部輸入信號(hào)電平要求至少保持一個(gè)機(jī)器周對(duì)外部輸入信號(hào)電平要求至少保持一個(gè)機(jī)器周期。期。作作計(jì)數(shù)器使用時(shí),常用來(lái)統(tǒng)計(jì)外部事件的發(fā)

58、生計(jì)數(shù)器使用時(shí),常用來(lái)統(tǒng)計(jì)外部事件的發(fā)生次數(shù)次數(shù)。既既可以把計(jì)數(shù)初值設(shè)置為零,然后計(jì)數(shù)外部事可以把計(jì)數(shù)初值設(shè)置為零,然后計(jì)數(shù)外部事件的發(fā)生次數(shù),計(jì)數(shù)結(jié)束后,讀取計(jì)數(shù)結(jié)果供件的發(fā)生次數(shù),計(jì)數(shù)結(jié)束后,讀取計(jì)數(shù)結(jié)果供后續(xù)處理后續(xù)處理。也也可以把計(jì)數(shù)初值設(shè)置成和計(jì)數(shù)滿值相差一定可以把計(jì)數(shù)初值設(shè)置成和計(jì)數(shù)滿值相差一定數(shù)值的數(shù)值的數(shù)數(shù)例如例如:1616位定時(shí)位定時(shí)/ /計(jì)數(shù)器的計(jì)數(shù)溢出值為計(jì)數(shù)器的計(jì)數(shù)溢出值為6553665536,我們可以把計(jì)數(shù),我們可以把計(jì)數(shù)初值設(shè)置為初值設(shè)置為6553465534,那么當(dāng)外部事件發(fā)生那么當(dāng)外部事件發(fā)生2 2次(外部時(shí)鐘信號(hào)輸次(外部時(shí)鐘信號(hào)輸入入2 2個(gè)下降沿)時(shí),計(jì)數(shù)

59、器溢出,產(chǎn)生中斷個(gè)下降沿)時(shí),計(jì)數(shù)器溢出,產(chǎn)生中斷去進(jìn)行相關(guān)處理。去進(jìn)行相關(guān)處理。(2 2)定時(shí)功能)定時(shí)功能選擇選擇內(nèi)部時(shí)鐘內(nèi)部時(shí)鐘源,時(shí)鐘信號(hào)為源,時(shí)鐘信號(hào)為foscfosc/12/12,如果單片機(jī)如果單片機(jī)選擇選擇6MHz6MHz時(shí)鐘,則計(jì)數(shù)時(shí)鐘周時(shí)鐘,則計(jì)數(shù)時(shí)鐘周期期為:61122s6 10T 作定時(shí)器時(shí),要作定時(shí)器時(shí),要計(jì)算定時(shí)計(jì)算定時(shí)/ /計(jì)數(shù)器的初值計(jì)數(shù)器的初值,然后然后啟動(dòng)定時(shí)啟動(dòng)定時(shí)。當(dāng)。當(dāng)定時(shí)時(shí)間到,產(chǎn)生中斷或定時(shí)時(shí)間到,產(chǎn)生中斷或者軟件查詢等待定時(shí)結(jié)束者軟件查詢等待定時(shí)結(jié)束。定時(shí)定時(shí)/ /計(jì)數(shù)器的控制寄存器和模式寄存器計(jì)數(shù)器的控制寄存器和模式寄存器(1 1)工作方式寄存器

60、工作方式寄存器TMODTMOD地址地址是是89H89H,不能按位尋址,不能按位尋址,復(fù)位,復(fù)位后后TMODTMOD的的所有位均清零所有位均清零。定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1 1定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0 0D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0名名稱稱GATEGATEC/TC/TM1M1M0M0GATEGATEC/TC/TM1M1M0M0_GATE:計(jì)數(shù)器門(mén)控制位計(jì)數(shù)器門(mén)控制位,用來(lái)決定定時(shí)用來(lái)決定定時(shí)/ /計(jì)數(shù)計(jì)數(shù)器的啟動(dòng)是否受外部中斷輸入器的啟動(dòng)是否受外部中斷輸入引腳引腳INTxINTx(x=1(x=1或或0 0) )輸入輸入電平控制電平控制。當(dāng)當(dāng)GATE=0時(shí)

溫馨提示

  • 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)論