官术网_书友最值得收藏!

1.7 工程的設(shè)置

在建立工程項目后,要對工程進(jìn)行設(shè)置。用鼠標(biāo)右鍵單擊“Target 1”,在彈出的菜單中選擇“Options for Target ‘Target 1’”,如圖1-17所示。

圖1-17 選擇工程設(shè)置

此時會彈出“Options for Target ‘Target 1’”對話框,如圖1-18所示。

圖1-18 “Options for Target ‘Target 1’”對話框

說明 進(jìn)入工程設(shè)置對話框的另一方法是執(zhí)行菜單命令“Project”→“Options for Target ‘Target 1’”。

“Options for Target‘Target 1’”對話框共有10個選項卡,這些復(fù)雜的選項大部分都可以采取默認(rèn)值,只有如下幾個與實際相關(guān)的選項要設(shè)置。

1)“Target”選項卡

Xtal(MHz):單片機(jī)的工作頻率。默認(rèn)為24.0MHz,如果單片機(jī)的晶振頻率為11.059 2MHz,則在此欄輸入“11.059 2”(單位是MHz)。

Use On-chip ROM(0x0-0x1FFF):使用片上的Flash ROM。AT89C52有8KB的Flash ROM。是否選中此選項取決于用戶的應(yīng)用系統(tǒng),如果單片機(jī)的EA引腳接高電平,應(yīng)選中這個選項;如果單片機(jī)的EA引腳接低電平,表示使用外部ROM,則不要選中該選項。本例選中此選項。

Off-chip Code memory:在片外接的ROM的開始地址和大小。在此假設(shè)使用一個片外的ROM,地址從0x8000開始(注意,不要輸入“8000”,否則會被當(dāng)做十進(jìn)制數(shù);此處要輸入十六進(jìn)制數(shù)), Size為外接ROM的大小,假設(shè)接了一個0x1000字節(jié)的ROM,應(yīng)在“Eprom”后面的“Start:”欄輸入“0x8000”,在“Size:”中輸入“0x1000”。最多可以外接3塊ROM。如果沒有外接程序存儲器,就不要輸入任何數(shù)據(jù)。

Off-chip Xdata memory:外接Xdata(外部數(shù)據(jù)存儲器)的起始地址和大小。本例指定Xdata的起始地址為0x2000,大小為0x8000,因此應(yīng)在“Ram”后面的“Start:”欄中輸入“0x8000”,在“Size:”欄中輸入“0x1000”。如果沒有外接數(shù)據(jù)存儲器,就不要輸入任何數(shù)據(jù)。

Code Banking:使用Code Banking技術(shù)。Keil可以支持程序代碼超過64KB的情況,最大可以有2MB的程序代碼。如果代碼超過64KB,就要使用Code Banking技術(shù),以支持更多的程序空間。Code Banking是一個高級的技術(shù),支持自動的Bank切換,是建立一個大型系統(tǒng)的必要技術(shù)。例如,要在單片機(jī)里實現(xiàn)漢字字庫,實現(xiàn)漢字輸入法,都要用到該技術(shù)。在這里不選它。

Memory Model:用鼠標(biāo)單擊“Memory Model”欄的下拉箭頭,會出現(xiàn)如圖1-19所示的3個選項。

? Small: variables in DATA變量存儲在內(nèi)部RAM。

? Compact: variables in PDATA變量存儲在外部RAM,使用8位間接尋址。

? Large: variables in XDATA變量存儲在外部RAM,使用16位間接尋址。

圖1-19 “Memory Model”欄的下拉菜單

一般使用Small方式來存儲變量,即單片機(jī)優(yōu)先把變量存儲在內(nèi)部RAM,如果內(nèi)部RAM不夠了,才會存到外部RAM。

Compact方式要用戶通過程序來指定頁的高位地址,編程比較復(fù)雜。如果外部RAM很少,只有256B,那么對256B的讀/取就比較快,用MOVX@Ri,A或MOVX A,@Ri指令即可。如果超過256B,就要不斷地進(jìn)行切換,這就比較麻煩。Compact模式適用于外部RAM比較少的情況。

Large模式是指變量會優(yōu)先分配到外部RAM,用MOVX A,@DPTR或MOVX@DPTR,A來讀取。要注意的是,3種存儲方式都支持內(nèi)部256B和外部64KB的RAM,區(qū)別是變量的優(yōu)先(或默認(rèn))存儲位置不同。除非不想把變量存儲在內(nèi)部RAM,才會使用Compact或Large模式。因為變量存儲在內(nèi)部RAM的運(yùn)算速度比存儲在外部RAM的運(yùn)算速度要快得多,大部分的應(yīng)用都選擇Small模式。使用Small模式,也不是說變量就不可以存儲在外部RAM,只是需要做如下指定:

    unsigned char xdata a變量a存儲在外部RAM。
    unsigned char a變量a存儲在內(nèi)部RAM。

Code Rom Size:單擊“Code Rom Size”欄的下拉箭頭,會出現(xiàn)如圖1-20所示的3個選項。

圖1-20 “Code Rom Size”欄的下拉菜單

? Small:program 2K or less適用于AT89C2051。AT89C2051只有2KB的代碼空間,所以跳轉(zhuǎn)地址只有2KB,編譯時會使用ACALL、AJMP這些短跳轉(zhuǎn)指令,而不會使用LCALL、LJMP指令。如果代碼跳轉(zhuǎn)超過2KB,則會出錯。

? Compact:2K functions,64K program表示每個子函數(shù)程序的大小不超過2KB,整個工程可以有64KB的代碼。就是說在main()里可以使用LCALL、LJMP指令,但在子程序里只會使用ACALL、AJMP指令。除非確認(rèn)每個子程序不會超過2KB,否則不要用Compact方式。

