版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、附錄A Keil Vision4 集成開發(fā)環(huán)境與C語言程序設(shè)計Keil公司是一家業(yè)界領(lǐng)先的微控制器(MCU)軟件開發(fā)工具的獨立供應(yīng)商。Keil公司由兩家私人公司聯(lián)合運營,分別是德國慕尼黑的Keil Elektronik GmbH和美國德克薩斯的Keil Software Inc。Keil公司制造和銷售種類廣泛的開發(fā)工具,包括ANSI C編譯器、宏匯編程序、調(diào)試器、連接器、庫管理器、固件和實時操作系統(tǒng)核心(real-time kernel)。有超過10萬名微控制器開發(fā)人員在使用這種得到業(yè)界認可的解決方案。其Keil C51編譯器自1988年引入市場以來成為事實上的行業(yè)標(biāo)準(zhǔn),并支持超過500種80
2、C51變種。Keil公司在2007年被ARM公司收購。其兩家公司分別更名為ARM Germany GmbH和ARM Inc和。2009年2月,Keil公司發(fā)布了Keil Vision4,Keil Vision4引入靈活的窗口管理系統(tǒng),使開發(fā)人員能夠使用多臺監(jiān)視器,提供可在虛擬接口上隨意放置窗口的完整控制能力。新的用戶界面可以更好地利用屏幕空間和更有效地組織多個窗口,提供一個整潔,高效的環(huán)境來開發(fā)應(yīng)用程序。新版本支持更多最新的80C51兼容芯片及ARM芯片,還添加了一些其他新功能,如系統(tǒng)查看器(System Viewer)窗口、多項目工作空間(Multi-Project Workspace)等。
3、附A.1 Keil Vision4 集成開發(fā)環(huán)境附A.1.1簡介Keil Vision4集成開發(fā)環(huán)境(Integrated Development Environment,IDE)是一個基于Windows的開發(fā)平臺,它包含高效的源代碼編輯器、項目(Project)管理器和程序生成(MAKE)工具。Keil Vision4支持所有的80C51嵌入式應(yīng)用工具,它包括C/C+編譯器宏匯編器、連接/定位器和一個HEX文件生成器。Keil Vision4通過以下特性加速MCU嵌入式應(yīng)用系統(tǒng)的開發(fā)過程: 全功能的源代碼編輯器; 器件庫用來配置開發(fā)工具設(shè)置; 項目管理器用來創(chuàng)建和維護項目; 集成的MAKE工
4、具可以匯編、編譯和連接用戶的嵌入式應(yīng)用; 所有開發(fā)工具的設(shè)置都是以對話框的形式出現(xiàn)的; 具有真正的源代碼級的對CPU和外圍器件的調(diào)試器; 高級GDI接口用來在目標(biāo)硬件上進行軟件調(diào)試以及和Monitor-51進行通信; 與開發(fā)工具手冊、器件數(shù)據(jù)手冊和用戶指南有直接的鏈接。1.C51 編譯器和A51匯編器源代碼由Vision4創(chuàng)建,并被C51編譯成A51匯編。編譯器和匯編器從源代碼生成可重定位的目標(biāo)文件。Keil C51編譯器完全遵照ANSIC語言標(biāo)準(zhǔn),支持C語言的所有標(biāo)準(zhǔn)特性。另外,直接支持80C51結(jié)構(gòu)的幾個特性被添加里面。Keil A51宏匯編器支持80C51及其派生系列的全部指令集。2.L
5、IB51庫管理器LIB51庫管理器允許從由編譯器或匯編器生成的目標(biāo)文件創(chuàng)建目標(biāo)庫。庫是一種被特別地組織過并在以后可以被連接重用的對象模塊。當(dāng)連接器處理一個庫時,僅僅那些被使用的目標(biāo)模塊才被真正使用。3.BL51連接器/定位器BL51連接器/定位器利用從庫中提取的目標(biāo)模塊和由編譯器或匯編器生成的目標(biāo)模塊創(chuàng)建一個絕對地址的目標(biāo)模塊。一個絕對地址目標(biāo)模塊或文件包含不可重定位的代碼和數(shù)據(jù)。所有的代碼和數(shù)據(jù)被安置在固定的存儲器單元中。此絕對地址目標(biāo)文件可以用來:寫入EPROM或其他存儲器件。通過Vision4調(diào)試器來模擬和調(diào)試。通過仿真器來測試程序。4.OH51目標(biāo)文件轉(zhuǎn)換器OH51目標(biāo)文件轉(zhuǎn)換器可以把
6、前面編譯連接好的目標(biāo)文件轉(zhuǎn)換成能寫入EPROM中的HEX文件。5. Vision4調(diào)試器Vision4源代碼級調(diào)試器是一個理想的快速、可靠的程序調(diào)試器。此調(diào)試器包含一個高速模擬器,能夠模擬整個8051系統(tǒng),包括片上外圍器件和外部硬件。當(dāng)從器件庫中選擇器件時,這個器件的特性將自動配置。Vision4調(diào)試器為在實際目標(biāo)板上測試程序提供了以下2種方法:安裝MON51目標(biāo)監(jiān)控器到目標(biāo)系統(tǒng)并且通過Monitor-51接口下載程序;利用高級的GDI(AGDI)接口,把Vision4調(diào)試器綁定到目標(biāo)系統(tǒng)。6.Monitor-51Vision4調(diào)試器支持用Monitor-51進行目標(biāo)板調(diào)試。此監(jiān)控程序駐留在目
7、標(biāo)板的存儲器里,它利用串口和Vision4調(diào)試器進行通信。利用Monitor-51,Vision4調(diào)試器可以對目標(biāo)硬件實行源代碼級的調(diào)試。7.RTX-51實時操作系統(tǒng)RTX-51實時操作系統(tǒng)是一個針對8051系統(tǒng)的多任務(wù)核。RTX-51實時內(nèi)核從本質(zhì)上簡化了對實時事件反應(yīng)速度要求高的復(fù)雜應(yīng)用系統(tǒng)的設(shè)計、編程和調(diào)試。RTX-51實時內(nèi)核是完全集成到C51編譯器中的,從而方便使用。任務(wù)描述表和操作系統(tǒng)的連接由BL51連接器/定位器自動控制。附A.1.2安裝了解了Keil Vision4的一些基本概況后,下面開始在計算機上搭建MCU的集成開發(fā)環(huán)境。操作步驟如下:首先準(zhǔn)備Keil Vision4安裝源
8、文件,雙擊Vision4的Setup安裝文件,彈出Keil Vision4安裝的歡迎界面,如圖A-1所示。圖A-1 Keil Vision4歡迎界面單擊“Next”按鈕,彈出“License Agreement”對話框,如圖A-2所示。這里顯示了一些用戶安裝的協(xié)議和許可的要求,選擇“I agree to all the terms of the preceding License Agreement”即可,否則無法進入下一步。圖A-2 “License Agreement”對話框單擊“Next”按鈕,彈出“Folder Selection”對話框,如圖A-3所示。系統(tǒng)默認安裝在“C:Keil”
9、文件夾下。在這里,單擊“Browse”按鈕,可以選擇安裝的目錄。圖A-3 “Folder Selection”對話框單擊“Next”按鈕,彈出”Customer Information”對話框,如圖A-4所示。此時,用戶需要輸入用戶名、公司名稱和E-mail,缺一不可。圖A-4 用戶信息輸入單擊”Next”按鈕,下面便開始自動安裝。Keil Vision4安裝完成后,彈出安裝完成對話框,如圖A-5所示。這里的幾個選項的含義如下。圖A-5 完成安裝Show Release Notes:顯示安裝的版本注釋信息。Add Example projects to the recently used pr
10、oject list:添加一個示例程序到當(dāng)前項目列表中。Retain currentVision configuration:保持當(dāng)前的設(shè)置(如果是第一次安裝,則不存在這個選項)。最后,單擊"Finish"按鈕,便可以結(jié)束Keil Vision4集成開發(fā)環(huán)境的安裝。需要注意的是,剛剛安裝完的版本是試用版(Evaluation Version),代碼長度有2KB限制。如果代碼長度超過2KB,可與Keil公司()聯(lián)系,購買LIC(License ID Code)。附A.1.3 Keil Vision4集成開發(fā)環(huán)境界面安裝完成后,會在桌面上出現(xiàn)Keil Vision4程序的圖標(biāo),
11、并在“開始”程序里增加“Keil Vision4”程序項。從“開始”程序里選擇“Keil Vision4”程序項或者直接雙擊桌面上的Keil Vision4程序圖標(biāo),即可啟動Keil Vision4。啟動Keil Vision4后,如果是第一次運行,則打開工程項目“Hello”,如圖A-6所示。圖A-6 Keil Vision4集成開發(fā)環(huán)境界面這里可以看到,Keil Vision4集成開發(fā)環(huán)境具有典型的Windows界面風(fēng)格。整個編程界面主要包括菜單欄、工具欄、項目管理區(qū)、源代碼工作區(qū)和輸出信息窗口。另外,還有一些功能窗口將在后面逐步介紹。下面我們將帶領(lǐng)讀者逐一認識Keil Vision4集成
12、開發(fā)環(huán)境的主要組成部分。附A.1.4 Keil Vision4菜單命令Keil Vision4的菜單欄提供了項目操作、編輯操作、編譯調(diào)試及幫助等各種常用操作。所有的操作基本上都可以通過菜單命令來實現(xiàn)。為了快速執(zhí)行Keil Vision4的許多功能,有些菜單命令在工具欄上還具有工具條。為了更快速執(zhí)行一些功能,Keil Vision4提供了比工具欄上的工具條更為快捷的操作,即快捷鍵。在Keil Vision4集成開發(fā)環(huán)境中不僅提供了常用功能的默認快捷鍵,同時用戶也可以根據(jù)自己的需要自定義快捷鍵。下面就菜單命令、工具條、快捷鍵分別進行介紹。1File菜單File菜單和標(biāo)準(zhǔn)的Windows軟件的Fil
13、e菜單類似,提供了項目和文件的操作功能。File菜單各個命令的功能如表A-1所示。表A-1 File菜單菜單命令工具條快捷鍵功能說明NewCtrl+N創(chuàng)建一個新的空白文件OpenCtrl+O打開一個已存在的文件Close關(guān)閉當(dāng)前打開的文件SaveCtrl+S保存當(dāng)前打開的文件Save as當(dāng)前文件另存為Save all保存所有打開的文件Device Database打開器件庫License Management產(chǎn)品注冊管理Print Setup設(shè)置打印機PrintCtrl+P打印當(dāng)前文件Print Preview打印預(yù)覽1 . 10列出最近打開的源文件或文本文件Exit退出KeilVision
14、42Edit菜單Edit菜單提供了常用的代碼編輯操作命令。Edit菜單各個命令的功能如表A-2所示。表A-2 Edit菜單菜單命令工具條快捷鍵功能說明UndoCtrl+Z取消上次操作RedoCtrl+Y重復(fù)上次操作CutCtrl+X剪切選定的內(nèi)容CopyCtrl+C復(fù)制選定的內(nèi)容PasteCtrl+V粘貼已復(fù)制的內(nèi)容Navigate BackwardsCtrl+Shift+-光標(biāo)移動到使用Find或go to line命令的前一行Navigate ForwardsCtr+-光標(biāo)移動到使用Find或go to line命令的后一行Insert/Remove BookmarkCtrl+F2設(shè)置/取
15、消當(dāng)前行的標(biāo)簽Go to Next BookmarkF2光標(biāo)移動到下一個標(biāo)簽Go to Previous BookmarkShift+F2光標(biāo)移動到上一個標(biāo)簽Clear All BookmarksCtrl+Shift+F2清除當(dāng)前文件的所有標(biāo)簽FindCtrl+F在當(dāng)前文件中查找ReplaceCtrl+H替換Find in FilesCtrl+Shift+F 在多個文件中查找Incremental FindCtrl+I漸進式尋找Outlining源代碼概要顯示模式Advanced各種高級編輯命令Configuration顏色、字體等高級配置3View菜單View菜單提供了在源代碼編輯和仿真調(diào)試
16、過程中,各個窗口和工具欄的顯示和隱藏命令。View菜單各個命令的功能如表A-3所示。表A-3 View菜單菜單命令工具條功能說明Status Bar顯示/隱藏狀態(tài)條Toolbars顯示/隱藏工具欄Project Window顯示/隱藏項目管理窗口Books Window顯示/隱藏參考書窗口Functions Window顯示/隱藏函數(shù)窗口Templates Window顯示/隱藏模板窗口Source Browser Window顯示/隱藏資源瀏覽器窗口Build Output Window顯示/隱藏輸出信息窗口Find in Files Window顯示/隱藏在所有文件中查找文本窗口Full
17、Screen顯示/隱藏全屏顯示窗口調(diào)試模式下的菜單命令Command Window顯示/隱藏命令行窗口Disassembly Window顯示/隱藏反匯編窗口Symbols Window顯示/隱藏字符變量窗口Registers Window顯示/隱藏寄存器窗口Call Stack Window顯示/隱藏堆棧窗口Watch Windows顯示/隱藏變量子菜單觀察窗口Memory Windows顯示/隱藏存儲器子菜單窗口Serial Windows顯示/隱藏串行口觀察子菜單窗口Analysis Windows顯示/隱藏分析子菜單窗口Trace顯示/隱藏跟蹤子菜單窗口System Viewer顯示/
18、隱藏外設(shè)子菜單窗口Toolbox Window顯示/隱藏自定義工具條窗口Periodic Window Update在程序運行時刷新調(diào)試窗口4Project菜單Project菜單提供了MCU項目的創(chuàng)建、設(shè)置和編譯等命令。Project菜單各個命令的功能如表A-4所示。表A-4 Project菜單菜單命令工具條快捷鍵功能說明New µVision Project.創(chuàng)建新項目New Multi-Project Workspace.創(chuàng)建多項目工作空間Open Project.打開一個已存在的項目Close Project關(guān)閉當(dāng)前項目Export導(dǎo)出當(dāng)前一個或多個項目為Vision3格式Ma
19、nage管理項目的包含文件、庫的路徑及多項目工作空間Select Device for Target name.為當(dāng)前項目選擇一個MCU類型Remove object從當(dāng)前項目中移除選擇的文件或項目組Options for objectAlt+F7設(shè)置當(dāng)前文件、項目或項目組的配置選項Clean target清除編譯過程中創(chuàng)建的中間文件Build targetF7編譯文件并生成應(yīng)用文件Rebuild all target files重新編譯所有文件并生成應(yīng)用文件Batch Build.批量編譯文件并生成應(yīng)用文件Translate fileCtrl+F7編譯當(dāng)前文件Stop build停止編譯當(dāng)前
20、項目1 . 10列出最近打開的項目(最多10個)5Flash菜單Flash菜單提供了下載程序、擦除MCU程序存儲器等操作。這里的命令需要外部的編程器支持才可以使用。Flash菜單各個命令的功能,如表A-5所示。表A-5 Flash菜單菜單命令工具條功能說明Download下載MCU程序Erase擦除程序存儲器Configure Flash Tools.打開配置工具6Debug菜單Debug菜單中的命令大多用于仿真調(diào)試過程中,提供了斷點、調(diào)試方式及邏輯分析等功能。Debug菜單各個命令的功能如表A-6所示。表A-6 Debug菜單菜單命令工具條快捷鍵功能說明Start/Stop Debug Se
21、ssionCtrl+F5開始/停止仿真調(diào)試模式Reset CPU復(fù)位CPU(MCU)RunF5運行程序,直到遇到一個斷點Stop停止運行程序StepF11單步執(zhí)行程序,遇到子程序則進入Step overF10單步執(zhí)行程序,跳過子程序Step outCtrl+F11程序執(zhí)行到當(dāng)前函數(shù)的結(jié)束Run to Cursor lineCtrl+F10程序執(zhí)行到光標(biāo)所在行Show Next Statement顯示下一條指令BreakpointsCtrl+B打開斷點對話框Insert/Remove BreakpointF9設(shè)置/取消當(dāng)前行的斷點Enable/Disable BreakpointCtrl+F9使
22、能/禁止當(dāng)前行的斷點Disable All Breakpoints禁用所有斷點Kill All BreakpointsCtrl+Shift+F9取消所有斷點OS Support打開查看事件、任務(wù)及系統(tǒng)信息的子菜單Execution Profiling打開一個帶有配置選項的子菜單Memory Map打開存儲器空間配置對話框Inline Assembly對某一行進行重新匯編,可以修改匯編代碼Function Editor (Open Ini File)編輯調(diào)試函數(shù)和調(diào)試配置文件Debug Settings設(shè)置調(diào)試參數(shù)7Peripherals菜單Peripherals菜單提供了MCU各種硬件資源的仿
23、真對話框。這里的所有命令都只在仿真調(diào)試環(huán)境下才顯示并可以使用,而且顯示的資源內(nèi)容隨用戶選擇的MCU型號的不同而不同。這里列出一些常用到的Peripherals菜單命令的功能,如表A-7所示。表A-7 Peripherals菜單菜單命令功能說明Interrupt打開中斷仿真對話框I/O Ports打開并行端口仿真對話框Serial打開串口仿真對話框Timer打開定時器仿真對話框Watchdog打開看門狗仿真對話框A/D Converter打開A/D轉(zhuǎn)換器仿真對話框D/A Converter打開D/A轉(zhuǎn)換器仿真對話框I²C Controller打開I2C總線控制器仿真對話框CAN Con
24、troller打開CAN總線控制器仿真對話框8Tools菜單Tools菜單提供了一些第三方軟件的支持,例如PC-Lint。用戶需要額外安裝相應(yīng)的軟件才可以使用。Tools菜單一般使用得比較少,這里僅列出各個命令的功能,如表A-8所示。表A-8 Tool菜單菜單命令功能說明Set-up PC-Lint配置PC-Lint程序Lint用PC-Lint程序處理當(dāng)前編輯的文件Lint All C-Source Files用PC-Lint程序處理項目中所有的C源代碼文件Customize Tools Menu.自定義工具菜單9SVSC菜單SVSC菜單提供了程序的版本控制,該菜單下僅包括“Configure
25、 Version Control”一個命令,用于配置軟件版本。另外,Windows菜單下提供了對工作區(qū)窗口布局的管理,Help菜單提供了一些幫助信息,這里不再具體介紹。附A.2 Keil Vision4匯編語言程序的調(diào)試方法Keil Vision4集成開發(fā)環(huán)境中包括一個項目管理器,它可以使基于80C51內(nèi)核的MCU應(yīng)用系統(tǒng)設(shè)計變得簡單。要創(chuàng)建一個應(yīng)用,需要按下列步驟操作:1.啟動Keil Vision4,新建一個項目文件并從器件庫中選擇一個器件;2.新建一個源文件并把它加入到項目中;3. 設(shè)置目標(biāo)硬件選項;4.編譯項目并生成可以編程到程序存儲器的HEX文件;5. 軟件模擬調(diào)試及下載到MCU中進
26、行仿真調(diào)試。下面通過一個實例,詳細介紹如何在Keil Vision4集成開發(fā)環(huán)境中調(diào)試80C51系列MCU的匯編語言程序?!纠鼳-1】假設(shè)晶振頻率為11.0592MHz,將MCU片外RAM中40H5FH單元中的內(nèi)容全部移到片內(nèi)相同地址區(qū)域,并將原數(shù)據(jù)區(qū)全部清零。附A.2.1啟動Keil Vision4并創(chuàng)建一個項目雙擊桌面Keil Vision4程序圖標(biāo)或單擊開始菜單中的Keil Vision4程序項,啟動Keil Vision4集成開發(fā)環(huán)境。要新建一個項目文件,可以從Keil Vision4的Project菜單中選擇“New Project”項,打開“Create New Project”對
27、話框,如圖A-7所示。圖A-7 “Create New Project”對話框在此對話框的“文件名”欄中輸入項目文件名。建議為每一個項目建立一個獨立的文件夾。首先,在下拉列表中選擇要保存的位置,最好選擇邏輯盤D或E(不要保存在系統(tǒng)盤C,避免因系統(tǒng)重新安裝而丟失文件)。單擊“新建文件夾”,得到一個空文件夾,給該文件夾重命名為“test”(文件夾的名字最好能夠體現(xiàn)項目名稱)。雙擊該文件夾,在“文件名(N)”欄中輸入項目的名稱,如“movedata”,創(chuàng)建一個文件名為“movedata.uvproj”的新項目文件。單擊“保存(S)”按鈕,將彈出“Select Device for Target Ta
28、rget 1”對話框,提示為項目選擇一個MCU。在該對話框中,“Data base”列表框中顯示出各個MCU的生產(chǎn)商。首先找到選用的MCU生產(chǎn)商,單擊前面的“+”號,顯示出Keil Vision4所支持的該公司的MCU型號列表,單擊其中選定的MCU型號。如本例中,選擇Atmel公司的型號為AT89S52的MCU,如圖A-8所示。圖A-8 “Select Device for Target Target 1”對話框單擊“OK”按鈕,彈出如圖A-9所示的對話框,提示是否將標(biāo)準(zhǔn)8051啟動代碼復(fù)制到項目文件夾中并將該文件添加到項目中去。圖A-9 復(fù)制啟動代碼提示對話框在Keil Vision4中,啟
29、動代碼在復(fù)位目標(biāo)系統(tǒng)后立即被執(zhí)行。啟動代碼主要實現(xiàn)以下功能: 清除內(nèi)部數(shù)據(jù)存儲器; 清除外部數(shù)據(jù)存儲器; 清除外部頁存儲器; 初始化small模式下的可重入棧和指針; 初始化large模式下的可重入棧和指針; 初始化compact模式下的可重入棧和指針; 初始化8051硬件棧指針; 傳遞初始化全局變量的控制命令或者在沒有初始化全局變量時給main函數(shù)傳遞命令。在每一個啟動文件中,提供了可供用戶自己修改有來控制程序執(zhí)行的匯編常量。如果只是調(diào)試簡單程序,可以選擇“否(N)”,如果項目復(fù)雜可選擇“是(Y)”。用戶可根據(jù)需要修改啟動代碼,但一般不建議修改啟動代碼。附A.2.2新建一個源文件并把它加入到
30、項目中從“File”菜單中選擇“New”項新建一個源文件,或者單擊工具欄上的按鈕,打開一個空白的編輯窗口,用戶可以輸入程序源代碼。輸入以下程序源代碼: ORG0000H LJMP MAIN ORG 0040HMAIN: MOVSP,#70HMOV R0,#40H MOVR1,#20HLOOP:MOV P2,#00H; 軟件仿真時必須有MOVX A,R0 MOV R0,A MOV A,#00H MOVX R0,A INC R0 DJNZ R1,LOOP END從“File”菜單中選擇“Save”項或者單擊工具欄中的保存按鈕,將文件保存為想要的名字。如果使用匯編語言編寫程序,則文件的后綴名是:.a
31、sm或者.a51,如test.asm,如圖A-10所示(如果使用C語言編寫程序,則文件的后綴名是:.c,以下步驟與匯編語言程序相同)。保存后,Keil Vision4將高亮顯示匯編語言語法字符,如圖A-11所示。圖A-10 保存源文件圖A-11 保存后程序顯示界面源文件創(chuàng)建完成后,就可以將它加入到項目中(如不加入,則無法對此文件操作)。Keil Vision4提供了幾種方法讓用戶把源文件加入到項目中。(1)在“Project Workspace”(項目管理器)窗口中單擊“Target 1”前面的“+”號,展開下一層的“Source Group 1”文件夾,在“Source Group 1”文件
32、夾上單擊鼠標(biāo)右鍵,彈出快捷菜單,如圖A-12所示。從彈出的快捷菜單中單擊“Add Files to Group Source Group 1”項,彈出“Add Files to Group Source Group 1”對話框,如圖A-13所示。圖A-12 將源文件加入到項目中圖A-13 “Add Files to Group Source Group 1”對話框在該對話框中,默認的文件類型是“C Source file (*.c)”。若使用匯編語言進行設(shè)計,則需要從“文件類型”下拉列表框中選擇“Asm Source file (*.S*;*.src;*.a*)”文件類型。這樣,以.asm為擴
33、展名的匯編語言程序文件才會出現(xiàn)在文件列表框中。從文件列表框中選擇要加入的文件并雙擊即可添加到項目中;也可以單擊選中文件,然后單擊“Add”按鈕將該文件加入項目中。添加文件后,對話框不會自動關(guān)閉,而是繼續(xù)等待添加其它文件,用戶可單擊“Close”按鈕,關(guān)閉對話框。當(dāng)給項目添加文件成功后,項目管理器的“Source Group 1”文件夾前面會出現(xiàn)“+”號,單擊它可看到test.asm文件已經(jīng)包含在項目中了。雙擊它即可打開進行修改。附A.2.3設(shè)置目標(biāo)硬件選項Keil Vision4允許用戶為目標(biāo)硬件設(shè)置選項??梢酝ㄟ^單擊工具條圖標(biāo)、菜單“Project”的“Options for Target
34、Target 1”項或者在“Project Workspace”窗口的“Target 1”上單擊鼠標(biāo)右鍵,打開“Options for Target Target 1”對話框。在各選項卡中,可以修改與目標(biāo)硬件及所選MCU的片上集成器件的所有參數(shù),如圖A-14所示。圖A-14 Options for Target Target 1對話框主要設(shè)置CPU的時鐘頻率、編譯器的存儲模式等。晶振頻率設(shè)置應(yīng)與實際使用的晶振頻率相同。如果僅進行軟件模擬調(diào)試,則采用默認設(shè)置即可。附A.2.4編譯項目并生成可以編程到程序存儲器的HEX文件單擊工具欄中的“Rebuild”圖標(biāo),可以編譯所有的源文件并生成應(yīng)用。當(dāng)程序
35、中有語法錯誤時,Keil Vision4將在“Build Output”窗口顯示錯誤或者警告信息。雙擊一行錯誤提示信息,將打開此信息對應(yīng)的文件,并定位到語法錯誤處,如圖A-15所示。在錯誤信息上雙擊鼠標(biāo),光標(biāo)會自動定位到出現(xiàn)該錯誤的程序行上。例如,如圖A-15所示,出現(xiàn)“test.asm(15): error A45: UNDEFINED SYMBOL (PASS-2)”(未定義符號)錯誤信息,雙擊該信息,光標(biāo)定位到出現(xiàn)該錯誤的行上。用戶很容易發(fā)現(xiàn)錯誤原因是將標(biāo)號“LOOP”錯寫成“LOO”,漏掉字母P。由輸入引起的用戶常犯的編譯錯誤還有:錯將數(shù)字0輸成字母o,使用中文輸入法輸入了全角逗號(,
36、)和冒號(:),大于9FH(如A8H)的十六進制數(shù)忘記在前面加上數(shù)字0(正確寫法0A8H)等。根據(jù)錯誤信息提示,修改程序中出現(xiàn)的錯誤,直到編譯成功為止。一旦編譯成功,則顯示如圖A-16所示信息。提示信息最后一行為“"movedata" - 0 Error(s), 0 Warning(s).”,不但沒有錯誤,而且最好也沒有警告。需要注意的是,Keil Vision4默認是不生成HEX文件的。這時就需要設(shè)置目標(biāo)硬件選項中的“Output”選項卡,選中“Create HEX File”前面的復(fù)選框,如圖A-17所示。 圖A-15 編譯出現(xiàn)錯誤信息時的提示圖A-16 編譯成功提示信
37、息圖A-17 生成HEX文件的選項附A.2.5軟件模擬調(diào)試及下載到MCU中進行仿真調(diào)試一旦編譯成功,就可以進行程序的仿真調(diào)試了。對于程序的調(diào)試,有兩種方式:一種是軟件模擬仿真調(diào)試,另一種就是下載到硬件仿真器或者MCU中進行在線仿真調(diào)試。一般情況下,首先使用軟件模擬仿真調(diào)試,通過之后,再用硬件仿真器或者直接下載到MCU中進行在線仿真調(diào)試。由于軟件模擬仿真調(diào)試與在線仿真調(diào)試方法基本相同,所以就以軟件模擬仿真調(diào)試為例,介紹程序的調(diào)試方法。為了對前面編寫的程序能夠在不連接硬件仿真器或者MCU的情況下進行仿真調(diào)試(即軟件模擬),需對Keil Vision4做一下設(shè)置。按照2.3設(shè)置目標(biāo)硬件選項打開“Op
38、tions for Target Target 1”對話框,選中“Debug”頁,如圖A-18所示。一般情況下,如果沒有進行硬件仿真,則“Use Simulator”單選框是默認選中的,此時,進行軟件模擬調(diào)試,其它選項不做修改;否則,則選中“Use:”單選框,并在其下拉框中選擇相應(yīng)的硬件驅(qū)動,并點擊“Settings”按鈕對目標(biāo)仿真硬件進行設(shè)置。圖A-18 設(shè)置“Options for Target Target 1”對話框中的“Debug”頁通過以上設(shè)置,就可以進行軟件模擬調(diào)試了。單擊工具欄中的“Start/Stop Debug Session”按鈕,或者從“Debug”菜單中選中“Star
39、t/Stop Debug Session”項(其快捷鍵為Ctrl+F5),開始模擬調(diào)試過程。在調(diào)試過程中,可以進行如下操作:1.連續(xù)運行單擊工具欄中的按鈕,或者“Debug”菜單中的“Run”(快捷鍵F5),可以使程序全速運行。2.停止程序運行當(dāng)程序全速運行時,可以單擊工具欄中的按鈕,或者“Debug”菜單中的“Stop”,使程序停止運行。3.復(fù)位CPU當(dāng)程序運行過一次以上后,累加器A、某些寄存器或者其它資源的值修改了,而再次運行需要恢復(fù)到初始狀態(tài),這時就需要執(zhí)行復(fù)位CPU的命令。單擊工具欄中的按鈕,或者“Debug”菜單中的“Reset CPU”,可以使MCU恢復(fù)到初始狀態(tài)。4.單步運行單擊
40、工具欄中的按鈕,或者“Debug”菜單中的“Step”(快捷鍵F11),可以執(zhí)行一行程序。如果遇到函數(shù)調(diào)用,則進入函數(shù)內(nèi)部并單步運行。5.單步跳過函數(shù)運行單擊工具欄中的按鈕,或者“Debug”菜單中的“Step Over”(快捷鍵F10),可以執(zhí)行一行程序。如果遇到函數(shù)調(diào)用,則將函數(shù)調(diào)用看做一行程序運行,不進入函數(shù)內(nèi)部運行。6.運行到當(dāng)前函數(shù)的結(jié)束這種情況出現(xiàn)在單步運行后進入到函數(shù)內(nèi)部運行程序,通過單擊工具欄中的按鈕,或者“Debug”菜單中的“Step Out”(快捷鍵Ctrl+F11),以運行到當(dāng)前函數(shù)的結(jié)束。7.運行到光標(biāo)行單擊工具欄中的按鈕,或者“Debug”菜單中的“Run to C
41、ursor Line”(快捷鍵Ctrl+F10),可以執(zhí)行到光標(biāo)所在的程序行。8.設(shè)置斷點在要設(shè)置斷點的程序行上雙擊鼠標(biāo)左鍵,或者單擊工具欄上的按鈕,或者“Debug”菜單中的“Insert/Remove Breakpoint”(快捷鍵F9),可以在當(dāng)前行上插入或者刪除斷點。只要在當(dāng)前行上設(shè)置了斷點,則在當(dāng)前行的最左邊顯示一個紅色的小方塊。連續(xù)運行程序后,執(zhí)行到該行時,程序會暫停運行。此時用戶可以查看程序運行的一些中間狀態(tài)和結(jié)果(累加器A、工作寄存器、SFR、數(shù)據(jù)存儲器等)。9.查看寄存器當(dāng)進入調(diào)試狀態(tài)后,Keil Vision4集成開發(fā)環(huán)境中左側(cè)的項目管理器,變成寄存器查看器。如圖A-19所
42、示。用戶可以通過這個窗口觀察工作寄存器、部分SFR的內(nèi)容。圖A-19 觀察寄存器的內(nèi)容10.查看變量及堆棧在調(diào)試狀態(tài)中,在Keil Vision4集成開發(fā)環(huán)境中的右下側(cè)會出現(xiàn)如圖A-20所示的窗口,即調(diào)用堆棧和變量查看窗口(使用C語言編程調(diào)試的時候常用)。圖A-20 調(diào)用堆棧和變量查看窗口11.查看存儲器在圖A-20中單擊Memory1選項卡則在在Keil Vision4集成開發(fā)環(huán)境中的右下側(cè)會出現(xiàn)如圖A-21所示的窗口,即存儲器查看窗口。圖A-21 存儲器查看窗口默認情況下,想查看內(nèi)部RAM(片內(nèi)數(shù)據(jù)存儲器)中的內(nèi)容,需在“Address”編輯框中輸入“D:0”并按回車鍵即可。拖動窗口的左邊
43、框可以調(diào)整窗口的大小,經(jīng)過調(diào)整,最佳的顯示范圍如圖A-22所示。圖A-22 片內(nèi)數(shù)據(jù)存儲器查看窗口可以通過“View”菜單中的“Memory Windows”項,添加存儲器查看窗口,這樣可通過不同的窗口查看不同存儲器的內(nèi)容。例如,可再增加一個窗口查看外部RAM中的內(nèi)容。如圖A-23 所示,在在“Address”編輯框中輸入“X:0”并按回車鍵即可。圖A-23 片外數(shù)據(jù)存儲器查看窗口要改變某個地址單元中的內(nèi)容,可在上面雙擊鼠標(biāo)左鍵即可修改;或者在要修改內(nèi)容的單元上單擊鼠標(biāo)右鍵,彈出菜單,選擇“Modify Memory at ”修改。通過彈出菜單,還可修改進制、有符號數(shù)、無符號數(shù)、ASCII碼等
44、“Address”編輯框一般輸入格式如下:X:XXXX其中X為:D,查看內(nèi)部RAM;X,查看外部RAM;I,查看間接訪問的內(nèi)部RAM;C,查看程序ROM。XXXX為:查看的起始地址(0000HFFFFH)。12.查看外部設(shè)備單擊菜單“Peripherals”可選擇查看所選MCU集成的不同外部設(shè)備。例如:(1)“Interrupt”打開中斷向量表窗口,在窗口里顯示了所有的中斷向量。如圖A-24所示。對選定的中斷向量可以用窗口下面的復(fù)選框進行設(shè)置。圖A-24 中斷向量表窗口(2)“I/O-Ports”:打開I/O端口(P0P3)的觀察窗口,在窗口里顯示了程序運行時的端口狀態(tài)??梢噪S時查看并修改端口
45、的狀態(tài),從而模擬外部的輸入。例如,要查看P2口的狀態(tài),可打開P2口的觀察窗口,如圖A-25所示。當(dāng)運行到第10行時,則如圖A-26所示。圖中標(biāo)有“”的復(fù)選框表示這一位的值是1,沒有的為0。對于不同的MCU,可能圖A-25、圖A-26的顯示略有不同。圖A-25 剛進入調(diào)試狀態(tài)時P2口的查看窗口圖A-26 運行到程序行第10行時P2口的查看窗口(3)“Serial”:打開串行口的觀察窗口,可以隨時修改窗口里顯示的不同狀態(tài)。(4)“Timer”:打開定時器的觀察窗口,可以隨時修改窗口里顯示的不同狀態(tài)。除此以外,對于不同公司生產(chǎn)的MCU,在“Peripherals”菜單中會出現(xiàn)很多與該型號MCU相關(guān)的
46、外部設(shè)備資源菜單項。掌握了上述的操作過程,就可以進行基本的程序調(diào)試工作了。只有不斷調(diào)試程序,才能逐步積累經(jīng)驗,增強對MCU的使用,做到靈活運用,熟練掌握。附A.3 Keil C51語言雖然MCU上使用的C語言都是直接針對具體硬件的,但任何一家公司開發(fā)的C語言,都必須符合ANSI C的標(biāo)準(zhǔn),或者說,要與ANSI C兼容。因此,不論哪一家公司為MCU開發(fā)的C語言,其主要部分必然要與ANSI C保持一致,不同的只是非ANSI C的擴展部分,Keil C51也不例外。Keil C51是一個兼容ANSI C的編譯器,為了支持80C51系列MCU加入了一些擴展的內(nèi)容。C51編譯器與ANSI C相比,擴展的
47、內(nèi)容包括:數(shù)據(jù)類型、存儲器類型、存儲模式、指針及函數(shù)(包括:定義函數(shù)的重入性、指定函數(shù)的寄存器組、指定函數(shù)的存儲模式及定義中斷服務(wù)程序)。閱讀本書的讀者請注意,本書沒有詳細介紹標(biāo)準(zhǔn)的C語言,只是介紹Keil C51對ANSI C的擴展。對于通用的C語言部分,如果需要,請查閱相關(guān)介紹C語言的教材。下面詳細介紹Keil C51對ANSI C的擴展部分。附A.3.1數(shù)據(jù)類型Keil C51編譯器支持的各種規(guī)格的數(shù)據(jù)類型列于表A-8。除了這些數(shù)據(jù)類型以外,變量可以組合成結(jié)構(gòu)、聯(lián)合及數(shù)組。表A-8 KeilC51支持的數(shù)據(jù)類型數(shù)據(jù)類型位數(shù)字節(jié)數(shù)值范圍signed char81-128到+127unsig
48、ned char810到255signed short162-32768到+32767unsigned short1620到65535signed int162-32768到+32767unsigned int1620到65535signed long324-2147483648到+2147483647unsigned long324 0到4294967295 float3241.175494E-38到3.402823E+38bit10或1sbit10或1sfr810或255sfr 161620或65535 數(shù)據(jù)表A-1所列的數(shù)據(jù)類型中,關(guān)鍵字bit、 sbit 、sfr 和sfr16 等四種
49、類型在ANSI C中是沒有的,是Keil C51編譯器中新增加的。其中,關(guān)鍵字bit用于操作80C51中的位尋址區(qū),而關(guān)鍵字sbit、sfr和sfr16用于操作80C51的特殊功能寄存器SFR。例如,下面的表達式:sfr P0 = 0x80; /* 定義 80C51 P0 口的特殊功能寄存器 */聲明了一個變量P0,并且把它和位于0x80(80C51的P0口)處的特殊功能寄存器聯(lián)系在一起。1.bit類型bit 數(shù)據(jù)類型用于定義操作位尋址區(qū)的變量,可用于變量聲明、參數(shù)列表、函數(shù)聲明和函數(shù)返回值等。所有的 bit 變量存放在80C51 內(nèi)部存儲區(qū)的位尋址區(qū)。因為這個區(qū)域只有16 字節(jié)長,所以最多只
50、能聲明128個位變量。一個bit 變量的聲明與其它數(shù)據(jù)類型相似,例如:static bit gbFlag = 0;/* 位變量 */bit bFunc(/* 位函數(shù) */bit bFlag1,/* 位變量 */ bit bFlag2 )/* 位變量 */ return(0)/* 位返回值 */bit 變量的聲明中,可包含存儲器類型。但是因為 bit 變量存儲在80C51的內(nèi)部數(shù)據(jù)區(qū),只能使用data 和idata 存儲類型,不能使用別的存儲類型。例如: int data iBase; /* 在在直接訪問數(shù)據(jù)區(qū)定義一個整型變量iBase */ char idata cAry4; /* 在間接訪問
51、數(shù)據(jù)區(qū)定義一個數(shù)組iBase */ bit mybit0 = iBase 0; bit mybit15 = iBase 0; bit bAry07 = cAry0 7; bit bAry37 = cAry 3 7;bit 變量和 bit 聲明有以下限制:(1)如果在函數(shù)中禁止使用中斷(#pragma disable)或者函數(shù)中包含有明確的寄存器組切換(using n),則該函數(shù)不能返回一個位值。否則,在編譯時會產(chǎn)生編譯錯誤。(2)一個位不能被聲明為一個指針,如bit *bPtr;是錯誤的。(3)不能聲明使用一個 bit 類型的數(shù)組,如bit bArr5;是錯誤的。2.sfr類型sfr和C語言的
52、其它類型變量聲明是一樣的。例如:sfr P0 = 0x80;/* P0口,地址為80H */sfr P1 = 0x90;/* P1口,地址為90H*/sfr P2 = 0xA0;/* P2口,地址為0A0H */sfr P3 = 0xB0;/* P3口,地址為0B0H*/P0、P1、P2 和P3 是聲明的SFR名。在等號(=)后指定的地址必須是一個常數(shù)值不允許用帶操作數(shù)的表達式。標(biāo)準(zhǔn)的80C51系列支持SFR地址從0x80 到0xFF。3.sfr16Keil C51編譯器提供的sfr16數(shù)據(jù)類型,可以將兩個8位的SFR作為一個16位的SFR來訪問。訪問該16位的SFR只能是低字節(jié)跟著高字節(jié),即
53、將低字節(jié)的地址用作sfr16聲明的地址。例如:sfr16 T2 = 0xCC;/*定義Timer2的16位數(shù)據(jù)寄存器, TL2的地址為0CCH,TH2的地址為0CDH */在這個例子中,定時器T2的16位的數(shù)據(jù)寄存器被聲明為16 位SFR。當(dāng)然,這個16位的數(shù)據(jù)寄存器可以聲明為2個8位的數(shù)據(jù)寄存器。如下所示:sfr TL2 = 0xCC;/*定義Timer2的16位數(shù)據(jù)寄存器的低8位, TL2的地址為0CCH */sfr TH2 = 0xCD;/*定義Timer2的16位數(shù)據(jù)寄存器的高8位, TH2的地址為0CDH */sfr16 聲明和 sfr 聲明遵循相同的原則。任何符號名可用在 sfr1
54、6 的聲明中。等號(=)指定的地址,必須是一個常數(shù)值。不允許使用帶操作數(shù)的表達式,而且必須使用SFR的低位和高位字節(jié)中的低位字節(jié)的地址。4.sbit類型在80C51系列MCU中,經(jīng)常需要訪問SFR中的某些位,這時需使用關(guān)鍵字sbit,利用它可以定義可位尋址的對象。定義方法有如下三種。(1)sbit 位變量名 = 位地址這種方法將位的絕對地址賦給位變量,位地址必須位于0x800xFF之間。例如:sbit OV = 0xD2;sbit CY = 0xD7;(2)sbit 位變量名 = SFR名 位位置當(dāng)可位尋址的位位于SFR中的時候,可采用此方法?!拔晃恢谩笔且粋€07之間的常數(shù)。例如:sfr PSW = 0xD0;sbit OV = PSW 2;sbit CY = PSW 7;(3)sbit 位變量名 = 字節(jié)地址
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人消費貸款合同風(fēng)險控制措施4篇
- 2025年度場化項目服務(wù)類采購項目合同附件風(fēng)險管理指南4篇
- 二零二四年度協(xié)議離婚手續(xù)辦理操作手冊與步驟說明9篇
- 2024版物資采購框架合同
- 2025年度魚塘承包與漁業(yè)資源修復(fù)合同4篇
- 二零二四年度養(yǎng)老機構(gòu)疫情防控合同A3篇
- 二零二五版股權(quán)質(zhì)押與金融衍生品合同樣本
- 二零二五年度城市地下綜合交通樞紐承包施工合同4篇
- 2025年度停車場車位產(chǎn)權(quán)分割與交易合同范本4篇
- 二零二四年度醫(yī)院食堂廚房衛(wèi)生安全檢測合同
- 數(shù)學(xué)-山東省2025年1月濟南市高三期末學(xué)習(xí)質(zhì)量檢測濟南期末試題和答案
- 中儲糧黑龍江分公司社招2025年學(xué)習(xí)資料
- 湖南省長沙市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
- 2024年林地使用權(quán)轉(zhuǎn)讓協(xié)議書
- 春節(jié)期間化工企業(yè)安全生產(chǎn)注意安全生產(chǎn)
- 數(shù)字的秘密生活:最有趣的50個數(shù)學(xué)故事
- 移動商務(wù)內(nèi)容運營(吳洪貴)任務(wù)一 移動商務(wù)內(nèi)容運營關(guān)鍵要素分解
- 基于ADAMS的汽車懸架系統(tǒng)建模與優(yōu)化
- 當(dāng)前中國個人極端暴力犯罪個案研究
- 中國象棋比賽規(guī)則
評論
0/150
提交評論