單片機(jī)C語言開發(fā)詳解 Keil C單片機(jī)開發(fā)環(huán)境_第1頁
單片機(jī)C語言開發(fā)詳解 Keil C單片機(jī)開發(fā)環(huán)境_第2頁
單片機(jī)C語言開發(fā)詳解 Keil C單片機(jī)開發(fā)環(huán)境_第3頁
單片機(jī)C語言開發(fā)詳解 Keil C單片機(jī)開發(fā)環(huán)境_第4頁
單片機(jī)C語言開發(fā)詳解 Keil C單片機(jī)開發(fā)環(huán)境_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論