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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 在Keil C51函數(shù)中加入ASM代碼

          在Keil C51函數(shù)中加入ASM代碼

          作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
          使用C51進(jìn)行單片機(jī)編程是事半功倍的事,但是很多算法上以及編譯上的問(wèn)題,往往使用ASM代碼更為方便又高效。但不知什么原因,Keil在實(shí)現(xiàn)C51夾雜ASM代碼比SDCC麻煩很多,方法如下:

          預(yù)處理指令 #pragma asm 開(kāi)始ASM代碼
          預(yù)處理指令 #pragma endasm 結(jié)束ASM代碼

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

          如果就這樣直接編譯的話,會(huì)出現(xiàn)以下錯(cuò)誤:
          error C272: asm/endasm requires src-control to be active

          解決方法:在 Files Toolbar 中選中當(dāng)前C51文件,點(diǎn)右鍵查看文件選項(xiàng),將 Generate Assembler SRC File 與 Assemble SRC File 的勾選由灰色變?yōu)楹谏?,即使這兩項(xiàng)有效!

          這時(shí)進(jìn)行編譯沒(méi)有問(wèn)題,但是Link時(shí)產(chǎn)生了兩個(gè)警告:
          *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
          *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL

          解決方法是需要在 Source Group 中添加一個(gè) LIB 文件,根據(jù)專案的內(nèi)容不同有所區(qū)別:
          C51S.LIB - 沒(méi)有浮點(diǎn)運(yùn)算的 Small model
          C51C.LIB - 沒(méi)有浮點(diǎn)運(yùn)算的 Compact model
          C51L.LIB - 沒(méi)有浮點(diǎn)運(yùn)算的 Large model
          C51FPS.LIB - 帶浮點(diǎn)運(yùn)算的 Small model
          C51FPC.LIB - 帶浮點(diǎn)運(yùn)算的 Compact model
          C51FPL.LIB - 帶浮點(diǎn)運(yùn)算的 Large model

          LIB 方件在 Keil 安裝目錄下的 C51LIB 目錄中。



          關(guān)鍵詞: KeilC51函數(shù)ASM代

          評(píng)論


          技術(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); })();