




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第4章
單片機的中斷系統(tǒng)從應(yīng)用的角度重點講述MCS-51單片機中斷系統(tǒng)的結(jié)構(gòu)、工作原理、實現(xiàn)過程和C語言編程方法。第4章
單片機的中斷系統(tǒng)中斷系統(tǒng)的基本概念和基本結(jié)構(gòu)4.1中斷系統(tǒng)的控制與實現(xiàn)4.2中斷系統(tǒng)的處理過程4.3中斷系統(tǒng)的應(yīng)用4.44.1.1中斷的基本概念當(dāng)CPU正在處理某件事情的時候,單片機外部或內(nèi)部發(fā)生的某一事件請求CPU迅速去處理。CPU暫時中止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件。事件處理完畢后,CPU再回到剛剛被暫停的地方繼續(xù)原來的工作。上述過程叫做中斷。4.1中斷系統(tǒng)的基本概念和基本結(jié)構(gòu)能引起CPU產(chǎn)生中斷的事件稱為中斷源。中斷源向CPU提出的處理請求,稱為中斷請求。CPU接受中斷請求,暫時中止自身的事情轉(zhuǎn)去處理事件的過程,稱為中斷響應(yīng)過程。CPU對事件的整個處理過程,稱為中斷服務(wù)。為實現(xiàn)中斷而編寫的服務(wù)程序叫做中斷服務(wù)程序。事件處理完畢,再回到原來被中斷的地方,稱為中斷返回。單片機是通過相應(yīng)的硬件電路和軟件設(shè)置來完成中斷功能的,所以將能完成中斷功能的硬件系統(tǒng)和軟件系統(tǒng)統(tǒng)稱為中斷系統(tǒng)。4.1.1中斷的基本概念MCS-51單片機的中斷系統(tǒng)包括5個中斷源、2個中斷優(yōu)先級,4個用于中斷控制的寄存器IE、IP、TCON和SCON。
4.1.2中斷系統(tǒng)的基本結(jié)構(gòu)MCS-51單片機的中斷系統(tǒng)包括5個中斷源、2個中斷優(yōu)先級,4個用于中斷控制的寄存器IE、IP、TCON和SCON。
4.1.2中斷系統(tǒng)的基本結(jié)構(gòu)INT0—外部中斷請求0,由引腳P3.2提供,中斷請求標(biāo)志為IE0,由IT0選擇其有效方式。INT1—外部中斷請求1,由引腳P3.3提供,中斷請求標(biāo)志為IE1,由IT1選擇其有效方式。T0—定時器/計數(shù)器T0溢出中斷請求,中斷請求標(biāo)志為TF0。T1—定時器/計數(shù)器T1溢出中斷請求,中斷請求標(biāo)志為TF1。TxD/RxD—串行中斷請求,中斷請求標(biāo)志為TI或RI。MCS-51單片機通過中斷請求標(biāo)志寄存器TCON、串行口控制寄存器SCON、中斷允許控制寄存器IE和中斷優(yōu)先級控制寄存器IP對中斷實現(xiàn)控制。4.2.1中斷請求控制1.TCON中的中斷標(biāo)志位
D7D6D5D4D3D2D1D0
(88H)8FH8EH8DH8CH8BH8AH89H88HTCONTF1TF0IE1IT1IE0IT04.2中斷系統(tǒng)的控制與實現(xiàn)①IT0—外部中斷0觸發(fā)方式控制位當(dāng)IT0=0時,外部中斷0為電平觸發(fā)方式當(dāng)IT0=1時,外部中斷0為邊沿觸發(fā)方式與中斷有關(guān)的標(biāo)志位的含義如下:電平觸發(fā)方式時,外部中斷源的有效低電平必須保持到請求獲得響應(yīng)時為止,否則就會漏掉;在中斷服務(wù)結(jié)束之前,中斷源的有效低電平必須撤除,否則中斷返回之后將再次產(chǎn)生中斷。邊沿觸發(fā)方式時,在相繼兩次采樣中,先采樣到外部中斷輸入為高電平,下一個周期采樣到為低電平,則置位中斷申請標(biāo)志IE0。若CPU暫時不能響應(yīng),中斷申請標(biāo)志也不會丟失,直到CPU響應(yīng)此中斷時才清“0”。4.2.1中斷請求控制②IE0—外部中斷0的中斷請求標(biāo)志位當(dāng)CPU檢測到引腳上出現(xiàn)有效的中斷信號時(若IT0=0,且檢測到引腳為低電平時;若IT0=1,且檢測到引腳當(dāng)出現(xiàn)負(fù)跳變時),IE0由硬件置“1”,向CPU申請中斷。③IT1—外部中斷1觸發(fā)方式控制位其意義與IT0類似。④IE1—外部中斷1的中斷請求標(biāo)志位其意義與IE0類似。⑤TF0—T0溢出中斷請求標(biāo)志位當(dāng)啟動定時器/計數(shù)器T0計數(shù)后,T0從初值開始加1計數(shù),當(dāng)最高位產(chǎn)生溢出時,TF0由硬件置“1”,向CPU申請中斷。CPU響應(yīng)TF0中斷時,由硬件清“0”TF0。⑥TF1—T1溢出中斷請求標(biāo)志位功能和TF0類似。4.2.1中斷請求控制①TI—串行口發(fā)送中斷標(biāo)志位每當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)后,TI由硬件自動置“1”。CPU響應(yīng)該中斷時,不能自動清除TI,必須用軟件對TI標(biāo)志位清“0”。②RI—串行口接收中斷標(biāo)志位每當(dāng)串行口接收完一幀串行數(shù)據(jù)后,RI由硬件自動置“1”。CPU響應(yīng)該中斷時,不能自動清除RI,必須用軟件對RI標(biāo)志位清“0”。2.SCON中的中斷標(biāo)志位D7D6D5D4D3D2D1D0(98H)9FH9EH9DH9CH9BH9AH99H98HSCONTIRI4.2.1中斷請求控制MCS-51單片機的中斷系統(tǒng)包括5個中斷源、2個中斷優(yōu)先級,4個用于中斷控制的寄存器IE、IP、TCON和SCON。
4.1.2中斷系統(tǒng)的基本結(jié)構(gòu)中斷源的開放和屏蔽由IE控制(1,開放;0,禁止)D7D6D5D4D3D2D1D0(A8H)AFHAEHADHACHABHAAHA9HA8HIEEAESET1EX1ET0EX04.2.2中斷允許控制復(fù)位后,IE各位被復(fù)位成“0”狀態(tài),所有中斷請求被禁止。若使某一個中斷源被允許中斷,除了IE相應(yīng)的位的被置“1”,還必須使EA位=1。改變IE的內(nèi)容,既可用字節(jié)操作指令來編寫,也可以由位操作指令來實現(xiàn)。MCS-51單片機的中斷系統(tǒng)包括5個中斷源、2個中斷優(yōu)先級,4個用于中斷控制的寄存器IE、IP、TCON和SCON。
4.1.2中斷系統(tǒng)的基本結(jié)構(gòu)MCS-51有兩個中斷優(yōu)先級,可實現(xiàn)兩級中斷嵌套。兩級中斷嵌套的過程如下所示:4.2.3中斷優(yōu)先級控制中斷優(yōu)先級遵循的原則:低優(yōu)先級中斷請求不得打斷高優(yōu)先級的中斷服務(wù);但高優(yōu)先級中斷請求可以打斷低優(yōu)先級的中斷服務(wù)。任何一種中斷(不管是高級還是低級),一旦得到響應(yīng),不會再被它的同級中斷源所中斷。中斷優(yōu)先級由IP控制(1,高級;0,低級)
D7D6D5D4D3D2D1D0(B8H)BFHBEHBDHBCHBBHBAHB9HB8HIPPSPT1PX1PT0PX0
復(fù)位后,IP清0,即全部設(shè)置為低優(yōu)先級中斷。4.2.3中斷優(yōu)先級控制同一優(yōu)先級的自然順序(自高至低):INT0、T0、INT1、T1、串口。
MCS-51的中斷系統(tǒng)有兩個不可尋址的“優(yōu)先級激活觸發(fā)器”:一個用來指示某高優(yōu)先級的中斷正在執(zhí)行,所有后來的中斷均被阻止;另一個用來指示某低優(yōu)先級的中斷正在執(zhí)行,所有同級中斷都被阻止,但不阻斷高優(yōu)先級的中斷請求。中斷處理過程可分3個階段:中斷響應(yīng)、中斷處理和中斷返回。4.3.1中斷響應(yīng)1.中斷響應(yīng)條件①有中斷源發(fā)出中斷請求②中斷總允許位EA=1③申請中斷的中斷源的中斷允許位為1④無同級或更高級中斷正在被服務(wù)⑤當(dāng)前指令已執(zhí)行到最后一個機器周期⑥若當(dāng)前正在執(zhí)行的指令是RETI或是訪問IE、IP的指令,該指令以及緊接著的另一條指令已執(zhí)行完。4.3中斷系統(tǒng)的處理過程2.中斷響應(yīng)過程將相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器置1(阻斷后來同級或低級中斷)執(zhí)行硬件LCALL指令(PC入棧,中斷服務(wù)程序入口址送PC
)執(zhí)行中斷服務(wù)程序
4.3.1中斷響應(yīng)各中斷源的入口地址如右表所示:中斷源入口地址INT00003HT0000BHINT10013HT1001BHRxD/TxD0023H狀態(tài)觸發(fā)器的復(fù)位由中斷返回指令RETI控制3.中斷響應(yīng)時間中斷響應(yīng)時間最短為3個機器周期受阻時要附加3~5個機器周期(無同級或高級中斷正進行)
查詢周期不是當(dāng)前指令的最后機器周期(如MUL,+3)查詢周期恰逢RETI類指令(且后跟MUL指令+5)所以,中斷響應(yīng)時間最長為8個機器周期4.3.1中斷響應(yīng)4.中斷請求的撤銷中斷請求被響應(yīng)后,要及時撤銷中斷請求,否則會引起重復(fù)響應(yīng)。1)定時器/計數(shù)器中斷請求的撤銷
中斷請求被響應(yīng)后,硬件自動將中斷請求標(biāo)志位TF0或TF1清“0”
,因此定時器/計數(shù)器中斷請求是自動撤銷的。2)外部中斷請求的撤銷該中斷請求的撤銷,包括中斷標(biāo)志位的清“0”和外中斷信號的撤銷。邊沿觸發(fā)方式:中斷被響應(yīng)后,
IE0或IE1由硬件自動清“0”;由于跳沿信號過后就消失了,所以外部中斷請求也是自動撤銷的。4.3.1中斷響應(yīng)
電平觸發(fā)方式:中斷被響應(yīng)后,IE0或IE1由硬件自動清“0”;但中斷請求信號的低電平可能繼續(xù)存在,在以后的機器采樣中,又會把已清“0”的IE0或IE1重新置“1”。要徹底解決電平方式外部中斷請求的撤銷,需在中斷響應(yīng)后把中斷請求信號引腳從低電平強制改變?yōu)楦唠娖?。因為CPU無法直接干預(yù)外電路,所以在引腳處用硬件電路(再配合相應(yīng)的軟件)來撤銷外電路過期的中斷請求。為實現(xiàn)上圖所示的撤消中斷請求功能,需要在中斷服務(wù)程序中加如下兩條指令:P1|=0x01;//將P1.0位置1P1&=0xfe;//再將P1.0位清04.3.1中斷響應(yīng)3)串行口中斷請求的撤銷串行口中斷被響應(yīng)后,CPU無法知道是接收中斷還是發(fā)送中斷,還需測試這兩個中斷標(biāo)志位的狀態(tài),以判定是接收操作還是發(fā)送操作。所以串行口中斷請求的撤銷只能使用軟件方法,即在中斷服務(wù)程序中用如下指令清除標(biāo)志位:
TI=0;//清TI標(biāo)志位RI=0;//清RI標(biāo)志位4.3.1中斷響應(yīng)中斷處理包括兩部分內(nèi)容:保護現(xiàn)場和為中斷源服務(wù)?,F(xiàn)場:中斷時刻單片機中某些寄存器和存儲器單元中的數(shù)據(jù)或狀態(tài)。保護現(xiàn)場:將現(xiàn)場送入堆棧保存?,F(xiàn)場恢復(fù):從堆棧彈出保存的現(xiàn)場。采用匯編語言編寫中斷程序時,應(yīng)該根據(jù)中斷處理程序的具體情況來決定保護哪些內(nèi)容。采用C51編寫中斷服務(wù)函數(shù)時可不必考慮這些問題。4.3.2中斷處理中斷服務(wù)程序最后指令必須是RETI,其功能:將斷點從堆棧彈送PC,CPU從原斷點繼續(xù)執(zhí)行將相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器清0,恢復(fù)原來工作狀態(tài)
注意采用匯編語言編程時,不能用RET代替RETI。
4.3.3中斷返回中斷源中斷請求
標(biāo)志位名稱置位條件置位方法清0方法中斷方式查詢方式INT0IE0單片機12引腳輸入有效信號硬件自動置位硬件自動清0軟件編程清0INT1IE1單片機13引腳輸入有效信號硬件自動置位硬件自動清0軟件編程清0T0TF0計數(shù)器/定時器0產(chǎn)生計數(shù)溢出(計滿)硬件自動置位硬件自動清0軟件編程清0T1TF1計數(shù)器/定時器1產(chǎn)生計數(shù)溢出(計滿)硬件自動置位硬件自動清0軟件編程清0TxDTI發(fā)送緩沖器空(發(fā)完一個字節(jié))硬件自動置位軟件編程清0軟件編程清0RxDRI接收緩沖器滿(收到一個字節(jié))硬件自動置位軟件編程清0軟件編程清0中斷請求標(biāo)志位的變化情況4.3.4中斷請求的深入理解其中:interrupt后面的n是中斷編號,對于MCS-51單片機,n的取值范圍為0~4,編譯器從8n+3處產(chǎn)生中斷向量。中斷源中斷編號中斷向量00003HT01000BH20013HT13001BHRxD/TxD40023H中斷服務(wù)函數(shù)的一般形式為:函數(shù)類型
函數(shù)名(形式參數(shù)表)interruptn[usingm]
MCS-51單片機的中斷編號和中斷向量如下表所示:4.4.1中斷函數(shù)4.4中斷系統(tǒng)的應(yīng)用中斷程序一般包含中斷初始化程序和中斷服務(wù)程序兩部分。中斷初始化程序的設(shè)計內(nèi)容:(1)設(shè)置中斷允許控制寄存器IE。(2)設(shè)置中斷優(yōu)先級寄存器IP。(3)對外中斷源,要設(shè)置中斷請求是采用電平觸發(fā)方式還是跳沿觸發(fā)方式。(4)如果是定時器/計數(shù)器中斷或串行通信中斷,應(yīng)該設(shè)置相應(yīng)的工作方式。4.4.2中斷程序的內(nèi)容【例4-1】試編寫設(shè)置外部中斷源1為邊沿觸發(fā)的高優(yōu)先級中斷源的初始化程序。4.4.2中斷程序的內(nèi)容【例4-1】試編寫設(shè)置外部中斷源1為邊沿觸發(fā)的高優(yōu)先級中斷源的初始化程序(假設(shè)已包含reg51.h)。參考程序1(采用位操作指令)參考程序2(采用字節(jié)傳送指令)EA=1;//開啟中斷允許總控制位EX1=1;//允許外部中斷1中斷PX1=1;//設(shè)外部中斷1為高優(yōu)先級IT1=1;//設(shè)外部中斷1為邊沿觸發(fā)方式IE=0x84;//為IE賦值10000100BIP=0x04;//為IP賦值00000100BTCON=0x04;
//為TCON賦值00000100B4.4.2中斷程序的內(nèi)容【例4-2】如下圖所示,89C51的P1口接了8個發(fā)光二極管,在外部中斷0輸入引腳(P3.2)接了一只按鍵K0,在外部中斷1輸入引腳(P3.3)接了一個按鍵K1。試編程實現(xiàn)如下功能:每按動K1按鍵一次,從右向左依次點亮8個發(fā)光二極管中的一個。4.4.3外部中斷源的應(yīng)用程序51單片機的中斷系統(tǒng)結(jié)構(gòu)圖
1按動K1后,IE1=1,向CPU發(fā)出申請IT1=0:電平觸發(fā)方式IT1=1:邊沿觸發(fā)方式內(nèi)部CPU分析中斷控制原理1
IE1變成1后,申請就能送到CPU了嗎?IT1=1;EA=1;EX1=1;中斷初始化程序為響應(yīng)該中斷,主程序要做哪些準(zhǔn)備?51單片機的中斷系統(tǒng)結(jié)構(gòu)圖
分析中斷控制原理1
如果CPU響應(yīng)該中斷,程序結(jié)構(gòu)如何?51單片機的中斷系統(tǒng)結(jié)構(gòu)圖
分析中斷控制原理#include<reg51.h> //預(yù)處理命令void函數(shù)名()interrupt2//中斷函數(shù)定義{ …… //中斷函數(shù)體}voidmain()
//主函數(shù){
IT1=1;
EA=1;
EX1=1; //中斷初始化程序 while(1) { …… //主函數(shù)體 }}1
如果CPU響應(yīng)該中斷,程序結(jié)構(gòu)如何?51單片機的中斷系統(tǒng)結(jié)構(gòu)圖
分析中斷控制原理#include<reg51.h> //預(yù)處理命令voidmain()
//主函數(shù){
IT1=1;
EA=1;
EX1=1; //中斷初始化程序 while(1) { …… //主函數(shù)體 }}void函數(shù)名()interrupt2//中斷函數(shù)定義{ …… //中斷函數(shù)體}【例4-2】如下圖所示,89C51的P1口接了8個發(fā)光二極管,在外部中斷0輸入引腳(P3.2)接了一只按鍵K0,在外部中斷1輸入引腳(P3.3)接了一個按鍵K1。試編程實現(xiàn)如下功能:每按動K1按鍵一次,從右向左依次點亮8個發(fā)光二極管中的一個。4.4.3外部中斷源的應(yīng)用程序#include<reg51.h> //預(yù)處理命令voidmain()
//主函數(shù){
IT1=1;
EA=1;
EX1=1; //中斷初始化程序 while(1) { …… //主函數(shù)體 }}void函數(shù)名()interrupt2//中斷函數(shù)定義{ …… //中斷函數(shù)體}#include <reg51.h> //51系列單片機頭文件#include <intrins.h> //包含_crol_函數(shù)所在的頭文件#define ucharunsignedchar//宏定義uchar temp; //定義一個變量,用來給P1口賦值void main() //主函數(shù){ EA=1; //開總中斷
EX1=1; //開外中斷1
PX1=1; //外中斷1設(shè)成高級別中斷
IT1=1; //外中斷1設(shè)成邊沿觸發(fā) temp=0xfe; //賦初值,預(yù)備右邊第一個燈亮while(1); //主程序循環(huán),原地等待中斷申請}void int1()interrupt2//外部中斷1的中斷服務(wù)函數(shù){P1=temp; //輸出到P1口 temp=_crol_(temp,1);//左環(huán)移一次}參考程序4.4.3外部中斷源的應(yīng)用程序【例4-3】對于上題所示的電路,試編程實現(xiàn)如下功能:當(dāng)無外部中斷請求時,每隔1s,從右向左依次點亮8個發(fā)光二極管中的1個;當(dāng)按鍵K1被按下時,8只發(fā)光二極管的顯示狀態(tài)改為閃爍顯示(假設(shè)二極管點亮及熄滅的時間都是1s),閃爍5次后,繼續(xù)依次點亮。假設(shè)系統(tǒng)時鐘頻率為12MHz。
4.4.3外部中斷源的應(yīng)用程序#include<reg51.h>//預(yù)處理命令voidmain()
//主函數(shù){
IT1=1;
EA=1;
EX1=1; //中斷初始化程序 while(1) {……}//主函數(shù)體}void函數(shù)名()interrupt2//中斷函數(shù)定義{ …… }參考程序#include <reg51.h> #include <intrins.h> #define ucharunsignedchar #define uintunsignedint uchar temp; void delaynms(uintn) { uint i,j; for(i=0;i<n;i++) for(j=0;j<125;j++);}4.4.3外部中斷源的應(yīng)用程序void main() { EA=1; EX1=1; PX1=1; IT1=1; temp=0xfe; while(1) { P1=temp; temp=_crol_(temp,1); delaynms(1000); }}void int1()interrupt2{ ucharm; for(m=0;m<5;m++) { P1=0; delaynms(1000); P1=0xff; delaynms(1000); }}擴展外部中斷源的方法有:定時器/計數(shù)器擴展法采用中斷和查詢相結(jié)合的擴展法采用硬件電路擴展法4.4.4外部中斷源的擴展及應(yīng)用中斷和查詢相結(jié)合的外部中斷源擴展法:利用MCS-51的兩個外部中斷線,每一個中斷輸入線可以通過“與”或“異或”的關(guān)系連接多個外部中斷源,同時利用MCS-51的I/O端口作為各中斷源的識別標(biāo)志,其原理圖分別如下所示:4.4.4外部中
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年廣告設(shè)計師的準(zhǔn)備策略試題及答案
- 商業(yè)美術(shù)設(shè)計師的項目管理技巧及實操試題及答案
- 收費崗位筆試題目及答案
- 商業(yè)美術(shù)設(shè)計師考試考點詳解試題及答案
- 紡織品設(shè)計與時尚產(chǎn)業(yè)的關(guān)系試題及答案
- 師范專業(yè)知識試題及答案
- 助理廣告師實踐能力試題及答案
- 2024年設(shè)計師考試前景展望試題及答案
- 商業(yè)美術(shù)設(shè)計師設(shè)計哲學(xué)試題及答案
- 橋隧維修與養(yǎng)護任務(wù)8
- 高中英語 A precious family dinner說課課件
- 鼻部疾病 慢性鼻竇炎的診療
- 2013-2022全國高考真題物理匯編:練習(xí)使用多用電表
- GB/T 3197-2001焊條用鋁及鋁合金線材
- 《綠色建筑概論》整套教學(xué)課件
- 自動控制原理-復(fù)習(xí)題及答案
- SAP固定資產(chǎn)各種折舊方法配置及操作手冊
- 產(chǎn)業(yè)發(fā)展理論-第七章-產(chǎn)業(yè)政策課件
- 奧數(shù)舉一反三簡單推理
- 高中英語教師研修-羅馬建筑文化課件
- 幼兒園教學(xué)課件小班社會《孤獨的小熊》課件
評論
0/150
提交評論