KeilC51開發系統知識_第1頁
KeilC51開發系統知識_第2頁
KeilC51開發系統知識_第3頁
KeilC51開發系統知識_第4頁
KeilC51開發系統知識_第5頁
已閱讀5頁,還剩61頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Keil C51開開發系統基基本知識1. 第一一節 系統統概述 Keil C51是是美國Keeil SSoftwware公公司出品的的51系列列兼容單片片機C語言言軟件開發發系統,與與匯編相比比,C語言言在功能上上、結構性性、可讀性性、可維護護性上有明明顯的優勢勢,因而易易學易用。用過匯編編語言后再再使用C來來開發,體體會更加深深刻。 HYPERLINK Keil C51軟軟件提供豐豐富的庫函函數和功能能強大的集集成開發調調試工具,全全Winddows界界面。另外外重要的一一點,只要要看一下編編譯后生成成的匯編代代碼,就能能體會到KKeil C51生生成的目標標代碼效率率非常之高高,多數語語句

2、生成的的匯編代碼碼很緊湊,容容易理解。在開發大大型軟件時時更能體現現高級語言言的優勢。 下面詳細介介紹Keiil C551開發系系統各部分分功能和使使用。 2. 第二二節 Keeil CC51單片片機軟件開開發系統的的整體結構構 C51工具具包的整體體結構,如如圖(1)所示,其其中uViisionn與Ishhell分分別是C551 foor Wiindowws和foor Doos的集成成開發環境境(IDEE),可以以完成編輯輯、編譯、連接、調調試、仿真真等整個開開發流程。開發人員員可用IDDE本身或或其它編輯輯器編輯CC或匯編源源文件。然然后分別由由C51及及A51編編譯器編譯譯生成目標標文件

3、(.OBJ)。目標文文件可由LLIB511創建生成成庫文件,也也可以與庫庫文件一起起經L511連接定位位生成絕對對目標文件件(.ABBS)。AABS文件件由OH551轉換成成標準的HHex文件件,以供調調試器dSScopee51或ttScoppe51使使用進行源源代碼級調調試,也可可由仿真器器使用直接接對目標板板進行調試試,也可以以直接寫入入程序存貯貯器如EPPROM中中。 圖(1) C51工工具包整體體結構圖 3. 第三三節 Keeil CC51工具具包的安裝裝 1. 1. C511 forr Doss 在Winddows下下直接運行行軟件包中中DOSC51DDOS.eexe然后后選擇安裝裝

4、目錄即可可。完畢后后欲使系統統正常工作作須進行以以下操作(設C:C51為為安裝目錄錄): 修改Auttoexeec.baat,加入入 path=C:CC51BBin Set CC51LIIB=C:C511LIBB Set CC51INNC=C:C511INCC 然后運行AAutoeexec.bat 2. 2. C511 forr Winndowss的安裝及及注意事項項: 在Winddows下下運行軟件件包中WIINSeetup.exe,最最好選擇安安裝目錄與與C51 for Dos相相同,這樣樣設置最簡簡單(設安安裝于C:C511目錄下)。然后將將軟件包中中cracck目錄中中的文件拷拷入C:

5、C51Bin目目錄下。 4. 第四四節 Keeil CC51工具具包各部分分功能及使使用簡介 1. 1. C511與A511 1. (11) C551 C51是CC語言編譯譯器,其使使用方法為為: C51 ssourccefille編譯譯控制指令令 或者 C51 commmanddfilee 其中souurceffile為為C源文件件(.C)。大量的的編譯控制制指令完成成C51編編譯器的全全部功能。包控C551輸出文文件C.LLST,.OBJ,.I和.SSRC文件件的控制。源文件(.C)的的控制等,詳詳見第五部部分的具體體介紹。 而Commmandffile為為一個連接接控制文件件其內容包包括

6、:.CC源文件及及各編譯控控制指令,它它沒有固定定的名字,開開發人員可可根據自己己的習慣指指定,它適適于用控制制指令較多多的場合。 2. (22) A551 A51是匯匯編語言編編譯器,使使用方法為為: A51 ssourccefille編譯譯控制指令令 或A51 coommanndfille 其中souurceffile為為匯編源文文件(.aasm或.a51),而編譯譯控制指令令的使用與與其它匯編編如ASMM語言類似似,可參考考其他匯編編語言材料料。 Commaand中的的Commmandffile類類似,它使使A51使使用和修改改方便。 2. 2. L511和BL551 1. (11) L

7、551 L51是KKeil C51軟軟件包提供供的連接/定位器,其其功能是將將編譯生成成的OBJJ文件與庫庫文件連接接定位生成成絕對目標標文件(.ABS),其使用用方法為: L51 目目標文件列列表庫文文件列表 too outtputffile 連接接控制指令令 或 L511 Coommanndfille 源程序的多多個模塊分分別經C551與A551編譯后后生成多個個OBJ文文件,連接接時,這些些文件全列列于目標文文件列表中中,作為輸輸入文件,如如果還需與與庫文件(.LiBB)相連接接,則庫文文件也必須須列在其后后。outtputffile為為輸文件名名,缺少時時為第一模模塊名,后后綴為.AA

