中斷原理應(yīng)用程序的設(shè)計(jì)說(shuō)明_第1頁(yè)
中斷原理應(yīng)用程序的設(shè)計(jì)說(shuō)明_第2頁(yè)
中斷原理應(yīng)用程序的設(shè)計(jì)說(shuō)明_第3頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第六章 中斷原理應(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處理完畢后,再回到原來(lái)事件 A被中斷的地方繼續(xù)處理事件 A (中斷返回),這一過(guò)程稱(chēng)為 中斷。中斷源弓I起CPU中斷的根源,稱(chēng)為 中斷源。中斷源向CPU提出的中斷請(qǐng)求。CPU暫時(shí)中斷 原來(lái)的事務(wù)A,轉(zhuǎn)去處理事件B。對(duì)事件B處理完畢后,再回到原來(lái)被中斷的地方 (即斷點(diǎn)), 稱(chēng)為 中斷返回 。實(shí)現(xiàn)上述中斷功能的部件稱(chēng)為 中斷系統(tǒng) (中斷)。MCS-51單片機(jī)提供了 5個(gè)中斷源,其中兩個(gè)為

2、外部中斷請(qǐng)求源 (P3.2)和(P3.3),兩個(gè)片定 時(shí)器/計(jì)數(shù)器TO和T1的溢出請(qǐng)求中斷源 TFO (TCON勺第5位)和TF1 (TCON勺第7位),1個(gè) 片串口發(fā)送或接收中斷請(qǐng)求源 TI ( SCON勺第1位)和RI ( SCON勺第0位)。中斷優(yōu)先級(jí)同一優(yōu)先級(jí)中的中斷申請(qǐng)不止一個(gè)時(shí),則有中斷優(yōu)先權(quán)排隊(duì)問(wèn)題。同一優(yōu)先級(jí)的中斷優(yōu)先權(quán)排隊(duì),由中斷系統(tǒng)硬件確定的自然優(yōu)先級(jí)形成,其排列如所示:表6-4 MCS-51 單片機(jī)中斷源的自然優(yōu)先級(jí)及入口地址服務(wù)程序,而且用 C語(yǔ)言編寫(xiě)中斷服務(wù)程序,比用匯編語(yǔ)言方便的多。C語(yǔ)言編寫(xiě)中斷服務(wù)函數(shù)的格式如下:函數(shù)類(lèi)型 函數(shù)名(形式參數(shù)列表) interrup

3、t n using m其中,interrupt后面的n是中斷編號(hào),取值圍04,; using中的m表示使用的工作寄存器組號(hào)(如不聲明,則默認(rèn)用第0組)。例如,定時(shí)器TO的中斷函數(shù)可用如下方法編寫(xiě):void Timer(void) interrupt 1 using 0 定時(shí)器TO勺中斷服務(wù)函數(shù),TO勺中斷編號(hào)為1,使用第0組工作寄存器/中斷服務(wù)程序6.2 中斷系統(tǒng)的控制定時(shí)器 /計(jì)數(shù)器控制寄存器 TCONTCON 的功能是接收外部中斷源(、和定時(shí)器(TO、T1)送來(lái)的中斷請(qǐng)求信號(hào)。字節(jié)地址為88H,可以進(jìn)行位操作。表 5-5列出了 TCON勺格式。8FH8EH8DH8CH8BH8AH89H88

4、HTF1TR1TF0TR0IT0IT1IE0IT0表6-5定時(shí)器/計(jì)數(shù)器控制寄存器 TCON勺格式?ITO和IT1分別為外部中斷 和的觸發(fā)方式控制位,可以進(jìn)行置位和復(fù)位。?IEO和IE1分別為外部中斷和的中斷請(qǐng)求標(biāo)志位。?TFC和TF1分別為定時(shí)器/計(jì)數(shù)器TO和T1的中斷請(qǐng)求標(biāo)志。?TR(和TR份別為定時(shí)器/計(jì)數(shù)器TO和T1的啟動(dòng)/停止位。中斷允許控制寄存器 IECPU對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開(kāi)放和屏蔽是由中斷允許寄存器IE控制。表6-6 中斷允許控制寄存器 IE 的格式§EXO(IE.O),外部中斷 0允許位;§ETO(IE.1),定時(shí)/計(jì)數(shù)器TO中斷允許位;&

5、#167;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)來(lá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

6、),定時(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具體格式見(jiàn)串口通信有關(guān)SCON勺功能主要是接收串行通信口送到的中斷請(qǐng)求信號(hào) 章節(jié)。MCS-51單片機(jī)的中斷優(yōu)先級(jí)有三條原則:CPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級(jí)別最高的中斷請(qǐng)求。 正在進(jìn)行的中斷過(guò)程不能被新的同級(jí)或低優(yōu)先級(jí)的中斷請(qǐng)求所中斷。 正在進(jìn)行的低優(yōu)先級(jí)中斷服務(wù),能被高優(yōu)先級(jí)中斷請(qǐng)求所中斷。為了實(shí)現(xiàn)上述后兩條原則, 中斷系統(tǒng)部設(shè)有兩個(gè)用戶(hù)不能尋址的優(yōu)先級(jí)狀態(tài)觸發(fā)器。其中一個(gè)置 1,表示正在響應(yīng)高優(yōu)先級(jí)的中斷,它將阻斷后來(lái)所有

7、的中斷請(qǐng)求;另一個(gè)置 1,表示正在響應(yīng)低優(yōu)先級(jí)中斷,它將阻斷后來(lái)所有的低優(yōu)先級(jí)中斷請(qǐng)求。一個(gè)中斷源的中斷請(qǐng)求被響應(yīng),需滿(mǎn)足以下必要條件。(1) CPU開(kāi)中斷,即IE寄存器中的中斷總允許位EA=1。(2) 中斷源發(fā)出中斷請(qǐng)求,即該中斷源對(duì)應(yīng)的中斷請(qǐng)求標(biāo)志位為1。(3) 中斷源的中斷允許位 =1,即該中斷沒(méi)有被屏蔽。4)無(wú)同級(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è)過(guò)程就

8、是 中斷嵌套 。6.4 中斷程序設(shè)計(jì)例1:外部中斷 0的應(yīng)用舉例本實(shí)例中LED燈依次點(diǎn)亮,形成流水燈,同時(shí)伴有蜂鳴器發(fā)聲。 當(dāng)按住 時(shí),8位LED全部點(diǎn)亮,蜂鳴器停止發(fā)聲。當(dāng)松開(kāi)時(shí),程序恢復(fù)到原來(lái)的狀態(tài)。圖68 外部中斷應(yīng)用原理圖#include<reg52.h>/包含頭文件#include <intrins.h>/包含 _crol_() 函數(shù)所在頭文件unsigned char temp,num;/聲明臨時(shí)變量unsigned int x,y,z;sbit beep=P2A3;/蜂鳴器位聲明sbit duan=卩1人6;/數(shù)碼管段控制位聲明sbit wei=P1A7;

9、/數(shù)碼管位控制位聲明void delay(uint);/聲明延時(shí)子函數(shù)void main()EA=1;/開(kāi)總中斷EX0=1;/duan=0; / wei=0;/temp=0xfe; /while(1) /for(num=0;num<8;num+) /8P0=temp;beep=0;/delay(100);/temp=_crol_(temp,1); /P0=0xff;beep=1;/delay(100);/開(kāi)外部中斷關(guān)閉數(shù)碼管的段選關(guān)閉數(shù)碼管的位選臨時(shí)變量賦值程序無(wú)限循環(huán)位 LED 依次點(diǎn)亮蜂鳴器發(fā)聲延時(shí) 100ms循環(huán)左移函數(shù)蜂鳴器關(guān)閉延時(shí) 100msvoid delay(z)for(x

10、=z;x>0;x-)for(y=110;y>0;y-); void ex0() interrupt 0P0=0x00; / 點(diǎn)亮 8 位 LED beep=1; / 關(guān)閉蜂鳴器 程序解析:(1) 本程序的一大特點(diǎn)是用 _crol_()函數(shù)實(shí)現(xiàn)了 8位LED的依次點(diǎn)亮。簡(jiǎn)單明了, 讓同學(xué)們知道了在編寫(xiě)程序時(shí)調(diào)用一些函數(shù)會(huì)使程序的編寫(xiě)大為簡(jiǎn)化, 但要注意在程序開(kāi)頭 包含該函數(shù)所在的頭文件。(2) 在編寫(xiě)中斷服務(wù)子函數(shù)時(shí),一定要注意函數(shù)的標(biāo)號(hào)(即中斷的優(yōu)先級(jí)),該程序用的是 ,在所有中斷中優(yōu)先級(jí)最高,所以標(biāo)號(hào)為0。(3) 在主函數(shù)的函數(shù)初始化中一定要依次開(kāi)總中斷,外部中斷。 這樣外部中斷

11、才能夠被觸發(fā)。(4) 注意延時(shí)子函數(shù)的編寫(xiě),這個(gè)會(huì)經(jīng)常用到。例2:用定時(shí)器TO的中斷控制8位LED閃爍本實(shí)例要求用定時(shí)器 TO中斷方式控制 P0口 8位LED以100ms周期性閃爍。圖6-9 定時(shí)器T0的中斷控制8位 LED原理圖#include<reg52.h> /包含51單片機(jī)寄存器定義的頭文件void main(void)EA=1;/ET0=1;/TMOD=0x01;/開(kāi)總中斷定時(shí)器T0中斷允許使用定時(shí)器T0的模式2TH0=(65536-46083)/256; / 定時(shí)器 T0 的高 8位賦初值TL0=(65536-46083)%256; / 定時(shí)器 T0 的高 8位賦初值T

12、R0=1; / 啟動(dòng)定時(shí)器 T0while(1)/ 無(wú)限循環(huán)等待中斷Jvoid Time0(void) interrupt 1 using 0 /“ interrupt ”聲明函數(shù)為中斷服務(wù)函數(shù)/其后的1為定時(shí)器TO的中斷編號(hào);0表示使用第0組工作寄存器P0=P0;TH0=(65536-50000)/256; /定時(shí)器TO的高8位重新賦初值TL0=(65536-50000)%256; /定時(shí)器T0的高8位重新賦初值程序解析:(1) 本程序首先要注意初始化定時(shí)器的程序編寫(xiě)方法。具體見(jiàn)定時(shí)器有關(guān)章節(jié)。(2) 注意中斷服務(wù)子函數(shù)中的中斷標(biāo)號(hào)和定時(shí)器初值重裝問(wèn)題。例3 :用定時(shí)器T0的方式控制播放好人

13、一生平安本實(shí)例要求定時(shí)器 T0的中斷控制播放好人一生平安,T0工作于方式0。硬件電路圖如下。圖6-10 用定時(shí)器T0的方式控制播放好人一生平安電路圖sbit sou nd=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_mi ”宏定義為低音“ 3”的頻率 311Hz#define l_fa 349/

14、將“l(fā)_fa ”宏定義為低音“ 4”的頻率 349Hz#define l_sao 392/將“ l_sao ”宏定義為低音“ 5”的頻率 392Hz#define l_la 440/將“ l_a ”宏定義為低音“ 6”的頻率 440Hz#define l_xi 494/將“1 xi ”宏定義為低音“ 7”的頻率 494Hz/以下是C調(diào)中音的音頻宏定義#define dao 523/將“ dao”宏定義為中音“1”的頻率 523Hz#define re 587/將“ re ”宏定義為中音“ 2”的頻率 587Hz#define mi 659/將“ mi”宏定義為中音“ 3”的頻率 659Hz#d

15、efine 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”宏定義為高音“

16、 3”的頻率 1318Hz#define h_fa 1396 /將 “h_fa” 宏定義為高音“ 4” 的頻率 1396Hz#define h_sao 1567 /將“ h_sao”宏定義為高音“ 5” 的頻率 1567Hz1975Hz每行對(duì)應(yīng)一小節(jié)音符#define h_xi 1975/將“ h_xi ”宏定義為高音“ 7”的頻率void delay()unsigned char i,j;for(i=0;i<250;i+)for(j=0;j<250;j+)void main(void)unsigned char i,j;/ 以下是渴望片頭曲的一段簡(jiǎn)譜unsigned int co

17、de f=re,mi,re,dao,l_la,dao,l_la, / 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

18、,l_la,dao,re,l_la,dao,re,mi,re,0xff; /以0xff作為音符的結(jié)束標(biāo)志/ 以下是簡(jiǎn)譜中每個(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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論