<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          51單片機混合編程

          作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
          keil C語言與匯編語言混合編程

          本文引用地址:http://www.ex-cimer.com/article/201611/321768.htm

          1. C語言中嵌入?yún)R編

          1、在 C 文件中要嵌入?yún)R編代碼片以如下方式加入?yún)R編代碼:

          #pragma ASM

          ; Assembler Code Here

          #pragma ENDASM

          2、在 Project 窗口中包含匯編代碼的 C 文件上右鍵,選擇“Options for ...”,點擊右邊的“Generate Assembler SRC File”

          和“Assemble SRC File”,使檢查框由灰色變成黑色(有效)狀態(tài);

          3、根據(jù)選擇的編譯模式,把相應(yīng)的庫文件(如 Small 模式時,是 KeilC51LibC51S.Lib)加入工程中, 該文件必須作為工程的最后文件;

          4、編譯,即可生成目標(biāo)代碼。

          來個實例吧:

          #include

          void main(void)

          {

          P2=1;

          #pragma asm

          MOV R7,#10

          DEL:MOV R6,#20

          DJNZ R6,$

          DJNZ R7,DEL

          #pragma endasm

          P2=0;

          }

          2 . 無參數(shù)傳遞的函數(shù)調(diào)用

          C51調(diào)用匯編函數(shù)

          1.無參數(shù)傳遞的函數(shù)調(diào)用

          先來個例子:其中example.c和example.a51為項目中的兩個文件

          ***********************example.c***********************************************

          extern void delay100();

          main()

          {delay100;}

          ***********************example.a51***********************************************

          ?PR?DELAY100 SEGMENT CODE; // 在程序存儲區(qū)中定義段

          PUBLIC DELAY100; //聲明函數(shù)

          RSEG ?PR?DELAY100; //函數(shù)可被連接器放置在任何地方

          DELAY100:

          MOV R7,#10

          DEL:

          MOV R6,#20

          DJNZ R6,$

          DJNZ R7,DEL

          RET

          END

          在example.c文件中,先聲明外部函數(shù),然后直接在main中調(diào)用即可。

          在example.a51中,

          ?PR?DELAY100 SEGMENT CODE; 作用是在程序存儲區(qū)中定義段,DELAY100為段名,?PR?表示段位于程序存儲區(qū)內(nèi)

          PUBLIC DELAY100; 作用是聲明函數(shù)為公共函數(shù)

          RSEG ?PR?DELAY100; 表示函數(shù)可被連接器放置在任何地方,RSEG是段名的屬性

          段名的開頭為PR,是為了和C51內(nèi)部命名轉(zhuǎn)換兼容,命名轉(zhuǎn)換規(guī)律如下:

          CODE -?PR?

          XDATA-?XD

          DATA-?DT

          BIT-?BI

          PDATA-?PD

          3. 有參數(shù)傳遞的函數(shù)調(diào)用

          記住哦,c文件和A51文件不能使用同一個文件名,不過我還不知道為什么會這樣,有高手知道得話請告知。

          今天說說帶參數(shù)傳遞的函數(shù)調(diào)用,在C51和匯編之間傳遞參數(shù)的方式有兩種,一種是通過寄存器傳遞參數(shù),C51中不同類型的實參會存入相應(yīng)的寄存器,在匯編中只需對相應(yīng)寄存器進行操作,即達到傳遞參數(shù)的目的。

          不同類型的數(shù)據(jù)及其傳遞參數(shù)的寄存器如下表所示:

           在C和匯編混合編程的時候,存在C語言和匯編語言的變量以及函數(shù)的接口問題。


          上一頁 1 2 下一頁

          關(guān)鍵詞: 51單片機混合編

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();