8、BS。連連接控制指指令提供了了連接定位位時的所有有控制功能能。Commmanddfilee為連接控控制文件,其其具體內容容是包括了了目標文件件列表,庫庫文件列表表及輸出文文件、連接接控制命令令,以取代代第一種繁繁瑣的格式式,由于目目標模塊庫庫文件大多多不止1個個,因而第第2種方法法較多見,這這個文件名名字也可由由使用者隨隨意指定。 2. (22) Bll51 BL51也也是C511軟件包的的連接/定定位器,其其具有L551的所有有功能,此此外它還具具有以下33點特別之之處: a. 可以以連接定位位大于644kByttes的程程序。 b. 具有有代碼域及及域切換功功能(CoodeBaankinn

9、g & Bankk Swiitchiing) c. 可用用于RTXX51操作作系統 RTX511是一個實實時多任務務操作系統統,它改變變了傳統的的編程模式式,甚至不不必用maain( )函數,單單片機系統統軟件向RRTOS發發展是一種種趨勢,這這種趨勢對對于1866和3866及68KK系列CPPU更為明明顯和必須須,對80051因CCPU較為為簡單,程程序結構等等都不太復復雜,RTTX51作作用顯得不不太突出,其其專業版軟軟件PK551軟件包包甚至不包包括RTXX51Fuull,而而只有一個個RTX551TINNY版本的的RTOSS。RTXX51 TTINY適適用于無外外部RAMM的單片機機系

10、統,因因而可用面面很窄,在在本文中不不作介紹。Bankk swiitchiing技術術因使用很很少也不作作介紹。 3. 3. DSccope551,Tsscopee51及MMonittor511 1. (11) dSScopee51 dScoppe51是是一個源級級調試器和和模擬器,它它可以調試試由C511編譯器、A51匯匯編器、PPL/M-51編譯譯器及ASSM511匯編器產產生的程序序。它不需需目標板(ffor wwindoows也可可通過moon51接接目標板),只只能進行軟軟件模擬,但但其功能強強大,可模模擬CPUU及其外圍圍器件,如如內部串口口,外部II/O及定定時器等,能能對嵌入式

11、式軟件功能能進行有效效測試。 其使用方法法為: DS51debuugfilleIINIT(inittfilee) 其中debbugfiile是一一個Hexx格式的88051文文件,即待待調試的文文件其為可可選的,可可在進入ddScoppe51后后用loaad命令裝裝入。 Initffile為為一個初使使化文件,它它在啟動ddScoppe51后后,在deebugffile裝裝入前裝入入,裝有一一些dSccope的的初使化參參數及常用用調試函數數等。下面面是一個ddScoppe.inni文件(for dos)的內容: Load .dss5188051.iof Map 00,0 xfffff dSc

12、oppe51 for Winddows則則直接用鼠鼠標進入,然然后用looad裝入入待調文件件。 2. (22) tSScopee51 與dScoope511不同的是是Scoppe51必必須帶目標標板,目前前它可以通通過兩種方方式訪問目目標板。(1) 通通過EMuul51在在線仿真器器,tSccope551為該仿仿真器準備備了一個動動態連接文文件EMUUL51.IOT,但但該方法必必須配合該該仿真器。(2) 通過Moonitoov51監監控程序,這這種方法是是可行的,ttScoppe51為為訪問Moonitoor51專專門帶有MMON511.IOTT連接程序序,使用時時可通過串串口及監控控程序

13、來調調試目標板板。 其使用方法法為: TS51INITT() 其中為一個個初使化文文件。 進入TS551后,必必須裝入IIOT文件件,可用的的有MONN51.IIOT及EEMUL551.IOOT兩種,如如裝入MOON51.IOT: Load.C:CC51TTS51MON551.IOOT CPPUTYPPE(800517) 可惜的是ttScoppe51只只有forr Doss的版本。 3. (33) Moonitoor 511 Monittor511是一個監監控程序通通過PC機機的串口與與目標板進進行通信,MMonittor操作作需要MOON51或或dScoope511 forr Winndow

14、ss,后面部部分將對MMonittor511做較為詳詳細的介紹紹。 4. 4. Ishhell及及uVission 1. (11) Isshelll forr Doss 這是一個ffor DDos的IIDE,直直接在命令令行鍵入IIshelll,則進進入該環境境,它使用用簡單方便便。其命令令行與DOOS命令行行具有同樣樣的功能,對對單模塊的的Projject直直接由菜單單進行編譯譯連接,對對多模塊的的projject。則通過批批處理,BBAT文件件進行編譯譯連接,然然后通過菜菜單控制由由dScoope511或tSccope551對程序序進行調試試,因為是是for dos的的,不做太太詳細介紹紹

