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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用keil c51生成hex如何設(shè)置ROM

          利用keil c51生成hex如何設(shè)置ROM

          作者: 時(shí)間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
          我使用at89s52(256RAM,8K的ROM),程序編譯后顯示program Size: data=56.0 xdata=0 code=3529。我的電路中無外部ROM,為了使生成的hex代碼只存儲(chǔ)在該片at89s52,我怎么設(shè)置呢?選small肯定不行,因?yàn)槲业拇a大于2K;若選compact,代碼能放在64K的程序空間,而我s52只有8K的ROM,代碼不會(huì)放在我的8K之外吧,那樣肯定會(huì)出錯(cuò)的。若我選擇“Use on-chip ROM(0x0-0xFFF)”,有什么影響? 求高手幫忙了。。。。
          附帖:為了說明問題,提供一下Small、Compact及Large的說明(盡管知道有此三種設(shè)置,但還是不會(huì)運(yùn)用,不知在什么情況下做何設(shè)置),在keil C51編譯環(huán)境中,能提供:設(shè)置ROM空間的使用,有3個(gè)選擇項(xiàng),Small、Compact及Large。1.Small:只用低于2K的程序空間,適用于AT89C2051這些芯片,2051只有2K的代碼空間,所以跳轉(zhuǎn)地址只有2KB,編譯的時(shí)候會(huì)使用ACALL  AJMP這些短跳轉(zhuǎn)指令,而不會(huì)使用LCALL  LJMP指令。如果代碼地址跳轉(zhuǎn)超過2K,那么會(huì)出錯(cuò)。2.Compact:?jiǎn)蝹€(gè)函數(shù)的代碼量不能超過2K,整個(gè)程序可以使用64K程序空間。3.Large:可用全部64K空間,表示程序或子函數(shù)代碼都可以大到64KB,使用code bank還可以更大。通常都選用該方式。選擇Large方式速度不會(huì)比Small慢很多,所以一般沒有必要選擇Compact和Small方式。Use on-chip ROM(0x0-0xFFF)選擇項(xiàng),表示使用片上的ROM (選中該項(xiàng)并不會(huì)影響最終生成的目標(biāo)代碼量),該選項(xiàng)取決于單片機(jī)應(yīng)用系統(tǒng),如果單片機(jī)的EA接高電平,則選中這個(gè)選項(xiàng),表示使用內(nèi)部ROM,如果單片機(jī)的EA接低電平,表示使用外部ROM,則不選中該選項(xiàng)。
          問題補(bǔ)充:
          我使用at89s52(256RAM,8K的ROM),程序編譯后顯示program Size: data=56.0 xdata=0 code=3529。我的電路中無外部ROM,為了使生成的hex代碼只存儲(chǔ)在該片at89s52,我怎么設(shè)置呢?選small肯定不行,因?yàn)槲业拇a大于2K;若選compact,代碼能放在64K的程序空間,而我s52只有8K的ROM,代碼不會(huì)放在我的8K之外吧,那樣肯定會(huì)出錯(cuò)的。若我選擇“Use on-chip ROM(0x0-0xFFF)”后,那Small、Compact及Large 三檔選哪一檔?



          關(guān)鍵詞: keilc51hex設(shè)置RO

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