該控制指令將C文件編譯生成匯編文件(.SRC),該匯編文件可改名后,生成匯編.ASM文件,再用A51進行編譯。
第三節(jié) Keil C51軟件包中的通用文件
在C51LiB目錄下有幾個C源文件,這幾個C源文件有非常重要的作用,對它們稍事修改,就可以用在自己的專用系統(tǒng)中。
1. 動態(tài)內(nèi)存分配
init_mem.C:此文件是初始化動態(tài)內(nèi)存區(qū)的程序源代碼。它可以指定動態(tài)內(nèi)存的位置及大小,只有使用了init_mem( )才可以調(diào)回其它函數(shù),諸如malloc calloc,realloc等。
calloc.c:此文件是給數(shù)組分配內(nèi)存的源代碼,它可以指定單位數(shù)據(jù)類型及該單元數(shù)目。
malloc.c:此文件是malloc的源代碼,分配一段固定大小的內(nèi)存。
realloc.c:此文件是realloc.c源代碼,其功能是調(diào)整當前分配動態(tài)內(nèi)存的大小。
2. C51啟動文件STARTUP.A51
啟動文件STARTUP.A51中包含目標板啟動代碼,可在每個project中加入這個文件,只要復位,則該文件立即執(zhí)行,其功能包括:
定義內(nèi)部RAM大小、外部RAM大小、可重入堆棧位置
清除內(nèi)部、外部或者以此頁為單元的外部存儲器
按存儲模式初使化重入堆棧及堆棧指針
初始化8051硬件堆棧指針
向main( )函數(shù)交權(quán)
開發(fā)人員可修改以下數(shù)據(jù)從而對系統(tǒng)初始化
常數(shù)名 意義
IDATALEN 待清內(nèi)部RAM長度
XDATA START 指定待清外部RAM起始地址
XDATALEN 待清外部RAM長度
IBPSTACK 是否小模式重入堆棧指針需初始化標志,1為需要。缺省為0
IBPSTACKTOP 指定小模式重入堆棧頂部地址
XBPSTACK 是否大模式重入堆棧指針需初始化標志,缺省為0
XBPSTACKTOP 指定大模式重入堆棧頂部地址
PBPSTACK 是否Compact重入堆棧指針,需初始化標志,缺省為0
PBPSTACKTOP 指定Compact模式重入堆棧頂部地址
PPAGEENABLE P2初始化允許開關
PPAGE 指定P2值
PDATASTART 待清外部RAM頁首址
PDATALEN 待清外部RAM頁長度
提示:如果要初始化P2作為緊湊模式高端地址,必須:PPAGEENAGLE=1,PPAGE為P2值,例如指定某頁1000H-10FFH,則PPAGE=10H,
3. 標準輸入輸出文件
putchar.c
putchar.c是一個低級字符輸出子程,開發(fā)人員可修改后應用到自己的硬件系統(tǒng)上,例如向CLD或LEN輸出字符。
缺。簆utchar.c是向串口輸出一個字符XON XOFF是流控標志,換行符“*n”自動轉(zhuǎn)化為回車/換行“
”。
getkey.c
getkey函數(shù)是一個低級字符輸入子程,該程序可用到自己硬件系統(tǒng),如矩陣鍵盤輸入中,缺省時通過串口輸入字符。
4. 其它文件
還包括對Watch-Dog有獨特功能的INIT.A51函數(shù)以及對8×C751適用的函數(shù),可參考源代碼。
第四節(jié) 段名協(xié)定與程序優(yōu)化
1. 段名協(xié)定(Segment Naming Conventions)
C51編譯器生成的目標文件存放于許多段中,這些段是代碼空間或數(shù)據(jù)空間的一些單元,一個段可以是可重定位的,也可以是絕對段,每一個可重定位的段都有一個類型和名字,C51段名有以下規(guī)定:
每個段名包括前綴與模塊名兩部分,前綴表示存儲類型,模塊名則是被編譯的模塊的名字,例如:
?CO?main1 :表示main1模塊中的代碼段中的常數(shù)部分
?PR?function1?module 表module模塊中函數(shù)function1的可執(zhí)行段,具體規(guī)定參閱手冊。
2. 程序優(yōu)化
C51編譯器是一個具有優(yōu)化功能的編譯器,它共提供六級優(yōu)化功能。確保生成目標代碼的最高效率(代碼最少,運行速度最快)。具體六級優(yōu)化的內(nèi)容可參考幫助。
在C51中提供以下編譯控制指令控制代碼優(yōu)化:
OPTIMIZE(SJXE):盡量采用子程序,使程序代碼減少。
NOAREGS:不使用絕對寄存器訪問,程序代碼與寄存器段獨立。
NOREGPARMS:參數(shù)傳遞總是在局部數(shù)據(jù)段實現(xiàn),程序代碼與低版本C51兼容。
OPTIMIZE(SIZE)AK OPTIMIZE(speed)提供6級優(yōu)化功能,缺省為: OPTIMIZE(6,SPEED)。