15、。 2. (22) uVVisioon foor Wiindowws uVisiion ffor WWindoows是一一個標準的的Winddows應應用程序,它它是C511的一個集集成軟件開開發平臺,具具有源代碼碼編輯、pprojeect管理理、集成的的makee等功能,它它的人機界界面友好,操操作方便,是是開發者的的首選,具具體配置及及使用見第第五部分。 2. 第二二章 Keeil CC51軟件件使用詳解解 1. 第一一節 Keeil CC51編譯譯器的控制制指令 C51編譯譯器的控制制指令分為為三類:源源文件控制制類,目標標文件控制制類及列表表控制類。 1. 1. 源文件件控制類 NOE

16、XTTEND:C51源源文件不允允許使用AANSI C擴展功功能。 DEFINNE(DFF):定義義預處理(在C511命令行)。 2. 2. 目標文文件(Obbjectt)控制類類: COMPAACT LLARGEE SMAALL 選選編譯模式式 DEBUGG(DB) 包含調調試信息,以以供仿真器器或dSCCope551使用。 NOAMAAKE(NNOAM) 禁止AAutoMMake信信息記錄 NOREGGPARMMS 禁止止用寄存器器傳遞參數數 OBJECCTEXTTEND(OE) Objeect文件件包含附加加變量類型型信息 OPTIMMIZE(OT) 指定優化化級別 REG) 指定一個個

17、寄存器使使用的文件件以供整體體優化用 REGISSTERBBANK(RB) 指定一個個供絕對寄寄存器訪問問的寄存器器區名 SRC 不不生成目標標文件只生生成匯編源源文件 其它控件不不常用。 3. 3. 列表文文件(liistinng)控制制類: CODE(CD):向列表文文件加入匯匯編列表 LISTIINCLUUDE(LLC):顯顯示inddude文文件 SYMBOOLS(SSB):列列表文件包包括模塊內內所有符號號的列表 WARNIINGLEEVEL(WL):選擇“警警告”級別別 2. 第二二節 dSScopee51的使使用 1. 1. dSccope551 foor Doos 總的來說dd

18、Scoppe51具具有以下特特性: l 高級語語言顯示模模式 l 集成硬硬件環境模模擬 l 單步或或“GO”執行模式式 l 存儲器器、寄存器器及變量訪訪問 l Wattch表達達式之值 l 函數與與信號功能能 下面,具體體說明在進進入dSccope551 foor Doos之后,如如何實現上上述功能,ddScoppe51采采用下拉菜菜單格式和和窗口顯示示控制,共共有lannguagge、seeriall、exee、reggisteer四個窗窗口,其中中exe為為命令行窗窗口,laanguaage為程程序窗口,sseriaal為串口口窗,reegistter為寄寄存器窗。 1. (11) 高級級

19、語言顯示示模式 單擊主菜單單中的“VView”,第一欄欄中的三條條命令“HHighllevell”、“MMixedd”、“AAssemmbly”分別對所所裝入的程程序按照“高級”、“混合級級”及“匯匯編級”三三種方式顯顯示,以方方便調試使使用。 2. (22) 集成成硬件環境境模擬顯示示 主菜單中“Periipherral”各各條能顯示示模擬硬件件環境的狀狀態,其中中: i/o PPort:顯示各II/O口之之值,對88031而而言SFRR中的P11、P2、P3、PP0與引腳腳之值分別別列出: Interrruptt:顯示55個中斷源源的入口模模式是否允允許,優先先級等中斷斷狀態。 Timer

20、r:顯示各各定時/計計數器的模模式,初始始值狀態等等。 int MMessaage:中中斷信息允允許,如為為允許(“”出出現),則則當中斷申申請時,顯顯示中斷源源信息。比比如當中斷斷發生時會會顯示: “inteerruppt Tiimer 0 occcureed”等 A/D cconveerterr: 顯示A/DD轉換器狀狀態無時,則則提示“無無”。 Seriaal:串口口信息顯示示,包括串串口模式、波特產等等 Otherr:其它器器件,如為為80311則顯示“ 無” 3. (33) 單步步或“Goo”執行 “F8”單單步執行,“F5”全速執執行到斷點點。或選主主菜單中TTracee單步執行行

21、CPU中中的Go全全速執行。 4. (44) 存儲儲器寄存器器及變量訪訪問 外部存儲器器管理MAAP菜單:設置(sset)、取消(rresett)、顯示示(Dissplayy)處理可可用存儲空空間。 修改Codde代碼:ASM命命令 存儲器顯示示命令:DD 類別為為(X、DD、I、BB、C) 修改存儲器器命令:EE 有以下下幾種命令令EB、EEC、EII、EL、EF、EEP 復雜數據類類型顯示:Objeect命令令;用以顯顯示結構或或數組的內內容。欲使使此命令有有效,C551編譯器器必須有DDB及OBBJECTTEXTEEND兩條條。 反匯編命令令:U 5. (55) “WWatchh”表達式

