資源描述:
《單片機(jī)_中斷函數(shù)調(diào)用》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、中斷函數(shù)的使用:《單片機(jī)C語言編程與實(shí)例》中斷函數(shù)通過使用interrupt關(guān)鍵字和中斷編號0-4來實(shí)現(xiàn)。使用該擴(kuò)展屬性的函數(shù)聲明語法如下:返回值函數(shù)名interruptnN對應(yīng)中斷源的編號中斷編號告訴編譯器中斷程序的入口地址,它對應(yīng)者IE寄存器中的使能位,即IE寄存器中的0位對應(yīng)著的外部中斷0,相應(yīng)的外部中斷0的中斷編號是0。中斷編號中斷源入口地址0外部中斷00003H1定時(shí)器/計(jì)數(shù)器0溢出000BH2外部中斷10013H3定時(shí)器/計(jì)數(shù)器1溢出001BH4串行口中斷0023H當(dāng)正在執(zhí)行一個(gè)特定任務(wù)是,可能有更緊急的事情需要CPU處理,這就涉及到終端優(yōu)先級
2、,搞優(yōu)先級的中斷可以中斷正在處理的底有限級中斷程序,因而最好給每種優(yōu)先級分配不同的寄存器組。在c51中可以使用using制定的寄存器組,using后的變量為0-3的長整數(shù),分別表示51單片機(jī)內(nèi)的四個(gè)寄存器組。中斷函數(shù)的完整語法及實(shí)例如下:返回值函數(shù)名(【參數(shù)】)【模式】【重入】interruptn[usingn]Unsignedintinterruptent;Unsignedcharsecond;Voidtime0(void)interrupt1using2{if(++interruptent==4000)%計(jì)數(shù)到4000{second++;%另一個(gè)計(jì)數(shù)器
3、Interruptent=0;%計(jì)數(shù)器清零}}要是摸個(gè)中斷源的申請得到相應(yīng),必須保證EA=1和相應(yīng)的允許位為1定義中斷服務(wù)函數(shù)的一般形式為::函數(shù)類型函數(shù)名(形式參數(shù)表)[interruptn][usingn]Interrupt后面的n是中斷號,n的取值范圍為0-31,編譯器從8n+3處產(chǎn)生中斷向量。11.111111外部中斷例題:通過P1.7口電量發(fā)光二極管,然后外部輸入一脈沖串,則發(fā)光二極管亮、暗交替#includeSbitP1_7=P1^7;Voidtnterrupt0()interrupt0using2//定義定時(shí)器0{P1_7
4、=!P1^7;}Voidmain(){EA=1;//開啟總中斷IT0=1;//外部中斷0低電平觸發(fā)EX0=1;//外部中斷0P1_7=0;Do()while(1);}2222相套中斷外部中斷INT1觸發(fā)后,啟動計(jì)數(shù)器0,計(jì)數(shù)達(dá)到10次后停止計(jì)數(shù),啟動定時(shí)器1,由定時(shí)器1控制定時(shí),由P1.7輸出周期為200ms的方波性能號,接受2次中斷后關(guān)閉方波發(fā)生器,P1.7置低。#include#defineucharunsignedcharUchardataa,b,c;Voidtnterrupt0()interrupt2using1//定義外部中斷
5、1{a++;}Voidtime0()interrupt1using2//定義計(jì)數(shù)器0{TL0=0Xff;B++;}Voidtime1()interrupt3using3//定義計(jì)時(shí)器1{TH1=0x06;c--;}SbitP1_7=P1^7;Voidmain(){P1_7=1;//初始化TCON=0x01;//外部中斷為低電平出觸發(fā)方式TMOD=0x27;//啟動定時(shí)器1和計(jì)數(shù)器0,工作方式2IE=0x8B;//開中斷a=0;do{}while(a!=1);//等待外部中斷P1_7=!P1_7;//取反TL0=0xFF;//初值TH0=0x06;//初值b
6、=0;TR0=0;TR1=1;Do{C=0xC8;Do{}while(c!=0);P1_7=!P1_7;}while(a!=3);TR1=0;P1_7=0;EA=0;//關(guān)閉總中斷EX0=0;//禁止外部中斷}