新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > S3C825A型單片機結構及軟件設計

        S3C825A型單片機結構及軟件設計

        作者: 時間:2012-03-29 來源:網絡 收藏

          函數返回值可根據其類型放在R15或R15:R14寄存器對中。若返回值是struct或union類型,則返回R15中的值是存放返回結果的堆棧指針起始位置。

          C語言編譯器也是編譯中斷函數時會自動保護所用到的寄存器(包括R10-R15),狀態寄存器FLAGS的保護也是在中斷處理過程中自動完成的。中斷過程中用到的寄存器都使用PUSH Rn的指令進行保護,而采用POP Rn指令恢復。當用IRET指令自動恢復狀態寄存器FLAGS時,可以從中斷中返回。

          3.2 對匯編語言函數的約定

          對于一個可以被C語言函數調用的匯編程序來說,使用時必須滿足以下3點:

          1)符合C語言參數傳遞規則;

          2)有PUBLIC函數入口標志;

          3)在C語言函數中用extern聲音為外部函數。

          參加傳遞規則和C語言函數一樣,所不同的是,要在匯編語言函數編寫過程中具體體現出來。

          4 應用實例

          明確了以上調用規則,混合編程就比較容易了,歸納起來有以下幾點:

          1)在C語言源文件中用“extern”關鍵字導入被匯編語言源文件導出的標號;

          2)在匯編語言源文件用“PUBLIC”關鍵字把標號導出到C語言源文件;

          3)在匯編語言中用“EXTERN”關鍵字導入被C語言函數源文件導出的關鍵字;

          4)用C語言把標號導出給匯編語言,這一步不需要關鍵字;

          5)把編輯好的C語言和匯編語言源文件導入設計系統,并用各自調用函數的指令調用。

          下面以筆者在校音器設計中用到的2個例子來具體說明。

          4.1 C語言和匯編語言相互調用

          在該例中,用C語言函數main()調用匯編語言函數get_rand()以得到一個隨機數,接著,用匯編語言函數get_rand()調用C語言庫函數rand()再得到一個整型機隨機數,然后用調用C語言函數mult()的方法把這個隨機值的高位乘以main()函數傳遞給自己的實參,同時把乘積值返回給main()參數。

          



        關鍵詞: S3C825A 單片機 結構

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 张掖市| 瓮安县| 黑水县| 明光市| 孟村| 黎平县| 雷州市| 石楼县| 巩义市| 个旧市| 岳池县| 富宁县| 修文县| 昆明市| 公安县| 大关县| 滨州市| 闽侯县| 淮北市| 东辽县| 怀柔区| 项城市| 邹平县| 刚察县| 屏山县| 乌审旗| 南部县| 诸暨市| 彰化市| 遂川县| 合阳县| 呼伦贝尔市| 运城市| 高陵县| 白山市| 闽清县| 惠安县| 凯里市| 宕昌县| 临猗县| 清水河县|