22、式之值 在Vieww菜單的“Watcch”一欄欄中有四項項:其中包包括定義WWatchh Poiint(DDefinne)、刪刪除Wattch PPointt(remmove,killl alll),及自自動更新選選項。 也可用WSS、WK等等命令代替替,下面具具體看“表表達式”類類型: dScoppe51一一次最多可可設16個個WtchhPoinnt表達式式,顯示于于Watcch Wiindoww之中,表表達式可以以是簡單變變量,也可可是復雜數數據類型如如結構、數數組和指向向結構的指指針等,例例如: WS *ptimme WS pptimeehouur WS ssome_recoordoo,

23、annalogg等等 6. (66) 關于于.IOFF文件 啟動DS551后必須須裝入.IIOF文件件才能使CCPU及PPerippheraal各項起起作用,這這個函數的的使用是依依據80551系列CCPU的不不同特點,裝裝入80551各CPPU硬件設設備模擬驅驅動文件,比比如80331CPUU就必須lload DS511目錄下的的80511.IOFF。 2. 2. dSccope for Winddows dScoppe foor wiindowws具有ddScoppe foor doos的全部部功能,此此外,它還還具有以下下明顯的優優點: (1) 標標準的Wiindowws界面,操操作更容

24、易易更簡單; (2) 常常用操作多多用對話框框,而非DDos的行行命令方式式; (3) 窗窗口資源更更加豐富:存儲器窗窗口、覆蓋蓋率分析、運行狀態態分析窗口口,加強了了調試功能能; 因為dSccope for Winddows功功能強大,具具體操作在在第八章詳詳細介紹。 3. 第三三節 Moonitoor51及及其使用 1. 1. Monnitorr51對硬硬件的要求求 (1) 硬硬件系統為為51系列列CPU; (2) 帶帶5K外部部程序存儲儲器(從OO地址開始始),存放放Moniitor551程序; (3) 2256Byytes的的外部數據據存儲器以以及5K的的跟蹤緩沖沖區,此外外,外部數數

25、據存儲器器必須足夠夠容納所有有應用程序序代碼及數數據,且所所有外部數數據存儲器器必須為馮馮諾伊曼曼存儲器,即即能一致訪訪問XDAATA與CCode空空間。 (4) 一一個定時器器作為波特特率發生器器供串口使使用; (5) 66 Byttes的空空余堆棧。 2. 2. Monn51的使使用 Mon511的使用途途徑有三種種方式: (1) DDos行命命令方式 即先用innstalll對MOON51進進行配置,然然后用MOON51進進入Monnitorr狀態,啟啟用各種命命令對Moonitoor51進進行調試。 (2) ttScoppe51方方式 啟動tSccope551裝入TTS51目目錄下的M

26、MON511.IOTT驅動文件件,與目標標板通信。 (3) ddScoppe51 for Winddows方方式 在選CPUU驅動文件件時,選“MON551.dlll”,則則檢查目標標板并進入入MON551狀態。 3. 3. MONN51的配配置 (1) MMON511 forr Doss的配置 運行insstalll文件(在在MON551目錄下下),不同同的參數可可以配置不不同的硬件件環境。IINSTAALL SSeriaaltyppe xxdstaastarrtcoodesttartbankkPRROMCHHECK,具具體說明見見MON551幫助文文件或使用用手冊。 (2) MMON511

27、 forr Winndowss的配置 在啟用MOON51.dll時時,會使得得系統自動動檢查目標標板連接,如如配置不對對,則彈出出“Connfiguuratiion”對對話框,設設置PC串串口,波特特率等,完完畢單擊“applly”有效效。 4. 4. 串口連連接圖: 收發交叉互互連,RTTS、CTTS直連,DDSR、DDTR直連連,具體引引腳排列參參考串口資資料。 5. 5. MONN51命令令及使用 詳細的MOON51命命令可參閱閱幫助。 4. 第四四節 集成成開發環境境(IDEE)的使用用 1. 1. Ishhell for Dos的的使用 進入Ishhell之之后看到兩兩個窗口:一個是

28、文文件窗口,一一個是Doos命令行行窗口,窗窗口上方是是下拉式的的命令菜單單,其中的的Filees控制文文件窗口的的顯隱。 使用Ishhell,第第一步就是是配置系統統,即要學學習兩個文文件的修改改與創建: 1. (11) Isshelll.CFGG文件 每一個prrojecct都有一一個Ishhell.CFG,其其中存放有有“Opttion菜菜單和Seetup菜菜單下的部部分信息;Belll enaabledd、Monnochrrome enabbled、Edittor SSeleccted、CRT Linees、taargett envviromment、namee of userr ed

29、iit、Auutomaatic loadd forr connfiguuratiion eenablled、 enabbled、 forr 、trransllate commmand linee conntrolls、prrojecct naame等。 對每個prrojecct都必須須設置以上上信息,然然后存盤“setuup”的的的“savve”,這這樣才可正正式開始下下面工作。 2. (22) ISShelll.coll文件 對IDE顏顏色設置,如如不改動,可可以缺省為為主。 3. (33) CDDF文件 該文件位于于BIN目目錄下,每每一文件定定義一組外外部函數工工具包,即即定義外部部環境

