




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第六章 中斷原理應(yīng)用程序設(shè)計(jì)6.1 中斷系統(tǒng)的基本概念CPU在處理某一事件A時(shí),發(fā)生了另一事件B請(qǐng)求CPU迅速去處理(中斷發(fā)生); CPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過程稱為中斷 。 中斷源 引起CPU中斷的根源,稱為中斷源。中斷源向CPU提出的中斷請(qǐng)求。CPU暫時(shí)中斷原來的事務(wù)A,轉(zhuǎn)去處理事件B。對(duì)事件B處理完畢后,再回到原來被中斷的地方(即斷點(diǎn)),稱為中斷返回。實(shí)現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng)(中斷機(jī)構(gòu))。 MCS-51單片機(jī)提供了5個(gè)中斷源,其中兩個(gè)為外部中斷請(qǐng)求源 (P3.2)和(P3.3),兩個(gè)片內(nèi)定時(shí)器/計(jì)數(shù)器T0和T1的溢出請(qǐng)求中斷源TF0(TCON的第5位)和TF1(TCON的第7位),1個(gè)片內(nèi)串口發(fā)送或接收中斷請(qǐng)求源TI(SCON的第1位)和RI(SCON的第0位)。 中斷優(yōu)先級(jí) 同一優(yōu)先級(jí)中的中斷申請(qǐng)不止一個(gè)時(shí),則有中斷優(yōu)先權(quán)排隊(duì)問題。同一優(yōu)先級(jí)的中斷優(yōu)先權(quán)排隊(duì),由中斷系統(tǒng)硬件確定的自然優(yōu)先級(jí)形成,其排列如所示: 表6-4 MCS-51單片機(jī)中斷源的自然優(yōu)先級(jí)及入口地址 需要說明的是,為了便于用C語言編寫單片機(jī)中斷程序,C51編譯器也支持51單片機(jī)的中斷服務(wù)程序,而且用C語言編寫中斷服務(wù)程序,比用匯編語言方便的多。C語言編寫中斷服務(wù)函數(shù)的格式如下:函數(shù)類型 函數(shù)名(形式參數(shù)列表)interrupt n using m 其中,interrupt后面的n是中斷編號(hào),取值范圍04,;using中的m表示使用的工作寄存器組號(hào)(如不聲明,則默認(rèn)用第0組)。例如,定時(shí)器T0的中斷函數(shù)可用如下方法編寫:void Timer(void) interrupt 1 using 0 /定時(shí)器T0的中斷服務(wù)函數(shù),T0的中斷編號(hào)為1,使用第0組工作寄存器 ./中斷服務(wù)程序 6.2 中斷系統(tǒng)的控制定時(shí)器/計(jì)數(shù)器控制寄存器TCON TCON的功能是接收外部中斷源( 、)和定時(shí)器(T0、T1)送來的中斷請(qǐng)求信號(hào)。字節(jié)地址為88H,可以進(jìn)行位操作。表5-5列出了TCON的格式。 8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IT0IT1IE0IT0表6-5 定時(shí)器/計(jì)數(shù)器控制寄存器TCON的格式 IT0和IT1分別為外部中斷 和 的觸發(fā)方式控制位,可以進(jìn)行置位和復(fù)位。IE0和IE1分別為外部中斷 和 的中斷請(qǐng)求標(biāo)志位。TF0和TF1分別為定時(shí)器/計(jì)數(shù)器T0和T1的中斷請(qǐng)求標(biāo)志。TR0和TR1分別為定時(shí)器/計(jì)數(shù)器T0和T1的啟動(dòng)/停止位。 中斷允許控制寄存器IECPU對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開放和屏蔽是由中斷允許寄存器IE控制。 表6-6 中斷允許控制寄存器IE的格式 EX0(IE.0),外部中斷0允許位; ET0(IE.1),定時(shí)/計(jì)數(shù)器T0中斷允許位; EX1(IE.2),外部中斷0允許位; ET1(IE.3),定時(shí)/計(jì)數(shù)器T1中斷允許位; ES(IE.4),串行口中斷允許位; EA (IE.7), CPU中斷允許(總允許)位。 中斷優(yōu)先級(jí)控制寄存器IPMCS-51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),即可實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套。每個(gè)中斷源的中斷優(yōu)先級(jí)都是由中斷優(yōu)先級(jí)寄存器IP中的相應(yīng)位的狀態(tài)來規(guī)定的。 表6-7 中斷優(yōu)先級(jí)控制寄存器IP的格式 PX0(IP.0),外部中斷0優(yōu)先級(jí)設(shè)定位;PT0(IP.1),定時(shí)/計(jì)數(shù)器T0優(yōu)先級(jí)設(shè)定位;PX1(IP.2),外部中斷0優(yōu)先級(jí)設(shè)定位;PT1(IP.3),定時(shí)/計(jì)數(shù)器T1優(yōu)先級(jí)設(shè)定位;PS (IP.4),串行口優(yōu)先級(jí)設(shè)定位;PT2 (IP.5) , 定時(shí)/計(jì)數(shù)器T2優(yōu)先級(jí)設(shè)定位。 串行通信控制寄存器SCON SCON的功能主要是接收串行通信口送到的中斷請(qǐng)求信號(hào),具體格式見串口通信有關(guān)章節(jié)。 MCS-51單片機(jī)的中斷優(yōu)先級(jí)有三條原則:CPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級(jí)別最高的中斷請(qǐng)求。正在進(jìn)行的中斷過程不能被新的同級(jí)或低優(yōu)先級(jí)的中斷請(qǐng)求所中斷。正在進(jìn)行的低優(yōu)先級(jí)中斷服務(wù),能被高優(yōu)先級(jí)中斷請(qǐng)求所中斷。 為了實(shí)現(xiàn)上述后兩條原則,中斷系統(tǒng)內(nèi)部設(shè)有兩個(gè)用戶不能尋址的優(yōu)先級(jí)狀態(tài)觸發(fā)器。其中一個(gè)置1,表示正在響應(yīng)高優(yōu)先級(jí)的中斷,它將阻斷后來所有的中斷請(qǐng)求;另一個(gè)置1,表示正在響應(yīng)低優(yōu)先級(jí)中斷,它將阻斷后來所有的低優(yōu)先級(jí)中斷請(qǐng)求。 一個(gè)中斷源的中斷請(qǐng)求被響應(yīng),需滿足以下必要條件。(1)CPU開中斷,即IE寄存器中的中斷總允許位EA=1。(2)中斷源發(fā)出中斷請(qǐng)求,即該中斷源對(duì)應(yīng)的中斷請(qǐng)求標(biāo)志位為1。(3)中斷源的中斷允許位=1,即該中斷沒有被屏蔽。(4)無同級(jí)或更高級(jí)的中斷正在被服務(wù)。 6.3 中斷嵌套中斷嵌套的概念 是指終端系統(tǒng)正在執(zhí)行一個(gè)中斷服務(wù)時(shí),有另一個(gè)優(yōu)先級(jí)更高的中斷提出中斷請(qǐng)求,這時(shí)會(huì)暫時(shí)終止當(dāng)前正在執(zhí)行的級(jí)別較低的中斷源的服務(wù)程序,去處理級(jí)別更高的中斷源,待處理完畢,再返回到被中斷了的中斷服務(wù)程序繼續(xù)執(zhí)行,這個(gè)過程就是中斷嵌套。 6.4 中斷程序設(shè)計(jì)例1:外部中斷0的應(yīng)用舉例 本實(shí)例中LED燈依次點(diǎn)亮,形成流水燈,同時(shí)伴有蜂鳴器發(fā)聲。當(dāng)按住 時(shí),8位LED全部點(diǎn)亮,蜂鳴器停止發(fā)聲。當(dāng)松開時(shí),程序恢復(fù)到原來的狀態(tài)。 圖68 外部中斷應(yīng)用原理圖 #include /包含頭文件#include /包含_crol_()函數(shù)所在頭文件unsigned char temp,num; /聲明臨時(shí)變量unsigned int x,y,z; sbit beep=P23; /蜂鳴器位聲明sbit duan=P16; /數(shù)碼管段控制位聲明sbit wei=P17; /數(shù)碼管位控制位聲明void delay(uint); /聲明延時(shí)子函數(shù) void main() EA=1; /開總中斷 EX0=1; /開外部中斷 duan=0; /關(guān)閉數(shù)碼管的段選 wei=0; /關(guān)閉數(shù)碼管的位選 temp=0xfe; /臨時(shí)變量賦值 while(1) /程序無限循環(huán) for(num=0;num0;x-) for(y=110;y0;y-); void ex0() interrupt 0 P0=0x00; /點(diǎn)亮8位LED beep=1; /關(guān)閉蜂鳴器程序解析:(1) 本程序的一大特點(diǎn)是用_crol_()函數(shù)實(shí)現(xiàn)了8位LED的依次點(diǎn)亮。簡單明了,讓同學(xué)們知道了在編寫程序時(shí)調(diào)用一些函數(shù)會(huì)使程序的編寫大為簡化,但要注意在程序開頭包含該函數(shù)所在的頭文件。(2) 在編寫中斷服務(wù)子函數(shù)時(shí),一定要注意函數(shù)的標(biāo)號(hào)(即中斷的優(yōu)先級(jí)),該程序用的是 ,在所有中斷中優(yōu)先級(jí)最高,所以標(biāo)號(hào)為0。(3) 在主函數(shù)的函數(shù)初始化中一定要依次開總中斷,外部中斷。這樣外部中斷才能夠被觸發(fā)。(4) 注意延時(shí)子函數(shù)的編寫,這個(gè)會(huì)經(jīng)常用到。 例2:用定時(shí)器T0的中斷控制8位LED閃爍 本實(shí)例要求用定時(shí)器T0中斷方式控制P0口8位LED以100ms周期性閃爍。 圖6-9 定時(shí)器T0的中斷控制8位LED原理圖 #include / 包含51單片機(jī)寄存器定義的頭文件 void main(void) EA=1; /開總中斷 ET0=1; /定時(shí)器T0中斷允許 TMOD=0x01; /使用定時(shí)器T0的模式2 TH0=(65536-46083)/256; /定時(shí)器T0的高8位賦初值 TL0=(65536-46083)%256; /定時(shí)器T0的高8位賦初值 TR0=1; /啟動(dòng)定時(shí)器T0 while(1)/無限循環(huán)等待中斷 ; void Time0(void) interrupt 1 using 0 /“interrupt”聲明函數(shù)為中斷服務(wù)函數(shù) /其后的1為定時(shí)器T0的中斷編號(hào);0表示使用第0組工作寄存器 P0=P0; TH0=(65536-50000)/256; /定時(shí)器T0的高8位重新賦初值 TL0=(65536-50000)%256; /定時(shí)器T0的高8位重新賦初值 程序解析:(1) 本程序首先要注意初始化定時(shí)器的程序編寫方法。具體見定時(shí)器有關(guān)章節(jié)。(2) 注意中斷服務(wù)子函數(shù)中的中斷標(biāo)號(hào)和定時(shí)器初值重裝問題。 例3 :用定時(shí)器T0的方式控制播放好人一生平安 本實(shí)例要求定時(shí)器T0的中斷控制播放好人一生平安,T0工作于方式0。硬件電路圖如下。 圖6-10 用定時(shí)器T0的方式控制播放好人一生平安電路圖 #include /包含51單片機(jī)寄存器定義的頭文件sbit sound=P23; /將sound位定義為P2.3unsigned int C; /儲(chǔ)存定時(shí)器的定時(shí)常數(shù)/以下是C調(diào)低音的音頻宏定義#define l_dao 262 /將“l(fā)_dao”宏定義為低音“1”的頻率262Hz#define l_re 286 /將“l(fā)_re”宏定義為低音“2”的頻率286Hz#define l_mi 311 /將“l(fā)_mi”宏定義為低音“3”的頻率311Hz#define l_fa 349 /將“l(fā)_fa”宏定義為低音“4”的頻率349Hz#define l_sao 392 /將“l(fā)_sao”宏定義為低音“5”的頻率392Hz#define l_la 440 /將“l(fā)_a”宏定義為低音“6”的頻率440Hz#define l_xi 494 /將“l(fā)_xi”宏定義為低音“7”的頻率494Hz/以下是C調(diào)中音的音頻宏定義#define dao 523 /將“dao”宏定義為中音“1”的頻率523Hz#define re 587 /將“re”宏定義為中音“2”的頻率587Hz#define mi 659 /將“mi”宏定義為中音“3”的頻率659Hz#define fa 698 /將“fa”宏定義為中音“4”的頻率698Hz#define sao 784 /將“sao”宏定義為中音“5”的頻率784Hz#define la 880 /將“l(fā)a”宏定義為中音“6”的頻率880Hz#define xi 987 /將“xi”宏定義為中音“7”的頻率523H /以下是C調(diào)高音的音頻宏定義#define h_dao 1046 /將“h_dao”宏定義為高音“1”的頻率1046Hz#define h_re 1174 /將“h_re”宏定義為高音“2”的頻率1174Hz#define h_mi 1318 /將“h_mi”宏定義為高音“3”的頻率1318Hz#define h_fa 1396 /將“h_fa”宏定義為高音“4”的頻率1396Hz#define h_sao 1567 /將“h_sao”宏定義為高音“5”的頻率1567Hz#define h_la 1760 /將“h_la”宏定義為高音“6”的頻率1760Hz#define h_xi 1975 /將“h_xi”宏定義為高音“7”的頻率1975Hz void delay() unsigned char i,j; for(i=0;i250;i+) for(j=0;j250;j+) ; void main(void) unsigned char i,j; /以下是渴望片頭曲的一段簡譜 unsigned int code f=re,mi,re,dao,l_la,dao,l_la, /每行對(duì)應(yīng)一小節(jié)音符 l_sao,l_mi,l_sao,l_la,dao, l_la,dao,sao,la,mi,sao, re, mi,re,mi,sao,mi, l_sao,l_mi,l_sao,l_la,dao, l_la,l_la,dao,l_la,l_sao,l_re,l_mi, l_sao, re,re,sao,la,sao, fa,mi,sao,mi, la,sao,mi,re,mi,l_la,dao, re, mi,re,mi,sao,mi, l_sao,l_mi,l_sao,l_la,dao, l_la,dao,re,l_la,dao,re,mi, re, l_la,dao,re,l_la,dao,re,mi, re, 0xff; /以0xff作為音符的結(jié)束標(biāo)志 /以下是簡譜中每個(gè)音符的節(jié)拍/4對(duì)應(yīng)4個(gè)延時(shí)單位,2對(duì)應(yīng)2個(gè)延時(shí)單位,1對(duì)應(yīng)1個(gè)延時(shí)單位unsigned char code JP =4,1,1,4,1,1,2, 2,2,2,2,8, 4,2,3,1,2,2, 10, 4,2,2,4,4, 2,2,2,2,4, 2,2,2,2,2,2,2, 10, 4,4,4,2,2, 4,2,4,4, 4,2,2,2,2,2,2, 10, 4,2,2,4,4, 2,2,2,2,6, 4,2,2,4,1,1,4, 10, 4,2,2,4,1,1,4, 10 ; EA=1; /開總中斷 ET0=1; /定時(shí)器T0中斷允許 TMOD=0x00; / 使用定時(shí)器T0的模式1(13位計(jì)數(shù)器) while(1) /無限循環(huán) i=0; /從第1個(gè)音符f0開始播放 while(fi!=0xff) /只要沒有讀到結(jié)束標(biāo)志就繼續(xù)播放 C=460830/fi; TH0=(8192-C)/32; /可證明這是13位計(jì)數(shù)器TH0高8位的賦初值方法 TL0=(8192-C)%32; /可證明這是13位計(jì)數(shù)器TL0低5位的賦初值方法 TR0=1; /啟動(dòng)定時(shí)器T0 for(j=0;jJPi;j+) /控制節(jié)拍數(shù) delay(); /延時(shí)1個(gè)節(jié)拍單位 TR0=0; /關(guān)閉定時(shí)器T0 i+; /播放下一個(gè)音符 void Time0(void ) interrupt 1 using 1 sound=!sound; /將P2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備租賃安全管理制度
- 設(shè)備銷售門店管理制度
- 設(shè)計(jì)公司內(nèi)部管理制度
- 評(píng)估公司公司管理制度
- 診所醫(yī)療家具管理制度
- 診所進(jìn)貨查驗(yàn)管理制度
- 財(cái)務(wù)系統(tǒng)支持管理制度
- 財(cái)務(wù)銀行密鑰管理制度
- 財(cái)政支付風(fēng)險(xiǎn)管理制度
- 貨物申報(bào)規(guī)范管理制度
- 神經(jīng)科患者的心理支持與護(hù)理
- 智慧樓宇智能化管理系統(tǒng)需求規(guī)格說明書
- 源彩數(shù)碼印花技改項(xiàng)目環(huán)境影響報(bào)告表
- 2023年甘肅白銀市會(huì)寧縣選聘行政村專職化村黨組織書記6人高頻考點(diǎn)歷年難、易點(diǎn)深度預(yù)測(共500題含答案解析)模擬試卷
- 過程控制系統(tǒng)及儀表智慧樹知到課后章節(jié)答案2023年下青島大學(xué)
- 中國共產(chǎn)主義青年團(tuán)團(tuán)員發(fā)展過程紀(jì)實(shí)簿
- 抗生素用藥原則
- 資金申請(qǐng)表模版完整
- PetrelRE使用技巧模型粗化工作流之構(gòu)造粗化
- 新版標(biāo)準(zhǔn)日本語課件-第一課
- 全自動(dòng)橡膠注射硫化成型機(jī)操作規(guī)程
評(píng)論
0/150
提交評(píng)論