<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > PIC——MCC18中斷寫(xiě)法

PIC——MCC18中斷寫(xiě)法

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏
MPLABC18不自動(dòng)把中斷服務(wù)程序放在中斷向量處。通常將GOTO 指令放在中斷向量處,從而把控制權轉交給相應的中斷服務(wù)程序。

PIC18系列的低優(yōu)先級中斷入口地址在0x0018地址,下面的代碼是在入口地址處放置一個(gè)向量函數,這個(gè)向量函數里就是一個(gè)內嵌匯編的GOTO指令,GOTO到低優(yōu)先級的中斷服務(wù)函數InterruptHandlerLow。

//----------------------------低優(yōu)先級中斷入口-----------------------------------
1#pragmacodeInterruptVectorLow=0x18//用#pragma偽指令定義一個(gè)名字叫InterruptVectorLow的段,并把這個(gè)段放到0x18地址起始的代碼空間
2voidInterruptVectorLow(void)//低優(yōu)先級中斷向量函數
3{
4  _asm
5  gotoInterruptHandlerLow//內嵌匯編指令
6  _endasm
7}
8#pragmacode//這里不是多余的,它是告訴連接器回到默認的代碼段,如果不加的話(huà),連接器就會(huì )傻傻地把后面的代碼緊跟著(zhù)上面的代碼一直放下去。而LKR文件里定義了向量區最多到0x29地址,所以如果沒(méi)加此行通常會(huì )報錯
9
10#pragmainterruptlowInterruptHandlerLow//這里使用interruptlow這個(gè)關(guān)鍵詞來(lái)聲明InterruptHandlerLow這個(gè)函數是低優(yōu)先級中斷服務(wù)函數,用了關(guān)鍵詞后,這個(gè)函數將會(huì )由編譯器自動(dòng)產(chǎn)生基本的現場(chǎng)保護,并且這個(gè)函數的返回將是使用RETFIE返回的。
11
12
13voidInterruptHandlerLow(void)
14{
15/*低優(yōu)先級服務(wù)函數的代碼寫(xiě)在這里*/
16}

PIC18系列的高優(yōu)先級中斷入口地址在0x0008地址,下面的代碼是在這個(gè)入口地址處放置一個(gè)向量函數,這個(gè)向量函數里就是一個(gè)內嵌匯編的GOTO指令,GOTO到高優(yōu)先級的中斷服務(wù)函數InterruptHandlerHigh。

本文引用地址:http://dyxdggzs.com/article/201611/316959.htm

//----------------------------高優(yōu)先級中斷入口-----------------------------------

1#pragmacodeInterruptVectorHigh=0x08//用#pragma偽指令定義一個(gè)名字叫InterruptVectorHigh的段,并把這個(gè)段放到0x08地址起始的代碼空間
2voidInterruptVectorHigh(void)//高優(yōu)先級中斷向量函數
3{
4  _asm
5  gotoInterruptHandlerHigh//內嵌匯編指令
6  _endasm
7}
8#pragmacode//回到默認代碼段,原因同上
9#pragmainterruptInterruptHandlerHigh
10
11voidInterruptHandlerHigh(void)
12{
13/*高優(yōu)先級服務(wù)函數的代碼寫(xiě)在這里*/
14
15  if(INTCONbits.TMR0IF)
16  {//checkforTMR0overflow
17INTCONbits.TMR0IF=0;//clearinterruptflag
18 ;
19    ;
20  }
21}

對于MPLAB C18,上面的高低優(yōu)先級的中斷向量函數和中斷服務(wù)函數,各只能出現一次,不能有多個(gè)中斷服務(wù)函數,如果多個(gè)中斷都是高優(yōu)先級的,在高優(yōu)先級中斷服務(wù)函數里通過(guò)判斷各自的中斷標志位來(lái)做對應處理。

CONbits.IPEN = 1; //使能中斷優(yōu)先級
INTCONbits.GIEH = 1; //允許/禁止 所有高優(yōu)先級中斷
INTCONbits.GIEL = 1; //允許/禁止 所有低優(yōu)先級中斷

//RCONbits.IPEN = 0; //禁止中斷優(yōu)先級
//INTCONbits.GIE = 1; //允許/禁止 所有中斷源
//INTCONbits.PEIE = 1; //允許/禁止 所有外設中斷源


當IPEN=1時(shí),中斷源使用高優(yōu)先級中斷時(shí)GIEH = 1;GIEL 可以=0;
中斷源使用低優(yōu)先級中斷時(shí)GIEH = 1;GIEL =1;

當IPEN=0時(shí),所有中斷均跳轉到08H(使用高優(yōu)先級中斷向量入口)
GIEH = 1;GIEL =1;




關(guān)鍵詞: PICMCC18中斷寫(xiě)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>