30、如88051.CDF,UUSER.CDF等等,開發者者可修改CCDF文件件,供自己己使用,至至于CDFF文件內容容可查看一一下80551.CDDF即可知知道。注意意.CDFF文件是IIshelll系統的的核心所在在,不同的的CDF文文件可使本本IDE適適用于不同同的編譯、連接系統統,即本IIDE并不不僅適于CC51。 下面談一談談Autoomakee工具: C51的AAutommake是是一個prrojecct管理器器,在80051工具具包中以OOBJECCT文件形形式保留了了一個prrojecct的信息息,AuttoMakke用這些些信息來進進行proojectt管理,一一旦手工建建立一個p

31、projeect,AAutommake可可生成一個個新的OBBJECTT,AuttoMakke利用此此文件來編編譯那些修修改過的文文件。 Autommake支支持C511、A511、L511/BL551、C1166、AA166、L1666等編譯連連接器。點點中主菜單單中的Auutomaake即運運行本工具具。 Ishelll foor Doos使用比比較繁瑣,推推薦使用uuVisiion ffor wwindoows。 2. 2. uViisionn forr winndowss的使用 uVisiion是一一個標準的的winddows應應用程序,其其編譯功能能、文件處處理功能、projject

32、處處理功能、窗口功能能以及工具具引用功能能(如A551、C551、PLL/M411、BL551 dSScopee等)等都都較Ishhell for Dos要要強得多。 uVisiion采用用BL511作連接器器,因為BBL51兼兼容L511,所以一一切能在DDos下工工作的prrojecct都可以以到uViisionn中進行連連接調試。 uVisiion采用用dScoope ffor wwindoows作調調試器,該該調試器支支持MONN51及系系統模擬兩兩種方式,功功能較foor DOOS要強大大好用,調調試功能強強大。 注意: (1) OOptioon菜單下下的各項要要會使用,其其中A51

33、1、C511、PL/M51、BL511定義各文文件所使用用的編譯、連接控制制指令,ddScoppe定義一一個dSccope初初始化文件件。Makke則是定定義一個mmake文文件。 (2) 進進入調試是是在RUNN菜單下運運行dSccope。 (3) pprojeect中包包括新建、打開、修修改、更新新、編譯、連接等ppojecct處理,具具體使用可可參考后面面的例子。 3. 第三三章 Keeil CC51 vvs 標準準C 深入理解并并應用C551對標準準ANSIIC的擴展展是學習CC51的關關鍵之一。因為大多多數擴展功功能都是直直接針對88051系系列CPUU硬件的。大致有以以下8類: l

34、 80551存儲類類型及存儲儲區域 l 存儲模模式 l 存儲器器類型聲明明 l 變量類類型聲明 l 位變量量與位尋址址 l 特殊功功能寄存器器(SFRR) l C511指針 l 函數屬屬性 具體說明如如下(80031為缺缺省CPUU)。 1. 第一一節 Keeil CC51擴展展關鍵字 C51 VV4.0版版本有以下下擴展關鍵鍵字(共119個): _at_ idatta sffr16 alieen innterrrupt smalll bdataa larrge _taskk_ Coode bbit ppdataa usingg reeentraant xxdataa commpactt sb

35、iit daata ssfr 2. 第二二節 內存存區域(MMemorry Arreas): 1. 1. Praagramm Areea: 由Codee說明可有有多達644kByttes的程程序存儲器器 2. 2. Intternaal Daata MMemorry: 內部數據存存儲器可用用以下關鍵鍵字說明: data:直接尋址址區,為內內部RAMM的低1228字節 00H7FH idataa:間接尋尋址區,包包括整個內內部RAMM區 000HFFFH bdataa:可位尋尋址區, 20H2FH 3. 3. Extternaal Daata MMemorry 外部RAMM視使用情情況可由以以下

36、關鍵字字標識: xdataa:可指定定多達644KB的外外部直接尋尋址區,地地址范圍00000HH0FFFFFH pdataa:能訪問問1頁(225bByytes)的外部RRAM,主主要用于緊緊湊模式(Comppact Modeel)。 4. 4. Speeciacc Funnctioon Reegistter MMemorry 8051提提供1288Bytees的SFFR尋址區區,這區域域可位尋址址、字節尋尋址或字尋尋址,用以以控制定時時器、計數數器、串口口、I/OO及其它部部件,可由由以下幾種種關鍵字說說明: sfr:字字節尋址 比如 ssfr PP0=0 xx80;為為PO口地地址為80

37、0H,“”后HFFH之之間的常數數。 sfr166:字尋址址,如sffr16 T2=00 xcc;指定Tiimer22口地址TT2L=0 xxcc TT2H=00 xCD sbit:位尋址,如如sbitt EA=0 xAFF;指定第第0 xAFF位為EAA,即中斷斷允許 還可以有如如下定義方方法: sbit 0V=PPSW22;(定義義0V為PPSW的第第2位) sbit 0V00XDO2;(同同上) 或bit 0V-0 xD22(同上)。 3. 第三三節 存儲儲模式 存儲模式決決定了沒有有明確指定定存儲類型型的變量,函函數參數等等的缺省存存儲區域,共共三種: 1. 1. Smaall模式式

