中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        KEIL C51的#pragma NOIV

        作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
        CYRESS給出的USB例程,在periph.c中普遍在開頭一行加了下列編譯指令:
        #pragma NOIV

        它的注釋是,不產(chǎn)生中斷向量。查找C51手冊,說明如下:

        NOINTVECTOR Compiler Directive

        Abbreviation

        NOIV

        本文引用地址:http://www.antipu.com.cn/article/201611/320372.htm
        Arguments

        None.

        Default

        INTVECTOR (0)

        µVision

        Options —C51— Interrupt vectors at address.

        Description

        TheNOINTVECTORdirective inhibits interrupt vector generation. This flexibility allows the user to provide interrupt vectors with other programming tools.

        See Also

        INTERVAL,INTVECTOR

        Example
        C51SAMPLE.C NOINTVECTOR 
        #pragma noiv 

        它的意思是,不產(chǎn)生8051缺省的中斷向量。對68013A來說,缺省的中斷有13個,分別排列在中斷向量表,位于內(nèi)存0x0003~0x0063,默認(rèn)優(yōu)先級0~12。一般在編譯選項里預(yù)留出0x80以下的內(nèi)存,就是供這個中斷向量表使用。
        實際上,在程序開頭加上#pragma NOIV,表示該文件使用的中斷函數(shù)統(tǒng)統(tǒng)不遵循上述缺省的中斷向量分配,而是自行分配中斷向量,自行分配中斷優(yōu)先級。
        這樣才有了大量的USB函數(shù)采用interrupt 0的寫法:
        void ISR_Ep2eflag(void) interrupt 0;
        void ISR_Ep4eflag(void) interrupt 0;
        這樣的寫法,人為地把所有USB中斷當(dāng)成了最高優(yōu)先級的中斷0。(缺省的中斷0只有WAKEUP/WU2引腳或者USB喚醒,其它25個USB中斷是中斷8)
        從這一設(shè)置可以看出,位于該文件中的其它中斷,也要人為地約定中斷號。我的經(jīng)驗是,不如把其它類型的中斷,如定時器,外部中斷等,寫到其它文件,只要這個文件不包含#pragma noiv,那么該文件中的中斷還是可以使用缺省中斷的(僅僅中斷0被USB占用,其它都可用)。
        另外C51中斷語句后的using不用也罷!實在是沒時間搞清68013和老51在這一部分的差別,不加的最壞可能是效率的降低,這個要查看匯編代碼才能了解,不用就好了。


        關(guān)鍵詞: KEILC51NOI

        評論


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

        關(guān)閉