? Large:64K program表示程序或子函數(shù)都可以大到64KB(使用Code Bank時還可以更大),通常都選用該方式。Large方式的速度不會比Small的慢很多,所以一般沒有必要選擇Compact或Small方式。本例選擇Large方式。

Operating:單擊“Operating”欄的下拉箭頭,會出現(xiàn)如圖1-21所示的3個選項。

圖1-21 “Operating”欄的下拉菜單

? None表示不使用操作系統(tǒng)。

? RTX-51 Tiny表示使用Tiny操作系統(tǒng)。

? RTX-51 Full表示使用Full操作系統(tǒng)。

Keil C51提供了Tiny系統(tǒng)(Demo版沒有Tiny系統(tǒng),正版軟件才有),Tiny系統(tǒng)是一個多任務(wù)操作系統(tǒng),使用定時器0來做任務(wù)切換。一般用11.059 2MHz時,切換任務(wù)的速度為30ms。如果有10個任務(wù)同時運(yùn)行,那么切換時間為300ms。同時,不支持中斷系統(tǒng)的任務(wù)切換,也沒有優(yōu)先級。因為切換的時間太長,實時性大打折扣,多任務(wù)情況下(如5個),完成一輪切換就要150ms,150ms才處理一個任務(wù),連鍵盤掃描任務(wù)都無法實現(xiàn),更不要說串口接收、外部中斷等。同時切換需要大概1 000個機(jī)器周期,對CPU資源的浪費(fèi)很大,對內(nèi)部RAM的占用也很厲害。實際上用到多任務(wù)操作系統(tǒng)的情況少之又少。多任務(wù)操作系統(tǒng)一般適合于16位或32位的CPU,不適合于8位的CPU。

Keil C51 Full Real-Time OS是比Tiny要好一些的系統(tǒng),支持中斷方式的多任務(wù)和任務(wù)優(yōu)先級,但需要使用外部RAM。Keil C51不提供該運(yùn)行庫,需要另外購買。

Keil的多任務(wù)操作系統(tǒng)的思想值得學(xué)習(xí),特別是任務(wù)切換的算法,如何切換任務(wù)和保存堆棧等有一定的研究價值。如果熟悉了其切換的方法,可以編寫更好的切換程序。本書不推薦大家使用多任務(wù)操作系統(tǒng),本例選擇“None”。Target工程設(shè)置完成后的“Options for Tar-get ‘Target 1’”對話框如圖1-22所示。

圖1-22 Target工程設(shè)置完成后的“Options for Target ‘Target 1’”對話框

2)“Output”選項卡

Select Folder for Objects:單擊這個按鈕可以選擇編譯之后的目標(biāo)文件存儲在哪個目錄里,如果不設(shè)置的話,就在工程文件的目錄里,如圖1-23所示。

圖1-23 “Output”選項卡

Name of Executable:設(shè)置生成的目標(biāo)文件的名字,默認(rèn)跟工程的名字是一樣的。目標(biāo)文件可以生成庫或obj、hex的格式。

Create Executable:生成OMF及HEX文件。

? Debug Information和Browse Information:一般要選中這兩個選項,這樣才有詳細(xì)調(diào)試所需要的信息。例如,要做C語言程序的調(diào)試,若不選中這兩項,調(diào)試時將無法看到高級語言程序。

? Create Hex File:要生成Hex文件,必須選中此選項。

? Create Library:選中此選項時,將生成lib庫文件。一般的應(yīng)用是不需要生成庫文件的。

After Make

? Beep When Complete:編譯完成后,發(fā)出“咚”的聲音。

? Start Debugging:馬上啟動調(diào)試(軟件仿真或硬件仿真)。一般不選中。

? Run User Program#1,Run User Program#2:可以設(shè)置編譯完成后運(yùn)行別的應(yīng)用程序,如有些用戶自己編寫的燒錄芯片的程序(編譯完便執(zhí)行將Hex文件寫入芯片),或者調(diào)用外部的仿真程序。根據(jù)自己的需要進(jìn)行設(shè)置。

3)“Listing”選項卡 Keil C51在編譯后除了生成目標(biāo)文件外,還生成*.lst和 *.m51的文件。這兩種擴(kuò)展名的文件對了解程序用到了哪些idata、data、bit、xdata、code、ram、rom、stack等有很重要的作用。有些用戶想知道自己的程序需要多大代碼空間,就可以從這兩個文件中尋找答案。一般應(yīng)按照圖1-24所示進(jìn)行設(shè)置。若不想生成某些內(nèi)容,可以取消相應(yīng)的選項。

圖1-24 “Listing”選項卡

Assembly Code:選中會生成匯編的代碼。

Select Folder for Listings:選擇生成的列表文件存放的目錄。若不選擇,則使用工程文件所在的目錄。

4)其他 除上述3個選擇卡外,“C51”、“A51”等6個選擇卡一般都不用設(shè)置,采用默認(rèn)值即可。

上述設(shè)置完成后,單擊“確定”按鈕回到主界面,工程設(shè)置完畢。

主站蜘蛛池模板: 陆丰市| 城市| 莎车县| 安仁县| 辉县市| 昔阳县| 都安| 酒泉市| 乌鲁木齐市| 博湖县| 昆山市| 师宗县| 贵州省| 乌什县| 布拖县| 海安县| 岐山县| 介休市| 柘荣县| 深水埗区| 大丰市| 绥中县| 若尔盖县| 休宁县| 富源县| 米泉市| 青龙| 广东省| 杭州市| 牡丹江市| 衡山县| 阳新县| 吉林省| 商都县| 桑日县| 琼海市| 扶绥县| 五华县| 桃园县| 武清区| 微博|