1. 程式人生 > >利用keil c51生成hex如何設定ROM

利用keil c51生成hex如何設定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的說明(儘管知道有此三種設定,但還是不會運用,不知在什麼情況下做何設定),在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,則不選中該選項。