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

1.4 單片機應用系統的軟件開發步驟

1.工程建立

1)啟動Keil Vision3軟件

假設Keil μVision3軟件已正確安裝,啟動Keil μVision3軟件與啟動其他軟件的方法完全相同:選擇【開始】→【程序】→【Keil μVision3】選項,或者直接雙擊桌面上Keil μVision3的快捷方式圖標,均可啟動Keil μVision3。啟動過程中,屏幕出現如圖1-6所示的啟動界面。啟動界面消失后,Keil μVision3 就進入了如圖1-7所示的編輯界面,此時Keil μVision3軟件已成功啟動。

圖1-4 軟件開發流程

圖1-5 細化的軟件開發流程

圖1-6 Keil μVision3啟動界面

圖1-7 Keil μVision3啟動成功后的編輯界面

2)新建工程

Keil與現在眾多的軟件開發環境一樣,均采用工程或者項目的管理方式來管理文件。一個應用開發任務就是一個工程或項目。一般來說,以開發任務的名稱作為新建的文件夾名,所有與該開發任務有關的文件都存放在該文件夾中,不同開發任務的文件夾名一般不相同。

下面首先新建工程。選擇Keil μVision3 編輯界面中的【Project】菜單,在展開的下拉菜單中選擇【New Project】選項,如圖1-8所示。在隨后打開的保存新建工程對話框中,選擇新建工程的保存路徑,并為新建的工程命名,最后單擊【保存】按鈕,保存該新建的工程。注意,工程的擴展名不用輸入,系統會默認選擇為“.uv2”,如圖1-9所示。此處將工程暫且命名為“LED1”,并保存在F盤的文件夾LED下。

3)選擇單片機型號

當單擊圖1-9所示保存新建工程對話框中的【保存】按鈕之后,Keil μVision3會彈出單片機型號選擇對話框,如圖1-10所示。在該對話窗口中,要求用戶選擇該工程準備使用的單片機芯片的型號。此處選擇Atmel公司生產、使用最普及的AT89C51 芯片。具體操作是:在圖1-10 左側欄所列眾多廠家中找見“Atmel”,單擊“Atmel”名稱前面的加號“+”,展開Atmel公司生產的單片機系列產品,如圖1-11所示;接著,在展開的Atmel公司生產的單片機系列產品中,選中“AT89C51”,如圖1-12所示;最后,單擊【確定】按鈕,芯片型號的選擇完成。此時,Keil μVision3 會彈出如圖1-13所示的對話框,詢問是否復制并添加標準8051啟動代碼到當前工程,一般單擊【是】按鈕即可。

圖1-8 新建工程

圖1-9 保存工程

圖1-10 選擇51單片機的生產廠家

圖1-11 展開Atmel公司生產的單片機產品

圖1-12 選中Atmel公司生產的單片機AT89C51

圖1-13 是否添加8051啟動代碼到當前工程對話框

完成以上步驟之后,屏幕重新回到如圖1-14所示的編輯界面,圖1-14與圖1-7基本相同,不同之處是左側“工程管理工作臺”中的內容。圖1-7 中,“工程管理工作臺”中什么也沒有;而圖1-14 中,“工程管理工作臺”中有名為“Target 1”的對象,單擊其名稱前面的加號,還可以看到該對象內所包含的文件。

2.源程序編寫

新建工程完成之后,下面該進入源程序的編寫環節了。

1)新建并保存源程序文件

選擇【File】→【New】選項,或者直接單擊工具欄中“創建一個新文件”快捷圖標,都可以新建一個默認名字為“Text 1”的文件。新建之后,“I”形光標就在“Text 1”文件的編輯窗口中閃爍,如圖1-15所示。需要說明的是,默認的文件名也許由于多次新建文件而出現“Text x”的字樣,其中x是一整數,因為馬上要將該文件進行保存或另存為其他名稱的文件,所以原來的文件名是什么都無關緊要。

圖1-14 已含有“Target 1”對象的編輯界面

圖1-15 新建源程序文件界面

接下來將源文件進行重新命令后保存。選擇【File】菜單中的【Save】或者【Save As】,也可直接單擊工具欄中的“存盤”快捷圖標,都可打開如圖1-16(a)所示的“文件另存為”對話框。將其中的原始默認文件名“Text 1”更換為“led1.c”。此處特別要提起注意的是,因為我們使用C語言來編寫源程序,所以源程序文件名的擴展名必須是“.c”,正如前面提到的,單片機的編程語言除C語言外,還有匯編語言,如果使用匯編語言編寫源程序,則源程序文件名的擴展名就必須是“.asm”。此處,源文件更名為“led1.c”,其中的擴展名“.c”表明這是用C語言編寫的源程序,如圖1-16(b)所示。最后單擊【保存】按鈕。

圖1-16 源程序文件更名前后界面

單擊【保存】按鈕后,源程序文件的名字已經更換,且源程序編輯窗口的標題欄顯示為“F:\LED\led1.c”字樣,如圖1-17所示。

圖1-17 更名保存后的源程序文件界面

