找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 12496|回復(fù): 8
收起左側(cè)

[原創(chuàng)]如何實現(xiàn)c51和asm的混編

[復(fù)制鏈接]
ID:7 發(fā)表于 2008-6-9 19:07 | 顯示全部樓層 |閱讀模式

這是我在編程中積累的經(jīng)驗,希望對大家有用!

如何實現(xiàn)C51和匯編的混合編程
(文中用到的編譯器一律為keil)
1、首先來個范例,并從這個范例展開說明:
............       //C51 Code here
#pragma ASM
.............     //Here is the Assembler Code
#pragma ENDASM
...........      //C51 Code here

2、看到范例,大家應(yīng)該對實現(xiàn)C51和匯編的混合有個大概了解了,呵呵,

其實也就這么一回事。
但是我們還必須要做一些前提工作,首先在Project窗口中包含匯編代碼(

ASM)的C文件單擊右鍵,選擇“Options for ...”,然后點擊“Generate

Assembler SRC File”和“Assemble SRC File”

3、根據(jù)選擇的編譯模式,把相應(yīng)的庫文件加入工程,應(yīng)該注意的是,這個

文件必須作為該工程的最后一個文件


4、大家可以復(fù)制下面這個C51和匯編的混編代碼練習(xí)一下,加深印象
#i nclude <reg51.h>
void main(void)
{
 P2=0x00;
 #pragma asm
      MOV R7,#10
 #pragma endasm
 P2=0xff;
}


5、上面的過程掌握了以后,我們再來看一下如何實現(xiàn)無參數(shù)傳遞的函數(shù)調(diào)


例如我們要調(diào)用一個延時函數(shù)delay()
     //C51
extern void delayms();   //聲明
int main()
{
 delayms();   //調(diào)用
}


6、有參傳遞
其實是一樣的,就是在子函數(shù)中加了參數(shù)罷了
例如:int delay(int minite,int second,……)//參數(shù)可以多個

回復(fù)

使用道具 舉報

ID:3490 發(fā)表于 2008-7-20 09:02 | 顯示全部樓層

求助!�。�! 大俠,我還是不知道.我是初學(xué)者�。�

回復(fù)

使用道具 舉報

ID:2902 發(fā)表于 2008-7-27 22:37 | 顯示全部樓層

o(∩_∩)o...學(xué)習(xí)了

回復(fù)

使用道具 舉報

ID:67887 發(fā)表于 2014-10-27 20:50 | 顯示全部樓層
高手。。。。。
回復(fù)

使用道具 舉報

ID:50881 發(fā)表于 2014-11-10 13:35 | 顯示全部樓層
頂!!!!!!!
回復(fù)

使用道具 舉報

ID:72947 發(fā)表于 2015-1-31 23:00 來自觸屏版 | 顯示全部樓層
正想研究這個方法呢……頂一個
回復(fù)

使用道具 舉報

ID:103327 發(fā)表于 2016-1-26 18:40 | 顯示全部樓層
很不錯,樓主厲害,謝樓主!支持一下
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表