38、所有缺省變變量參數均均裝入內部部RAM,優優點是訪問問速度快,缺缺點是空間間有限,只只適用于小小程序。 2. 2. Commpactt模式 所有缺省變變量均位于于外部RAAM區的一一頁(2556Byttes),具具體哪一頁頁可由P22口指定,在在STARRTUP.A51文文件中說明明,也可用用pdatta指定,優優點是空間間較Smaall為寬寬裕速度較較Smalll慢,較較largge要快,是是一種中間間狀態。 3. 3. larrge模式式 所有缺省變變量可放在在多達644KB的外外部RAMM區,優點點是空間大大,可存變變量多,缺缺點是速度度較慢。 提示:存儲儲模式在CC51編譯譯器選項中中

39、選擇。 4. 第四四節 存儲儲類型聲明明 變量或參數數的存儲類類型可由存存儲模式指指定缺省類類型,也可可由關鍵字字直接聲明明指定。各各類型分別別用:coode,ddata,idatta,xddata,pdatta說明,例例: data uar11 char codee arrray “hhelloo!”; unsiggned charr xdaata aarr110444; 5. 第五五節 變量量或數據類類型 C51提供供以下幾種種擴展數據據類型: bit 位位變量值為為0或1 sbit 從字節中中定義的位位變量 00或1 sfr ssfr字節節地址 002555 sfr166 sfrr字地址

40、 0655535 其余數據類類型如:cchar,enumm,shoort,iint,llong,floaat等與AANSI C相同。 6. 第六六節 位變變量與聲明明 1. 1. bitt型變量 bit型變變量可用變變量類型,函函數聲明、函數返回回值等,存存貯于內部部RAM220H22FH。 注意: (1) 用用praagma disaable說說明函數和和用“ussign”指定的函函數,不能能返回biit值。 (2) 一一個bitt變量不能能聲明為指指針,如bbit *ptr;是錯誤的的 (3) 不不能有biit數組如如:bitt arrr5;錯誤。 2. 2. 可位尋尋址區說明明20H2F

41、H 可作如下定定義: int bbdataa i; char bdatta arrr3, 然后: sbit bitooin00;sbiit biit15=I155; sbit arr007=arrr07;ssbit arr115=arrri7; 7. 第七七節 Keeil CC51指針針 C51支持持一般指針針(Gennericc Poiinterr)和存儲儲器指針(Memoory_SSpeciific Poinnter). 1. 1. 一般指指針 一般指針的的聲明和使使用均與標標準C相同同,不過同同時還可以以說明指針針的存儲類類型,例如如: long * sttate;為一個指指向lonng

42、型整數數的指針,而而statte本身則則依存儲模模式存放。 char * xddata ptr;ptr為為一個指向向charr數據的指指針,而pptr本身身放于外部部RAM區區,以上的的longg,chaar等指針針指向的數數據可存放放于任何存存儲器中。 一般指針本本身用3個個字節存放放,分別為為存儲器類類型,高位位偏移,低低位偏移量量。 2. 2. 存儲器器指針 基于存儲器器的指針說說明時即指指定了存貯貯類型,例例如: char dataa * sstr;sstr指向向dataa區中chhar型數數據 int xxdataa * ppow; pow指指向外部RRAM的iint型整整數。 這種

43、指針存存放時,只只需一個字字節或2個個字節就夠夠了,因為為只需存放放偏移量。 3. 3. 指針轉轉換 即指針在上上兩種類型型之間轉化化: l 當基于于存儲器的的指針作為為一個實參參傳遞給需需要一般指指針的函數數時,指針針自動轉化化。 l 如果不不說明外部部函數原形形,基于存存儲器的指指針自動轉轉化為一般般指針,導導致錯誤,因因而請用“inccludee”說明所所有函數原原形。 l 可以強強行改變指指針類型。 8. 第八八節 Keeil CC51函數數 C51函數數聲明對AANSI C作了擴擴展,具體體包括: 1. 1. 中斷函函數聲明: 中斷聲明方方法如下: void seriial_IISR

44、 () innterrrupt 4 uusingg 1 /* ISSR */ 為提高代碼碼的容錯能能力,在沒沒用到的中中斷入口處處生成irret語句句,定義沒沒用到的中中斷。 /* deefinee nott useed innterrrupt, so geneeratee IRRET in ttheirr enttrancce */ void exteern0_ISR() innterrrupt 0 /* nnot uused */ void timeer0_IISR () innterrrupt 1 /* nnot uused */ void exteern1_ISR() innterrr

45、upt 2 /* nnot uused */ void timeer1_IISR () innterrrupt 3 /* nnot uused */ void seriial_IISR () innterrrupt 4 /* nnot uused */ 2. 2. 通用存存儲工作區區 3. 3. 選通用用存儲工作作區由ussing x聲明,見見上例。 4. 4. 指定存存儲模式 由smalll coompacct 及llargee說明,例例如: void fun11(voiid) ssmalll 提示:smmall說說明的函數數內部變量量全部使用用內部RAAM。關鍵鍵的經常性性的耗時的的地方可