2)加載源程序到工程中

加載源程序到項目工程是非常重要的一個步驟。未加載源程序之前,該項目工程管理工作臺如圖1-18(a)所示,加載源程序文件之后如圖1-18(b)所示??梢?,加載源程序之后,源程序文件led1.c被添加進入了工程管理工作臺中。

圖1-18 加載源程序

加載源程序的具體過程如下。

在工程管理工作臺中,單擊對象“Target 1”前面的加號“+”將其展開,右擊文件夾“Source Group 1”圖標,在彈出如圖1-19所示的快捷菜單中,選擇“Add Files to Group‘Source Group 1’ ”菜單項。隨后,彈出“選擇源程序文件”對話框,如圖1-20所示。雙擊圖1-20 中文件“led1.c”之后再單擊【Close】按鈕,或者單擊圖1-20 中文件“led1.c”之后再單擊【Add】按鈕,都可將源程序文件“led1.c”加載到工程項目中,結果如圖1-18(b)所示。

圖1-19 添加源程序到工程的快捷菜單

此過程之所以重要,原因是如果沒有添加源程序文件,則該工程項目如同一個軀殼或者空的框架,因為沒有包含源程序文件,該工程自然不具有任何功能,即使后續的編譯鏈接等環節順利通過,預期的功能也一定不會實現。

另一方面,如果給工程項目添加了錯誤的或者多余的源程序文件,在工程的編譯調試環節可能就會報錯,即使編譯通過,也不能保證其功能是正確的。如果出現這樣的情況,也不必驚慌,只需將這些錯誤的或者多余的文件從工程項目中移除即可。具體做法是:在工程管理工作臺中,在準備移除的文件上右擊,在彈出的快捷菜單中選擇“Remove File xxx.c”(xxx代表被移除文件的名字)即可。

圖1-20 “選擇源程序文件”對話框

3)編譯選項設置

工程編譯的目的,是將源程序文件經編譯、鏈接,最終生成可以用于下載燒片的XXX.hex文件,其中,hex是十六進制文件的擴展名,XXX是該文件的主名,文件主名一般與工程名相同。

在進行工程的編譯、鏈接之前,首先要對編譯環境進行必要的設置,設置完成后才可以進行編譯。

打開【Project】下拉菜單,在展開的下拉菜單項目中,選擇【Options for Target‘Target 1’】,或者直接單擊工具欄中Options for Target快捷方式圖標,都可以打開編譯選項設置對話框,如圖1-21所示。可以看到,盡管此窗口包含多個用于編譯選項設置的選項卡,但在一般使用中,只有兩個選項卡中的部分選項需要設置,其余選項卡則保持原始默認值即可。這兩個選項卡就是Output和Debug選項卡,如圖1-21所示。

圖1-21 編譯選項設置窗口

單擊【Output】選項卡,即可打開Output(輸出)選項設置對話框,如圖1-22(a)所示。在此窗口中,只需選中“創建.hex文件選項”:在如圖1-22(a)中選中標注指示的復選框,表明工程編譯之后,輸出或者生成用于下載燒片的.hex文件。相反,如果此選項沒有被選中,即使工程完全正確,且編譯通過,但不會生成用于下載燒片的.hex文件。因此,如果需要進行程序的下載燒片或仿真調試,則此選項必須要選中。此選項選中后如圖1-22(b)所示。

接下來就該設置Debug選項了。單擊如圖1-21所示的【Debug】選項卡,即可打開Debug(調試)選項設置對話框,如圖1-23所示。

圖1-22 Output選項設置

此選項卡默認的調試工具是Simulator。如果使用默認的調試工具,具體調試時,可以從Keil μVision3軟件的部分調試窗口中觀察部分數據的變化情況,不用外接實際的硬件電路,自然也看不到硬件電路中元器件的實際動作和運作現象。在沒有仿真器的條件下,一般選默認調試工具。另外,在調試時,為了讓程序能直接跳轉到主函數main后再開始繼續運行,一般都將圖1-23所示的“Go till main()”復選框選中。

圖1-23 默認調試工具選項設置

如果有仿真器或使用仿真軟件來調試,可不使用默認的調試工具,可以選定自己熟悉的、手頭上可用的調試工具。選中Debug選項卡右邊的“Use”單選按鈕(默認調試工具“Simulator”與此處的“Use”二者只能選擇其一),并從其右側的下拉列表欄中選中自己使用的調試工具,如圖1-24所示。例如,作者一般使用“偉福V系列仿真器”驅動、“Proteus VSM Simulator”、“Keil Monitor-51 Driver”等調試工具。同樣,在調試時,為了讓程序直接運行到主函數main后再開始繼續運行,則需選中“Go till main()”復選項。

圖1-24 自定義調試工具選項設置

當以上兩項設置結束之后,單擊【確定】按鈕,保存此選項設置。需要說明的是,對于一個工程,此編譯調試選項設置只需做一次;新建了新的工程后,此編譯調試選項需重新設置一次,并且每次設置幾乎完全相同。

4)編輯源程序

