在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Codewarrior for HCS12的中斷服務(wù)程序編寫說明

            Codewarrior for HCS12的中斷服務(wù)程序編寫說明

            作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏

            在CW4.6環(huán)境下,中斷編程主要有兩種方式:

            第一種是使用“interrupt”關(guān)鍵字,“interrupt”關(guān)鍵字是一個非標準ANSI-C的關(guān)鍵字,因此,它不能被所有ANSI-C編譯器廠商所支持。同樣,對不同的編譯器,interrupt”關(guān)鍵字的用法可能會改變。“interrupt”關(guān)鍵字同樣會提示編譯器下面的函數(shù)是一個中斷服務(wù)例程。
            例: void interrupt 20 SCI0_ISR(void);
            其中,interrupt表示該函數(shù)為終端服務(wù)程序,后面的20表示中斷號20,在這里SCI0的中斷向量號就是20.
            這種方法寫起來非常簡單,但是,在S12單片機實際使用中,中斷號并沒有在手冊中給出,通常需要自己在中斷向量表中從上往下數(shù)出來,或者根據(jù)中斷向量計算得到,很容易出錯。
            于是有了第二種方法:
            在ISR程序之前,使用符號“#pragma TRAP_PROC”,TRAP_PROC 提示編譯器下面的函數(shù)是中斷服務(wù)例程。編譯器會用一個特殊的中斷返回指令來結(jié)束這個函數(shù)。
            此時,中斷函數(shù)的書寫如下所示:
            #pragma TRAP_PROC
            void SCI0_ISR(void){
            ...
            }
            這時候編譯器不知道這個ISR指向那個中斷向量,我們需要在鏈接文件即:prm文件中指定之。
            使用 VECTOR命令來實現(xiàn)中斷向量與ISR程序的連接。
            例:
            VECTOR 0 _Startup//這是系統(tǒng)默認prm文件中自帶的,即復(fù)位后0號中斷即復(fù)位中斷的ISR為_Startup()
            我們可以這樣寫:
            VECTOR 20 SCI0_ISR //指定中斷號
            或者
            VECTOR ADDRESS 0xFFD6 SCI0_ISR //直接指定中斷向量地址
            注:使用#pragma TRAP_PROC與修改prm文件的方法,在中斷服務(wù)子程序的結(jié)尾處必須要手動加入返回主程序的指令,包括取出堆棧、中斷返回兩個步驟。
            在S12單片機中,可以寫作
            asm {
            pula;
            rti;
            }
            尾注:
            兩種方法所寫的中斷服務(wù)子程序必須被放在非分頁存儲區(qū)內(nèi),即non_blanked code seg.
            其中一種常用的方法是在服務(wù)子程序前聲明:
            //下面代碼放在NON_BANKED區(qū)
            #pragma CODE_SEG NON_BANKED
            在中斷程序后聲明:
            //下面內(nèi)容按默認放置
            #pragma CODE_SEG DEFAULT



            評論


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

            關(guān)閉