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

          新聞中心

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

          A51與C語言的混合編程

          作者: 時間:2012-08-10 來源:網(wǎng)絡 收藏

          我研究一上午,寫了個程序,可謂麻雀雖小可五臟俱全,希望正在學習這塊的人能少找點資料,少花點時間更快的掌握。

          #include reg52.h>/****在匯編中定義*****/extern void delay(void) ;extern add(int a,int b);//測試匯編調用的代碼(不想直接用匯編來走主程序)extern void test();/***在匯編中定義的代碼段****/extern  unsigned char cc;//  中定義的函數(shù)void delay_c();unsigned int addcc(unsigned int wd1,unsigned int wd2);//中定義的數(shù)據(jù)段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        ;模塊的名稱;ORG  1000H       ;函數(shù)存放的起始單元?PR?delay?ONE      SEGMENT CODE   ;標注函數(shù)的定義位置?PR?_add?ONE       SEGMENT CODE?PR?test?ONE    SEGMENT CODEcc       DATA   33H     ;直接 定義數(shù)據(jù)的地址PUBLIC delay     ;聲明為全局PUBLIC _addPUBLIC testPUBLIC cc     ;聲明全局EXTRN DATA(aa)  ;注意這里是extrn 而不是C中extern  在 c中定義EXTRN DATA(bb)EXTRN CODE(delay_c)EXTRN CODE(_addcc)        ;帶參數(shù)的網(wǎng)上的資料EXTRN CODE(addcc) 我沒測試成功。
          按理名字應該加_fun 這個是帶參的定義方式;EXTRN DATA(?_addcc?BYTE) ;網(wǎng)上傳參通過這個我也沒試成功,直接對寄存器做數(shù)據(jù)的處理了。RSEG  ?PR?delay?ONE   ;(不帶參函數(shù))重新定位函數(shù)的代碼位置delay:MOV R0 , #44HDJNZ R0,$RETRSEG ?PR?_add?ONE      ;(帶參函數(shù))參數(shù)自動防止到寄存器中可以網(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:;掉用不帶參數(shù)的C函數(shù)CALL delay_c;調用帶參數(shù)的C函數(shù)MOV R5,#15MOV R7,#11LCALL _addccMOV cc,R7RETEND  ;程序結束


          關鍵詞: A51 C語言 混合編程

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();