新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 利用keil c51生成hex如何設置ROM

        利用keil c51生成hex如何設置ROM

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



        關鍵詞: keilc51hex設置RO

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 隆德县| 丽江市| 扎囊县| 吉安市| 玉龙| 玉山县| 马边| 焦作市| 江安县| 页游| 高碑店市| 永修县| 铜陵市| 资溪县| 瑞昌市| 龙海市| 衡阳县| 孝感市| 色达县| 荆门市| 宁德市| 海宁市| 泰顺县| 阿勒泰市| 茂名市| 平南县| 望江县| 亚东县| 郑州市| SHOW| 玉山县| 宽甸| 通化市| 庆城县| 龙口市| 新乡县| 勐海县| 靖州| 无极县| 封丘县| 阳信县|