接下來就該編寫源程序文件了,源程序文件在源程序編輯窗口中編輯輸入。假定源程序文件如下:

#include <reg52.h>
sbit LED0=P2^0;
main()
{
    LED0=0;
}

在編輯輸入或修改源程序期間,編輯窗口標題欄顯示為“F:\LED\led1.c*”,其中,文件名后面緊跟一個星號“*”,星號表明此源文件正處于編輯未保存狀態。無論在任何時候,都可通過單擊工具欄中的“保存”快捷圖標(打開【File】菜單后選擇“保存”選項也一樣)保存源程序文件,此時,標題欄中文件名后的星號就會消失,表明文件已保存。

在編輯輸入上述源程序并保存之后,源程序的編輯即已完成。注意,在編輯或者修改完源程序之后,一定要保存源程序,這樣做的意義是,能保證編譯及生成的.hex文件是編輯或修改后的源程序生成的,而非編輯或修改前源程序編譯生成的。另外,此處不用急于弄清楚這個源程序的具體功能,讀者只需按照原樣編輯輸入即可,因為現在的重點是掌握使用Keil μVision3軟件來生成單片機下載(燒片)所需文件的具體流程,重點不在于源程序的具體功能。相反,在后續章節中,結合多個具體的實例,分析源程序的功能,甚至每一條語句的功能,自然成為了重點。

3.編譯調試

接下來該對工程進行編譯和調試了,編譯和調試的目標就是生成可用于下載燒片的.hex文件。對于軟件程序開發而言,編譯調試與源程序的編輯修改是一個循環往復的過程,一般是經歷編輯—編譯—再編譯—再修改這樣一個循環往復的過程,直至編譯成功、預期的功能完全實現為止。

在Keil μVision3的工具欄中,有三個編譯快捷方式圖標和一個調試快捷方式圖標,如圖1-25所示。

圖1-25 編譯和調試快捷圖標

從字面理解,編譯當前就是對當前正在操作的文件進行編譯;全部編譯就是將該工程中所有文件全部重新編譯;而編譯則是僅將本次修改過的文件進行編譯,沒有修改或變動的文件不編譯。實際使用中,為了防止疏漏,一般選擇全部編譯者居多。

對于調試,單擊如圖1-25所示的“調試”快捷方式圖標,可使工程進入調試狀態。此時,Keil μVision3的工具欄出現如圖1-26所示的調試工具欄。運用這些調試工具,可以監控和調試程序的每一條語句及其執行結果的每一個細節。

圖1-26 調試工具欄

介紹了編譯和調試工具之后,下面僅就如何編譯做具體說明,有關調試的相關細節,請讀者參閱第2章部分內容,也可參閱其他書籍或資料,還可自己通過實踐去掌握。

現在,源程序已經編輯完成,并且已被加載到工程中,相關的編譯調試選項也已設置完畢,下面就開始工程的編譯了。單擊如圖1-25所示的“全部編譯”快捷圖標,工程開始編譯。編譯結束后,編譯信息就出現在信息輸出窗口中,如圖1-27所示。此處的編譯信息表明,該工程編譯是成功的,生成了.hex文件(led1.hex),編譯時沒有出現錯誤,也沒有出現警告(“0 Error(s), 0 Warning(s). ”)。此時,若查驗存放該工程的文件夾,就會發現,與該工程同名、擴展名為.hex的文件在該文件夾中存在,該文件就是本工程編譯生成的、用于下載燒片的文件led1.hex。

圖1-27 信息輸出窗口中的編譯信息

如果源程序文件有錯誤,在工程編譯時,就會在信息輸出窗口中顯示錯誤的位置所在和錯誤、警告的個數。在信息輸出窗口中,通過在提示出現錯誤的信息行文字上雙擊,鼠標的光標就會定位在源程序中出現錯誤的位置附近,依據錯誤提示信息,找出錯誤所在并修改,修改完成后要注意保存源程序。保存修改后的源程序之后,再進行編譯,直到工程沒有錯誤(警告可以忽略),并且生成正確的.hex文件為止。

至此,軟件開發過程結束。通過軟件開發,最終生成了下載燒片所需要的.hex文件。后續的工作就是通過編程器或者下載器,將.hex文件下載或者燒片到單片機的程序存儲器中,然后給硬件電路上電,讓單片機與其外部的硬件設備一起工作,完成預定的各項任務功能。下載和燒片的相關內容可參閱附錄B。

主站蜘蛛池模板: 遂平县| 通化市| 萝北县| 滦平县| 镶黄旗| 修水县| 江北区| 临沧市| 天津市| 阜南县| 深圳市| 纳雍县| 阳西县| 杂多县| 安陆市| 米泉市| 磴口县| 平潭县| 霍山县| 五莲县| 厦门市| 泽州县| 乐清市| 祁门县| 绥棱县| 锦州市| 比如县| 会昌县| 张家港市| 天长市| 营山县| 阜城县| 龙里县| 方正县| 神农架林区| 汝南县| 育儿| 内乡县| 伊宁县| 榆树市| 长顺县|