|
|
如果不按照如下設(shè)置,中斷將無法執(zhí)行或者無法使下一個(gè)中斷進(jìn)入。
/*中斷掛起設(shè)置,此過程加入到主函數(shù)中啟動時(shí)加載*/
void Eint_wait()
{
rSRCPND=rSRCPND; //中斷掛起寄存器清除
rINTPND=rINTPND; //中斷源掛起寄存器清除
rEINTPEND|=0x1<<13; //外部中斷掛起寄存器,Eint掛起等待中斷
rSRCPND=BIT_EINT8_23; //中斷源掛起寄存器相應(yīng)位置1等待中斷
rINTPND=BIT_EINT8_23; //中斷掛起寄存器相應(yīng)位置1等待中斷
}
/*中斷掛起設(shè)置結(jié)束*/
/*以下為響應(yīng)中斷時(shí)的處理過程,為pISR指針中的函數(shù)*/
void __irq Eint_Isr(void)
{
if(rEINTPEND == (1<<13)) //判斷Eint13有響應(yīng)時(shí)執(zhí)行如下
{
rGPBDAT=0x0<<6; //led6亮
delay(10000); //說明:由于使用邊沿出發(fā)方式,故按鈕按完后會完成邊沿過程,完成后會立刻進(jìn)入else處理過程中滅燈,肉眼可能無法看出來。為使其見到效果,需要讓led亮一會兒!
rEINTPEND=(1<<13); //將中斷掛起寄存器Eint13置1等待下一個(gè)中斷到來,如果不設(shè)置下一個(gè)中斷無法進(jìn)入
}
else //當(dāng)不為Eint13時(shí),執(zhí)行如下
{
rGPBDAT=0x1<<6;
rEINTPEND=(1<<13); //將中斷掛起寄存器Eint13置1等待下一個(gè)中斷到來,如果不設(shè)置下一個(gè)中斷無法進(jìn)入
}
}
以上兩部分為簡化了的中斷處理過程中的重要內(nèi)容,可根據(jù)輸出引腳修改rGPBDAT和rEINTPEND即可使用。其它設(shè)置部分不在此說明。
|
|