46、以以這樣聲明明,以提高高運行速度度。 5. 5. #prragmaa dissablee 在函數前聲聲明,只對對一個函數數有效。該該函數調用用過程中將將不可被中中斷。 6. 6. 遞歸或或可重入函函數指定 在主程序和和中斷中都都可調用的的函數,容容易產生問問題。因為為51和PPC不同,PPC使用堆堆棧傳遞參參數,且靜靜態變量以以外的內部部變量都在在堆棧中;而51一一般使用寄寄存器傳遞遞參數,內內部變量一一般在RAAM中,函函數重入時時會破壞上上次調用的的數據。可可以用以下下兩種方法法解決函數數重入: a、在相應應的函數前前使用前述述“#prragmaa dissablee”聲明,即即只允許主主

47、程序或中中斷之一調調用該函數數; b、將該函函數說明為為可重入的的。如下: void funcc(parram) rreenttrantt; KeilCC51編譯譯后將生成成一個可重重入變量堆堆棧,然后后就可以模模擬通過堆堆棧傳遞變變量的方法法。 由于一般可可重入函數數由主程序序和中斷調調用,所以以通常中斷斷使用與主主程序不同同的R寄存存器組。 另外,對可可重入函數數,在相應應的函數前前面加上開開關“#ppragmma nooareggs”,以以禁止編譯譯器使用絕絕對寄存器器尋址,可可生成不依依賴于寄存存器組的代代碼。 7. 7. 指定PPL/M51函數數 由alieen指定。 4. 第四四章

48、 Keeil CC51高級級編程 本章討論以以下內容: l 絕對地地址訪問 l C與匯匯編的接口口 l C511軟件包中中的通用文文件 l 段名轉轉換與程序序優化 1. 第一一節 絕對對地址訪問問 C51提供供了三種訪訪問絕對地地址的方法法: 1. 1. 絕對宏宏: 在程序中,用用“inncludde”即可使用用其中定義義的宏來訪訪問絕對地地址,包括括: CBYTEE、XBYYTE、PPWORDD、DBYYTE、CCWORDD、XWOORD、PPBYTEE、DWOORD 具體使用可可看一看aabsaccc.h便便知 例如: rval=CBYTTE0 xx00022;指向向程序存貯貯器的0000

49、2h地地址 rval=XWORRD 00 x00002;指指向外RAAM的00004h地地址 2. 2. _att_關鍵字字 直接在數據據定義后加加上_att_ coonst即即可,但是是注意: (1)絕對對變量不能能被初使化化; (2)biit型函數數及變量不不能用_aat_指定定。 例如: idataa strruct linkk lisst _aat_ 00 x40;指定liist結構構從40hh開始。 xdataa chaar teext225b _at_0 xE0000;指指定texxt數組從從0E0000H開始始 提示:如果果外部絕對對變量是II/O端口口等可自行行變化數據據,需要

50、使使用vollatille關鍵字字進行描述述,請參考考absaacc.hh。 3. 3. 連接定定位控制 此法是利用用連接控制制指令coode xxdataa pdaata dataa bdaata對“段”地址址進行,如如要指定某某具體變量量地址,則則很有局限限性,不作作詳細討論論。 2. 第二二節 Keeil CC51與匯匯編的接口口 1. 1. 模塊內內接口 方法是用praggma語句句具體結構構是: #praggma aasm 匯編行 #praggma eendassm 這種方法實實質是通過過asm與與ndassm告訴CC51編譯譯器中間行行不用編譯譯為匯編行行,因而在在編譯控制制指令中

51、有有SRC以以控制將這這些不用編編譯的行存存入其中。 2. 2. 模塊間間接口 C模塊與匯匯編模塊的的接口較簡簡單,分別別用C511與A511對源文件件進行編譯譯,然后用用L51將將obj文文件連接即即可,關鍵鍵問題在于于C函數與與匯編函數數之間的參參數傳遞問問題,C551中有兩兩種參數傳傳遞方法。 (1) 通通過寄存器器傳遞函數數參數 最多只能有有3個參數數通過寄存存器傳遞,規規律如下表表: 參數數目 charr intt lonng,flloat 一般指針針 123 RR7R5RR3 R66 & RR7R4 & R55R2 & R3 R4RR7R4R7 RR1R33R1RR3R1R3 (2

52、) 通通過固定存存儲區傳遞遞(fixxed mmemorry) 這種方法將將bit型型參數傳給給一個存儲儲段中: ?funcctionn_namme?BIIT 將其它類型型參數均傳傳給下面的的段:?ffuncttion_namee?BYTTE,且按按照預選順順序存放。 至于這個固固定存儲區區本身在何何處,則由由存儲模式式默認。 (3) 函函數的返回回值 函數返回值值一律放于于寄存器中中,有如下下規律: returrn tyype RRegisstev 說明 bit 標標志位 由由具體標志志位返回 char/unsiignedd chaar 1_bytee指針 RR7 單字字節由R77返回 in

