<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > A51與C語(yǔ)言的混合編程

A51與C語(yǔ)言的混合編程

作者: 時(shí)間:2012-08-10 來(lái)源:網(wǎng)絡(luò ) 收藏

我研究一上午,寫(xiě)了個(gè)程序,可謂麻雀雖小可五臟俱全,希望正在學(xué)習這塊的人能少找點(diǎn)資料,少花點(diǎn)時(shí)間更快的掌握。

#include reg52.h>/****在匯編中定義*****/extern void delay(void) ;extern add(int a,int b);//測試匯編調用的代碼(不想直接用匯編來(lái)走主程序)extern void test();/***在匯編中定義的代碼段****/extern  unsigned char cc;//  中定義的函數void delay_c();unsigned int addcc(unsigned int wd1,unsigned int wd2);//中定義的數據段unsigned int aa;unsigned int bb;void main(){delay();cc=add(10,15);test();while(1);}void delay_c(){unsigned char cc;cc=0xff;while(cc--);}unsigned int addcc(unsigned int wd1,unsigned int wd2){unsigned int cl;cl=wd1+wd2;return cl;}delay.asmNAME  ONE        ;模塊的名稱(chēng);ORG  1000H       ;函數存放的起始單元?PR?delay?ONE      SEGMENT CODE   ;標注函數的定義位置?PR?_add?ONE       SEGMENT CODE?PR?test?ONE    SEGMENT CODEcc       DATA   33H     ;直接 定義數據的地址PUBLIC delay     ;聲明為全局PUBLIC _addPUBLIC testPUBLIC cc     ;聲明全局EXTRN DATA(aa)  ;注意這里是extrn 而不是C中extern  在 c中定義EXTRN DATA(bb)EXTRN CODE(delay_c)EXTRN CODE(_addcc)        ;帶參數的網(wǎng)上的資料EXTRN CODE(addcc) 我沒(méi)測試成功。
按理名字應該加_fun 這個(gè)是帶參的定義方式;EXTRN DATA(?_addcc?BYTE) ;網(wǎng)上傳參通過(guò)這個(gè)我也沒(méi)試成功,直接對寄存器做數據的處理了。RSEG  ?PR?delay?ONE   ;(不帶參函數)重新定位函數的代碼位置delay:MOV R0 , #44HDJNZ R0,$RETRSEG ?PR?_add?ONE      ;(帶參函數)參數自動(dòng)防止到寄存器中可以網(wǎng)上查下,
這里 15分別存放到R7,R6  10存入R5,R4_add:MOV A,R5ADD A,R7MOV R7,AMOV A,R4ADDC A,R6MOV aa,R7RETRSEG ?PR?test?ONEtest:;掉用不帶參數的C函數CALL delay_c;調用帶參數的C函數MOV R5,#15MOV R7,#11LCALL _addccMOV cc,R7RETEND  ;程序結束


關(guān)鍵詞: A51 C語(yǔ)言 混合編程

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>