版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
會計學(xué)1單片機C語言開發(fā)詳解KeilC單片機開發(fā)環(huán)境4.1C語言編程基礎(chǔ)KeilC51的開發(fā)方法其實和大家學(xué)習(xí)的C語言基本相同,本節(jié)介紹C51的開發(fā),內(nèi)容和C語言的基礎(chǔ)知識差不多,由于篇幅有限,如需要深入了解的讀者可以參考一些C語言的教程。第1頁/共61頁4.1.1C51程序的基本結(jié)構(gòu)C51源程序結(jié)構(gòu)與一般C語言基本一致,C51源程序文件的擴展名為".c",如Add.c、Max.c等。一個C51源程序大體上是一個函數(shù)定義的集合,在這個集合中有且僅有一個名為main()的函數(shù),也稱為該程序的主函數(shù)。主函數(shù)是程序的入口,它是一個特殊的函數(shù),程序的執(zhí)行都是從main()函數(shù)開始的。主函數(shù)中的所有語句執(zhí)行完畢,則程序執(zhí)行結(jié)束。第2頁/共61頁4.1.2標(biāo)識符與關(guān)鍵字標(biāo)識符是用來標(biāo)識源程序中某個對象的名字的,這些對象可以是語句、數(shù)據(jù)類型、函數(shù)、變量、數(shù)組等等。C語言是區(qū)分大小寫的一種高級語言,如果要定義一個定時器1,可以寫做“Timer1”,如果程序中有"TIMER1",那么這兩個是完全不同定義的標(biāo)識符。標(biāo)識符由字符串、數(shù)字和下劃線等組成,需要注意的是,第一個字符必須是字母或下劃線,類似“1Timer”的定義是錯誤的,編譯時便會有錯誤提示。有些編譯系統(tǒng)專用的標(biāo)識符以下劃線開頭,所以除了在定義專業(yè)標(biāo)識符以外,一般不要以下劃線開頭命名標(biāo)識符。第3頁/共61頁4.1.3數(shù)據(jù)類型數(shù)據(jù)在計算機內(nèi)存中的存放情況由數(shù)據(jù)結(jié)構(gòu)決定。C語言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型決定的,數(shù)據(jù)類型可分為基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型,復(fù)雜數(shù)據(jù)類型是由基本數(shù)據(jù)類型構(gòu)造而成的。在標(biāo)準(zhǔn)C語言中基本的數(shù)據(jù)類型為char、int、short、long、float和double,而在C51編譯器中int和short相同,float和double相同。第4頁/共61頁4.1.4常量與變量在程序運行過程中不能改變值的量稱為常量,在程序運行過程中不斷變化的量稱為變量??梢允褂盟蠧51編譯器支持的數(shù)據(jù)類型定義一個變量,而常量的數(shù)據(jù)類型只限于整型、浮點型、字符型、字符串型和位標(biāo)量。第5頁/共61頁4.1.5函數(shù)一個好的C語言程序應(yīng)該把一個大問題劃分成若干子問題,解決一個子問題對應(yīng)編制一個函數(shù),C程序一般是由大量的小函數(shù)而不是由少量大函數(shù)構(gòu)成的。使用函數(shù)帶來的好處是程序各部分相互充分獨立,任務(wù)單一。函數(shù)提供了編制程序的手段,使之容易讀、寫、理解、排除錯誤、修改和維護。這些獨立的小模塊也可以作為一種固定規(guī)格的程序,用來組成新的大程序,使得程序的可移植性和可重用性能大大提高。一些較常用的函數(shù)時,只要將其保存在函數(shù)庫里,在以后的編程中可被方便地調(diào)用而不需要再去編譯它們,連接時將會自動從相應(yīng)的庫中裝配成所需程序。第6頁/共61頁4.1.6數(shù)組與指針數(shù)組是指具有相同數(shù)據(jù)類型的變量集合,擁有共同的名字。數(shù)組中的每個特定元素都使用下標(biāo)來訪問。數(shù)組存放在一段連續(xù)的存儲地址中,第一個數(shù)組元素存放于最低的地址,最高的地址對應(yīng)最后一個數(shù)組元素。數(shù)組有一維的和多維的,下面分別介紹。(1)一維數(shù)組一維數(shù)組的聲明格式是:類型變量名[長度]類型是指數(shù)據(jù)類型,即每一個數(shù)組元素的數(shù)據(jù)類型,包括整數(shù)型、浮點型、字符型、指針型以及結(jié)構(gòu)和聯(lián)合。第7頁/共61頁4.1.6結(jié)構(gòu)體與聯(lián)合體結(jié)構(gòu)體是一種由基本數(shù)據(jù)類型構(gòu)成、并用一個標(biāo)識符來命名的各種變量的組合。結(jié)構(gòu)體中可以使用不同的數(shù)據(jù)類型。在KeilC51中,結(jié)構(gòu)體也是一種數(shù)據(jù)類型,可以使用結(jié)構(gòu)體變量,因此,與其他類型的變量一樣,在使用結(jié)構(gòu)體變量時要先對其定義。定義結(jié)構(gòu)體變量的一般格式如下:struct結(jié)構(gòu)體名{類型變量名;類型變量名;……}結(jié)構(gòu)體變量;第8頁/共61頁4.1.7類型定義與C語言編程一樣,KeilC51允許由用戶自己定義類型說明符,也就是說允許由用戶為數(shù)據(jù)類型使用自定義的名字,該功能可以使用類型定義符typedef完成。例如,有整型量a、b,其說明如下:inta,b;其中int是整型變量的類型說明符,int的長度為16位,為了增加程序的可讀性,可把整型說明符用typedef定義為“typedefintINT16”,這以后就可用INT16來代替int作整型變量的類型說明了,例如:INT16a,b; //等效于inta,b第9頁/共61頁4.1.8宏定義與條件編譯在編寫程序時,使用的是用戶能夠看懂的ASCII碼。但是計算機必須將這些ASCII碼經(jīng)過翻譯后變成機器語言。這個翻譯過程分兩步,叫做編譯、鏈接過程。第一步的編譯過程是將源程序中除了函數(shù)調(diào)用以外的語句翻譯成機器語言,此時要生成一個中間目標(biāo)文件,后綴名為obj。鏈接過程是將庫函數(shù)的執(zhí)行代碼加入到剛才生成的obj文件中,生成可執(zhí)行文件。用戶編寫的源程序只能控制程序執(zhí)行的流程。但有些時候,需要對編譯程序的工作進行一些干預(yù),這時就要用到編譯預(yù)處理命令。第10頁/共61頁4.2KeilC51開發(fā)工具MCS-51內(nèi)核系列單片機作為工業(yè)使用的微處理器,從1985年開始,就有對應(yīng)的C語言編譯器,簡稱C51。并非所有的C51編譯器都產(chǎn)生和發(fā)揮MCS-51單片機特點的有效代碼,下面就各公司的編譯器做簡要介紹。(1)AMERICANAUTOMATION該編譯器通過#asm和endasm預(yù)處理選擇支持匯編語言。此編譯器編譯速度慢,要求匯編的中間環(huán)節(jié)支持。(2)ARCHIMEDES它的鼻祖是瑞典的JAR,是支持分組開關(guān)(Bank)的編譯器。它和ANSIC兼容,只是需要一個較復(fù)雜的連接程序控制文件支持,程序才能運行。(3)AVOCET該軟件包包括編譯器、匯編器、連接器、庫MAKE工具和編輯器,集成環(huán)境類似BorlandC和TurboCOC編譯器產(chǎn)生一個匯編語言文件,然后再用匯編器,其編譯速度較快。第11頁/共61頁4.2KeilC51開發(fā)工具(4)DUNFIELDSHAREWARE它是非專業(yè)的軟件包,不支持float、long或結(jié)構(gòu)等數(shù)據(jù)結(jié)構(gòu)。它不生成重定位代碼。(5)FRANKLIN它的鼻祖是Keil,在代碼生成方面領(lǐng)先,可產(chǎn)生最少的代碼。它支持浮點和長整數(shù)、重入和遞歸,不提供庫源代碼,不能生成能匯編的匯編代碼,僅產(chǎn)生混合代碼,只能修改后匯編。若使用匯編語言,必須分開匯編程序,然后手工連接。若使用單片模式,它是最好的選擇。(6)KeilC51KeilC51的V8.xx是目前世界上最好的51單片機的匯編和C語言的開發(fā)工具。它支持匯編、C語言以及混合編程,同時具備強大的軟件仿真和硬件仿真功能。在本節(jié)中主要介紹采用KeilC51的開發(fā)方法。第12頁/共61頁4.2.1μVision3集成開發(fā)環(huán)境結(jié)構(gòu)當(dāng)使用KeilC51的開發(fā)工具進行項目開發(fā)時,項目的開發(fā)流程和其他軟件開發(fā)項目的流程極其相似,一般遵循下面幾步:創(chuàng)建一個項目,從器件庫中選擇目標(biāo)器件,配置工具設(shè)置;用C語言或匯編語言創(chuàng)建源程序;用項目管理器生成應(yīng)用;修改源程序中的錯誤;測試、連接應(yīng)用。第13頁/共61頁4.2.2KeilC51的C編譯器C語言是一種通用編程語言,它提供高效的代碼、結(jié)構(gòu)化的編程元素及豐富的運算符。C語言不是一個大型的語言,不是為特定領(lǐng)域內(nèi)的應(yīng)用而設(shè)計的。其普遍性使其可以為各種不同的軟件任務(wù)提供便利有效的編程方案。許多應(yīng)用設(shè)計使用C語言比其他專門語言更有效。Keil的C51優(yōu)化交叉編譯器是完全符合ANSI美國國家標(biāo)準(zhǔn)協(xié)會標(biāo)準(zhǔn)的針對8051系列MCU的C編譯器,生成的可執(zhí)行代碼快速、緊湊,在運行效率和速度上可以和匯編程序得到的代碼相媲美。第14頁/共61頁4.2.3KeilC51的A51宏匯編器A51是一個8051系列MCU的宏匯編器,它把匯編語言翻譯成機器代碼。A51匯編器允許定義程序中的每一個指令,在需要極快的運行速度、很小的代碼空間和精確的硬件控制時使用。其宏特性讓公共代碼只需要開發(fā)一次,從而節(jié)約了開發(fā)和維護的時間。A51匯編器宏處理的另一個有用的特性是根據(jù)命令行參數(shù)或匯編符號進行條件匯編。代碼段的條件匯編能幫助用戶實現(xiàn)最緊湊的代碼,也可以從一個匯編源代碼文件產(chǎn)生不同的應(yīng)用:第15頁/共61頁4.2.3KeilC51的A51宏匯編器A51匯編器產(chǎn)生一個列表文件,包括行號、匯編時的時間和日期。關(guān)于匯編器運行和目標(biāo)文件產(chǎn)生的信息被記錄下來。通常情況下,程序從EXTERN、PUBLIC和SEGMENT指示器開始。列表文件包含了每個源代碼的行號及每行產(chǎn)生的代碼。列表文件包含了錯誤和告警信息,錯誤和告警的位置被明顯地標(biāo)識出來。存儲器組的占用信息和程序中的錯誤和告警總數(shù)包括在文件的結(jié)尾處。第16頁/共61頁4.2.4KeilC51的BL51代碼鏈接器/定位器BL51是具有代碼分段功能的連接器/重定位器,它組合一個或多個目標(biāo)模塊成一個8051的執(zhí)行程序。此連接器處理外部和全局數(shù)據(jù),并將可重定位的段分配到固定的地址上。BL51連接器處理由KeilC51編譯器、A51匯編器和IntelPL/M-51編譯器、ASM-51匯編器產(chǎn)生的目標(biāo)模塊。連接器自動選擇適當(dāng)?shù)倪\行庫并連接用到的模塊。BL51主要有以下的功能:(1)數(shù)據(jù)地址管理BL51連接器通過覆蓋那些不會同時使用的函數(shù)變量的技術(shù)來管理8051有限的內(nèi)部存儲器資源,這極大地降低了大多數(shù)應(yīng)用對存儲器的需求。BL51連接器分析函數(shù)間的引用以決定存儲的覆蓋策略??梢杂肙VERLAY指示器來人為控制函數(shù)間的引用,這些引用被連接器用來確定哪些存儲器單元是獨占的。NOOVERLAY指示器讓BL51不進行覆蓋連接,這在使用間接調(diào)用的函數(shù)或為了調(diào)試而禁止覆蓋時比較有用。第17頁/共61頁4.2.4KeilC51的BL51代碼鏈接器/定位器(2)代碼段BL51連接器支持創(chuàng)建程序空間大于64KB的應(yīng)用。8051不能直接操作大于64KB的代碼地址空間,必須由外部硬件來交換代碼段。完成此功能的硬件必須要8051中運行的程序的控制中,這就是段(塊)切換。BL51連接器管理一個公共的區(qū)域和32個最大64KB空間的塊,從而達到總共2MB的分段程序空間。支持外部硬件塊切換的軟件包括的一個可編輯的匯編程序,以適應(yīng)應(yīng)用中的特定硬件平臺。BL51連接器可以定義哪個段裝載哪個特定的程序模塊。通過仔細考慮,把各個函數(shù)分配到不同的段中來創(chuàng)建一個非常大而有效的應(yīng)用。第18頁/共61頁4.2.4KeilC51的BL51代碼鏈接器/定位器(3)公共段段切換程序中的公共段是一塊在任何時候、在所有的段中都可以訪問的存儲器。此公共段在物理上就不能切換出局或變換地址空間。在公共段中的代碼可以復(fù)制到每個段中(如果切換整個程序空間)或駐留在一個獨立的地址空間或器件中(公共段不用切換)。第19頁/共61頁4.2.4KeilC51的BL51代碼鏈接器/定位器(4)執(zhí)行其他段中的程序分段代碼空間是通過附加的由軟件控制的地址線控制的,這些地址線可以由8051的I/O口或位于存儲器空間的鎖存器來模擬。HL51連接器為位于其他段中的函數(shù)生成一個跳轉(zhuǎn)表,當(dāng)用C語言調(diào)用一個位于不同段中的函數(shù)時,要先切換段,再跳到目標(biāo)程序運行,完成后再回到調(diào)用的那個段中去,并繼續(xù)往下執(zhí)行。這種段切換處理需要附加的50個CPU指令周期和占用2字節(jié)堆棧空間。如果把相關(guān)的函數(shù)分配在相同的段中,將顯著地提高系統(tǒng)的性能。需要從多個段中經(jīng)常調(diào)用的函數(shù)應(yīng)該位于公共段中。第20頁/共61頁4.2.5KeilC51的OC51目標(biāo)文件轉(zhuǎn)換器OC51目標(biāo)文件轉(zhuǎn)換器為在目標(biāo)模塊中的每個代碼區(qū)創(chuàng)建絕對目標(biāo)模塊。當(dāng)用戶創(chuàng)建一個存儲區(qū)切換應(yīng)用時,BL51產(chǎn)生存儲目標(biāo)模塊。符號調(diào)試信息復(fù)制到絕對目標(biāo)文件中,并供仿真器使用。用戶可使用OC51目標(biāo)文件轉(zhuǎn)換器創(chuàng)建絕對目標(biāo)模塊,然后可使用OH51目標(biāo)-hex轉(zhuǎn)換器創(chuàng)建Intelhex文件。OH51目標(biāo)-hex轉(zhuǎn)換器從絕對目標(biāo)模塊中創(chuàng)建Intelhex文件,而絕對目標(biāo)模塊可由BL51或OC51創(chuàng)建。Intelhex文件是ASCII文件包含了應(yīng)用程序的十六進制表達式,將它們裝人器件編程器就可寫人EPROM可以在DOS命令行中,用OC51將分段目標(biāo)模塊中的每一個代碼段創(chuàng)建絕對目標(biāo)模塊。然后,用OH51(目標(biāo)代碼到hex文件的轉(zhuǎn)換器)為每一個絕對目標(biāo)模塊產(chǎn)生相應(yīng)的Intelhex格式的文件。第21頁/共61頁4.2.6KeilC51的OH目標(biāo)HEX文件轉(zhuǎn)換器OH51目標(biāo)hex轉(zhuǎn)換器為絕對目標(biāo)模塊創(chuàng)建Intelhex格式的文件。絕對目標(biāo)模塊可以由BL51或OC51產(chǎn)生。Intelhex文件是ASCII文件,用十六進制的數(shù)表示應(yīng)用系統(tǒng)的目標(biāo)模塊。它們可以很容易的下載到編程器,以便于寫入EPROMS器件。第22頁/共61頁4.2.7KeilC51的LIB51庫文件管理器LIB5l庫管理器可使用戶創(chuàng)建和保存庫文件,一個庫文件是一個或多個目標(biāo)文件的格式化集合。庫文件提供簡便的方法,可組合和引用大量的目標(biāo)文件。BL5l可有效地使用庫文件,庫管理器可使用戶創(chuàng)建一個庫文件、將目標(biāo)模塊加入庫文件、從庫文件中移去目標(biāo)模塊和列出庫文件的內(nèi)容。使用庫有一系列優(yōu)點。安全、高速和減少磁盤空間僅是使用庫的一小部分原因。另外,庫提供了一個很好的分發(fā)大量函數(shù)而不用分發(fā)大量函數(shù)源代碼的手段。例如,ANSIC的庫是作為庫文件提供的。第23頁/共61頁4.3μVision3集成開發(fā)環(huán)境Keil公司于1996年推出了基于Windows的C51應(yīng)用程序集成開發(fā)環(huán)境,如今KeilC51的IDE(集成開發(fā)環(huán)境)的最新版本已經(jīng)發(fā)展到了μVision3。μVision3是一個集成的軟件開發(fā)平臺,包括全功能編輯器、項目管理器、程序生成工具和環(huán)境控制等,其仿真調(diào)試的環(huán)境又叫DScope5。Keil公司推出的新的32位最新的編譯器版本已經(jīng)達到KeilC51V8.xx,可以運行在Windows9x、WindowsNT、WindowsMe、Windows2000和WindowsXP等操作系統(tǒng),功能更加強大,支持的芯片更多。C51V8.xx版本是目前最高效、靈活的8051開發(fā)平臺,它可以支持所有MCS-51的兼容內(nèi)核,也可以支持所有兼容的仿真器,同時支持其他第三方開發(fā)工具。第24頁/共61頁4.3.1μVision3IDEμVision3IDE是一個基于Windows的開發(fā)平臺,包含一個高效的編輯器、一個項目管理器和一個MAKE工具。第25頁/共61頁4.3.2μVision3C51編譯器與測試程序C51編譯器在遵循ANSI標(biāo)準(zhǔn)的同時,為MCS-51兼容微控制器系列進行特別設(shè)計。語言上的擴展能讓用戶使用應(yīng)用所有資源,有如下一些特點:(1)存儲器和特殊功能寄存器的存取C51編譯器可以實現(xiàn)對8051系列所有資源的操作。(2)中斷功能(3)靈活的指針第26頁/共61頁4.3.3μVision3的安裝μVision3安裝的最低的硬件和軟件配置必須滿足:具有Pentium、PentiumII或兼容的處理器的個人計算機;操作系統(tǒng)為Windows98、Windos2000、WindowsXP或更高;RAM大于128MB;60MB的硬盤空余空間。第27頁/共61頁4.4集成開發(fā)環(huán)境的使用直接雙擊程序圖標(biāo)就可以啟動μVision3,要新建一個項目文件,μVision3菜單中單擊【Project】|【NewProject】命令即可。μVision3的整個界面如圖4.15所示。第28頁/共61頁4.4.1μVision3的項目管理窗口在μVision3中,可以為一個應(yīng)用創(chuàng)建幾個不同的程序。用戶也許需要一個目標(biāo)用來測試,另一個目標(biāo)作為應(yīng)用系統(tǒng)的發(fā)行版本。在同一個項目文件中,允許每個目標(biāo)進行獨立的工具設(shè)置。在Build工具欄上,可以快速改變當(dāng)前的目標(biāo),如圖4.16所示,該項目有3個目標(biāo)文件,即Simulator、RamDebug和Flash三種模式下的目標(biāo)文件,當(dāng)前目標(biāo)文件是Simulator。第29頁/共61頁4.4.2μVision3的菜單欄μVision3的菜單欄提供各種操作菜單,例如:編輯操作、項目維護、開發(fā)工具選項設(shè)置、調(diào)試程序、窗口選擇和處理以及在線幫助等等,第30頁/共61頁4.4.3μVision3的工具欄μVision3提供了文件操作、源文件編輯、視圖切換、工程項目和調(diào)試命令等工具條按鈕,允許用戶快速地執(zhí)行命令,各種工具欄圖標(biāo)都對應(yīng)一種μVision3的下拉菜單命令,下面分別進行介紹。第31頁/共61頁4.4.4μVision3的快捷鍵使用μVision3的鍵盤快捷鍵,用戶可以高效地執(zhí)行μVision3的各種命令,熟練地掌握各種快捷鍵的使用,將取得事半功倍的效果。(1)文件操作快捷鍵Ctrl+O:打開已經(jīng)存在的文件;Ctrl+N:創(chuàng)建新文件;Ctrl+S:保存當(dāng)前文件;Ctrl+P:打印當(dāng)前文件;第32頁/共61頁4.4.4μVision3的快捷鍵(2)源代碼編輯快捷鍵Ctrl+Z:取消上次操作;Ctrl+Shift+Z:重復(fù)上次操作;Ctrl+X:剪切所選文本;Ctrl+Y:剪切當(dāng)前行的所有文本;Ctrl+C:復(fù)制所選文本;Ctrl+V:粘貼;Ctrl+F2:設(shè)置/取消當(dāng)前行的標(biāo)簽;F2:移動光標(biāo)到下一個標(biāo)簽處;Shift+F2:移動光標(biāo)到上一個標(biāo)簽處;Ctrl+F:在當(dāng)前文件中查找文本;F3:向前重復(fù)查找;Shift+F3:向后重復(fù)查找;Ctrl+F3:查找光標(biāo)處的單詞;Ctrl+H:替換特定的字符;第33頁/共61頁4.4.4μVision3的快捷鍵(3)頂目操作快捷鍵Alt+F7:設(shè)置對象、組或文件的工具選項;F7:編譯修改過的文件并生成應(yīng)用;Ctrl+F7:編譯當(dāng)前文件;第34頁/共61頁4.4.4μVision3的快捷鍵(4)調(diào)試快捷鍵Ctrl+F5:開始/停止調(diào)試模式;F5:運行程序,直到遇到一個中斷;Fll:單步執(zhí)行程序,遇到子程序則進入;FlO:單步執(zhí)行程序,跳過子程序;Ctrl+Fll:執(zhí)行到當(dāng)前函數(shù)的結(jié)束;ESC:停止程序運行;第35頁/共61頁4.4.5μVision3的功能窗口在介紹μVision3集成開發(fā)環(huán)境中的各種窗口之前,先介紹一下下窗口的屬性設(shè)置,執(zhí)行【Edit】菜單下的【Configuration…】命令。這時將打開Configuration對話框,單擊Editor標(biāo)簽,在這里可以設(shè)置源代碼編輯窗口的各種設(shè)置,比如若選中CreateBackupfiles(*.BAK)復(fù)選框,則在源文件編輯過程中將產(chǎn)生備份文件;若選中AutoIndent復(fù)選框,則在編輯源代碼文件時,將自動以TAB鍵的距離縮進。第36頁/共61頁4.4.6源代碼編輯窗口源代碼編輯窗口,源代碼編輯窗口提供以下功能:關(guān)鍵詞、注釋和字符串的高亮度顯示;自動縮進,自定義Tab鍵的跳格數(shù);圓括號和花括號對C語言代碼塊做標(biāo)記,并可方便地查到與之配對的右括號;多次Undo和Redo;隨時獲得相關(guān)的在線幫助;快速查找,在一個或多個文件中查找或替換。第37頁/共61頁4.4.7Watch&CallStack窗口該窗口用來檢查和編輯C語言表達式或變量的值,可以用不同的格式顯示數(shù)值,可以顯示數(shù)組、結(jié)構(gòu)或指針等包含多個元素的變量,也可以顯示當(dāng)前函數(shù)的嵌套調(diào)用情況。在程序運行或調(diào)試狀態(tài)下,用戶可以執(zhí)行菜單【View】|【W(wǎng)atch&.CallStackWindow】命令來顯示W(wǎng)atch&CallStack窗口。Watch&CallStack窗口的內(nèi)容會在程序執(zhí)行過程中遇到斷點或者停止運行后顯示,在程序執(zhí)行過程中,可以執(zhí)行【View】|【PeriodicWindowUpdate】菜單命令,以使Watch&CallStack窗口的內(nèi)容隨程序的執(zhí)行而周期性的顯示。第38頁/共61頁4.4.8Memory窗口在程序運行或調(diào)試狀態(tài)下,用戶可以執(zhí)行菜單【View】|【MemoryWindow】命令來顯示Memory窗口。Memory窗口能顯示各種存儲區(qū)域的內(nèi)容,μVision3的Memory窗口總共提供了4個不同的存儲區(qū)域顯示頁,用戶可以用不同的顯示頁分別顯示不同的存儲器區(qū)域,例如一個顯示頁用于顯示代碼存儲區(qū)域,一個顯示頁用于顯示外部數(shù)據(jù)區(qū)域,一個顯示頁用于顯示內(nèi)部數(shù)據(jù)區(qū)域,根據(jù)用戶的存儲區(qū)域劃分情況而定。第39頁/共61頁4.4.9CPU寄存器窗口在程序運行或調(diào)試狀態(tài)下,用戶可以單擊項目管理窗口下面的Regs標(biāo)簽頁來顯示CPU寄存器窗口。CPU寄存器窗口顯示了CPU寄存器中的值,CPU寄存器窗口位于項目管理窗口的Regs標(biāo)簽頁,該窗口可以任意移動,第40頁/共61頁4.4.10串行窗口在程序運行或調(diào)試狀態(tài)下,用戶可以執(zhí)行【View】|【SerialWindow】|【UART#1】命令來顯示串行窗口1,執(zhí)行【View】|【SerialWindow】|【UART#2】命令來顯示串行窗口2。μVision3提供了3個串行窗口,用于PC機與模擬的51單片機窗口通信。從模擬的51單片機的CPU串口輸出的數(shù)據(jù),將在這個串口窗口中顯示,而在串口中輸入的字符,將被輸入到模擬的51單片機的CPU串口中,利用這一點,可以在沒有外部硬件的情況下模擬51CPU的UART端口,第41頁/共61頁4.4.11性能分析窗口μVision3的性能分析窗口可以顯示指定的函數(shù)或者程序段的執(zhí)行情況,包括執(zhí)行指定的函數(shù)或者程序段的最大時間、最小時間、平均時間、總時間以及執(zhí)行次數(shù)等。在程序運行或調(diào)試狀態(tài)下,用戶執(zhí)行【View】|【PerformanceAnalyzerWindow】命令,將打開性能分析窗口,。第42頁/共61頁4.4.12代碼覆蓋窗口μVision3具備代碼覆蓋功能,可以將已經(jīng)執(zhí)行的代碼段用特殊的顏色標(biāo)記出來,在源代碼編輯窗口和反匯編窗口,已經(jīng)執(zhí)行過的代碼段的左邊,有淡綠色標(biāo)記,淡綠色是μVision3設(shè)置的默認顏色,用戶可以根據(jù)需要自定義一種喜歡的顏色。第43頁/共61頁4.4.13符號觀察窗口執(zhí)行菜單命令【View】|【SymbolWindow】將打開符號顯示窗口,μVision3的符號顯示窗口中,顯示了所有函數(shù)和模塊的公共的符號、當(dāng)前模塊或函數(shù)的局部符號、代碼行號和當(dāng)前所載入應(yīng)用所定義的CPU的特定的SFR(特殊功能寄存器)。如圖所示是KeilC51自帶例子HELLO.c應(yīng)用中的符號窗口所顯示的公共符號的內(nèi)容。第44頁/共61頁4.5項目的開發(fā)與管理本節(jié)描述了使用μVision3進行項目管理,介紹了如何創(chuàng)建一個簡單的程序以及生成和維護項目的一些選項,包括文件輸出選項、C51編譯器的關(guān)于代碼優(yōu)化的配置和μVision3項目管理器的特性等等。第45頁/共61頁4.5.1創(chuàng)建項目執(zhí)行【Project】|【NewμVisionProject】菜單命令,將新創(chuàng)建一個項目。為項目建一個單獨的文件夾,然后選擇子文件夾并鍵入項目的名稱。μVision3將創(chuàng)建一個文件名為“Projectl.uv3”的新項目文件,新的項目文件包含了一個以默認的文件名命名的目標(biāo)和文件組,可以在項目管理窗口的Files標(biāo)簽頁看到這些名字。在項目創(chuàng)建之前,需要為新建的項目選擇一個CPU。在命名項目名稱后,彈出的對話框,其中顯示的是器件數(shù)據(jù)庫,用戶只要選擇所需要的MCU就可以了。由于本書是以ATMEL公司生產(chǎn)的AT89S51單片機為實例,因此在相應(yīng)的目錄下選擇AT89S51。Kei1C51幾乎支持所有的MCS-51內(nèi)核單片機,選擇AT89S51之后,右邊一欄是對這個單片機的基本的說明,然后單擊【確定】按鈕。該選擇就為AT89S51器件設(shè)置了工具選項,這種方式簡化了工具的配置,為用戶減少了不少工作量。第46頁/共61頁4.5.2添加配置啟動代碼啟動文件STARTUP.A51中包含了目標(biāo)啟動代碼,可在每個project中加入這個文件,只要復(fù)位,則該文件立即執(zhí)行,其包括以下一些功能。定義內(nèi)部RAM大小、外部RAM大小、可重入堆棧位置;清除內(nèi)部、外部或者以此頁為單元的外部存儲器;按存儲模式初始化重入堆棧及堆棧指針;初始化硬件堆棧指針;開始執(zhí)行main()函數(shù)。第47頁/共61頁4.5.3項目設(shè)置μVision3允許用戶為目標(biāo)硬件設(shè)置選項,可以通過工具條圖標(biāo)打開,也可以用鼠標(biāo)右擊項目窗口中的Files標(biāo)簽頁中的Target1,在右鍵菜單中選擇【OptionsforTarge1】命令,Target:定義CPU;Output:定義Keil工具的輸出文件,并定義生成處理后的執(zhí)行用戶程序;Listing:定義Keil工具輸出的所有列表文件;C51:設(shè)置C51編譯器的特別工具選項;A51:設(shè)置匯編器的特殊工具選項;BL51Locate:定義不同類型的存儲器和存儲器的不同段位置;BL51Misc:其他的與連接器相關(guān)的設(shè)置,如警告或存儲器指示;Debug:μVision3的Debugger設(shè)置;Utilities:文件及其Group的特別選項。第48頁/共61頁4.5.4Target標(biāo)簽單擊Target標(biāo)簽,其中各參數(shù)設(shè)置如下:(1)Xtal(MHz):是設(shè)置單片機的工作的頻率,默認值是24.0MHz。如果項目中所使用的單片機的晶振用的是33MHz,例如本例中的89S51單片機,那么在框里輸入實際的晶振頻率。(2)UseOn-chipROM(0x0~0x1FFF):這個選項是使用片上的FlashROM。AT89S51有4KB的FlashROM。是否使用片上FlashROM取決于應(yīng)用系統(tǒng),如果用戶的單片機的EA引腳接高電平,則一定需要選中這個選項;如果用戶的單片機的EA接低電平,表示使用外部ROM,那么不要選中該選項。(3)MemoryModel:變量存儲空間。用鼠標(biāo)單擊MemoryModel的下拉箭頭,會有3個選項,第49頁/共61頁4.5.5Output標(biāo)簽Output標(biāo)簽的設(shè)置說明如下。(1)SelectFolderforObjects:單擊這個按鈕可以選擇編譯之后的目標(biāo)文件存儲在哪個目錄,如果不設(shè)置,編譯之后的目標(biāo)文件就存儲在工程文件的目錄里。(2)NameofExecutable:設(shè)置生成的目標(biāo)文件的名字,默認是跟工程的名字一樣,目標(biāo)文件可以生成庫或者obj和hex的格式。(3)CreateExecutable:生成omf以及hex文件。一般選中DebugInformation和BrowseInformation,這樣才有詳細的調(diào)試所需要的信息。比如進行C語言程序的調(diào)試時,如果不選DebugInformatio和BrowseInformation兩項,調(diào)試時將無法看到C語言的代碼而只有匯編代碼或者機器代碼。第50頁/共61頁4.5.5Output標(biāo)簽(4)CreateHexFile:生成hex文件。這個選項一般是要選中的,很多用戶發(fā)現(xiàn)編譯之后沒有生成hex文件,這是因為這個選項沒有被選中的原因。要生成hex文件一定要選中該選項。(5)CreateLibrary:生成庫文件,選中該選項時將生成lib庫文件,根據(jù)用戶的需要是否要生成庫文件,一般的應(yīng)用是不生成庫文件的。設(shè)置完成的Output標(biāo)簽如圖第51頁/共61頁4.5.6Listing標(biāo)簽KeilC51在編譯之后除了聲
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版專業(yè)信息查詢服務(wù)協(xié)議
- 2024年磚瓦廠專用砂石料供應(yīng)協(xié)議版B版
- 2025年度物業(yè)小區(qū)安全生產(chǎn)責(zé)任書模板制作教程3篇
- 二零二五年度醫(yī)療健康保險產(chǎn)品開發(fā)與銷售合同2篇
- 2024年環(huán)境保護項目投資與技術(shù)服務(wù)合同
- 2025版房地產(chǎn)租賃合同與租戶停車服務(wù)協(xié)議
- 二零二五年度個人商鋪租賃合同:商業(yè)綜合體商鋪租賃協(xié)議9篇
- 2024年試用期間勞動協(xié)議模板匯編一
- 2024版耗材經(jīng)銷與購買合同3篇
- 2024年度電子信息工程師承合同協(xié)議3篇
- 2025年中小學(xué)春節(jié)安全教育主題班會課件
- 醫(yī)院消防安全知識培訓(xùn)課件
- 抽獎券模板(可修改)
- 高壓蒸汽滅菌效果監(jiān)測記錄簿表(完整版)
- 人教版物理八年級上冊全冊知識點總結(jié)
- 編織密度自動計算
- 硝酸及液體硝酸銨生產(chǎn)行業(yè)風(fēng)險分級管控體系實施指南
- 瑤醫(yī)目診圖-望面診病圖解-目診
- 染色體標(biāo)本的制作及組型觀察
- 導(dǎo)游實務(wù)課件
- 藝術(shù)類核心期刊目錄
評論
0/150
提交評論