53、t/uunsiggned int 2_byyte指針針 R6 & R77 雙字節節由R6和和R7返回回,MSBB在R6 long&unsiignedd lonng R44R7 MSB在在R4, LSB在在R7 floatt R4R7 332Bitt IEEEE格式 一般指針 R1RR3 存儲儲類型在RR3 高位位R2 低低R1 (4) SSRC控制制 該控制指令令將C文件件編譯生成成匯編文件件(.SRRC),該該匯編文件件可改名后后,生成匯匯編.ASSM文件,再再用A511進行編譯譯。 3. 第三三節 Keeil CC51軟件件包中的通通用文件 在C51LiB目目錄下有幾幾個C源文文件,這幾幾

54、個C源文文件有非常常重要的作作用,對它它們稍事修修改,就可可以用在自自己的專用用系統中。 1. 1. 動態內內存分配 init_mem.C:此文文件是初始始化動態內內存區的程程序源代碼碼。它可以以指定動態態內存的位位置及大小小,只有使使用了innit_mmem( )才可以以調回其它它函數,諸諸如mallloc callloc,rreallloc等。 callooc.c:此文件是是給數組分分配內存的的源代碼,它它可以指定定單位數據據類型及該該單元數目目。 mallooc.c:此文件是是mallloc的源源代碼,分分配一段固固定大小的的內存。 reallloc.cc:此文件件是reaallocc.

55、c源代代碼,其功功能是調整整當前分配配動態內存存的大小。 2. 2. C511啟動文件件STARRTUP.A51 啟動文件SSTARTTUP.AA51中包包含目標板板啟動代碼碼,可在每每個proojectt中加入這這個文件,只只要復位,則則該文件立立即執行,其其功能包括括: l 定義內內部RAMM大小、外外部RAMM大小、可可重入堆棧棧位置 l 清除內內部、外部部或者以此此頁為單元元的外部存存儲器 l 按存儲儲模式初使使化重入堆堆棧及堆棧棧指針 l 初始化化80511硬件堆棧棧指針 l 向maain( )函數交交權 開發人員可可修改以下下數據從而而對系統初初始化 常數名 意意義 IDATAAL

56、EN 待清內部部RAM長長度 XDATAA STAART 指指定待清外外部RAMM起始地址址 XDATAALEN 待清外部部RAM長長度 IBPSTTACK 是否小模模式重入堆堆棧指針需需初始化標標志,1為為需要。缺缺省為0 IBPSTTACKTTOP 指指定小模式式重入堆棧棧頂部地址址 XBPSTTACK 是否大模模式重入堆堆棧指針需需初始化標標志,缺省省為0 XBPSTTACKTTOP 指指定大模式式重入堆棧棧頂部地址址 PBPSTTACK 是否Coompacct重入堆堆棧指針,需需初始化標標志,缺省省為0 PBPSTTACKTTOP 指指定Commpactt模式重入入堆棧頂部部地址 PP

57、AGEEENABBLE PP2初始化化允許開關關 PPAGEE 指定PP2值 PDATAASTARRT 待清清外部RAAM頁首址址 PDATAALEN 待清外部部RAM頁頁長度 提示:如果果要初始化化P2作為為緊湊模式式高端地址址,必須:PPAGGEENAAGLE1,PPPAGE為為P2值,例例如指定某某頁10000H110FFHH,則PPPAGE10H,而而且連接時時必須如下下: L51 PDDATA(10800H),其其中10880H是11000HH10FFFH中的的任一個值值。 以下是STTARTUUP.A551代碼片片斷,紅色色是經常可可能需要修修改的地方方: ; ; Thiis pp

58、art of tthe CC51 CCompiiler packkage ; Coppyrigght KKEIL ELEKKTRONNIK GGmbH 19900 ; ; STAARTUPP.A511: Thhis ccode is eexecuuted afteer prrocesssor reseet. ; ; To trannslatte thhis A51 withh thee folllowiing iinvoccatioon: ; ; A511 STAARTUPP.A511 ; ; To linkk thee moddifieed STTARTUUP.OBBJ yyour appl

59、licattion use the folllowinng ; L511 invvocattion: ; ; L511 , STAARTUPP.OBJJ ; ; ; ; Useer-deefineed Poower-On IInitiializzatioon off Memmory ; ; Witth thhe foollowwing EQU stattemennts tthe iinitiializzatioon off memmory ; at proccessoor reeset can be ddefinned: ; ; ; tthe aabsollute starrt-adddres

60、ss off IDAATA mmemorry iss alwways 0 IDATAALEN EQU 80H ; thhe leengthh of IDATTA meemoryy in bytees. ; XDATAASTARRT EQQU 0HH ; tthe aabsollute starrt-adddresss off XDAATA mmemorry XDATAALEN EQU 0H ; thee lenngth of XXDATAA memmory in bbytess. ; PDATAASTARRT EQQU 0HH ; tthe aabsollute starrt-adddress

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論