在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

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

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

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

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

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

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

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

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


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

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




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

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