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