找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 12457|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:7 發(fā)表于 2008-6-9 19:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

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

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

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

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

ASM)的C文件單擊右鍵,選擇“Options for ...”,然后點(diǎn)擊“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、上面的過程掌握了以后,我們再來看一下如何實(shí)現(xiàn)無參數(shù)傳遞的函數(shù)調(diào)


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


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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(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ù)

使用道具 舉報

5#
ID:50881 發(fā)表于 2014-11-10 13:35 | 只看該作者
頂!!!!!!!
回復(fù)

使用道具 舉報

6#
ID:72947 發(fā)表于 2015-1-31 23:00 來自觸屏版 | 只看該作者
正想研究這個方法呢……頂一個
回復(fù)

使用道具 舉報

7#
ID:103327 發(fā)表于 2016-1-26 18:40 | 只看該作者
很不錯,樓主厲害,謝樓主!支持一下
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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