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

2.1 Keil C251集成開發環境

單片機應用程序的編輯、編譯一般都采用Keil集成開發環境實現,但程序的調試有多種方法,如軟件仿真調試、硬件(在線)仿真調試與Proteus軟件模擬調試等,如圖2.1所示。

圖2.1 單片機應用程序的編輯、編譯與調試流程

Keil能夠實現匯編語言源程序和C語言源程序的輸入、編輯與編譯,生成機器代碼文件,還能夠實現模擬調試及與目標電路板的在線調試。

1.下載Keil C251安裝程序

登錄Keil官網,如圖2.2所示,單擊C251選項,按提示輸入相關信息,單擊“確定”按鈕下載Keil C251安裝程序。

圖2.2 C251下載界面

2.安裝

(1)雙擊安裝程序,如圖2.3所示,在彈出“License Agreement”界面中勾選“I agree to all the terms of the preceding License Agreement”,單擊“Next”按鈕進入下一步。

(2)如圖2.4所示,在彈出的“Welcome to Keil μVision”界面中單擊“Next”按鈕進入下一步。

圖2.3 “License Agreement”界面

圖2.4 “Welcome to Keil μVision”界面

(3)選擇安裝路徑,默認的安裝路徑是C:\Keil_v5,如圖2.5所示,單擊“Next”按鈕進入下一步。

圖2.5 選擇安裝路徑

(4)填寫個人信息,如圖2.6所示,單擊“Next”按鈕進入下一步。

(5)安裝完成,如圖2.7所示,單擊“Finish”按鈕結束安裝。

圖2.6 填寫個人信息

圖2.7 安裝完成

3.添加型號和頭文件到Keil C251中

使用Keil C251之前需要先安裝STC單片機的型號、頭文件與仿真驅動文件,安裝步驟如下:

(1)打開STC-ISP在線編程軟件(可從STC官方網站下載),然后在軟件右邊功能區的“Keil仿真設置”界面中單擊“添加型號和頭文件到Keil中添加STC仿真器驅動到Keil中”按鈕,如圖2.8所示。

圖2.8 添加型號與頭文件

(2)如圖2.9所示,在彈出的界面中,將添加路徑定位到Keil C251的安裝目錄(如C:/Keil_v5),單擊“確定”按鈕。

(3)安裝成功后的界面如圖2.10所示。

圖2.9 選擇添加路徑

圖2.10 安裝成功后的界面

4.應用Keil C251進行應用程序的輸入、編輯與編譯并生成機器代碼

1)新建項目文件夾

在項目目標處新建一個當前項目的文件夾,用于存放當前項目的相關文件,如H:/32位8051單片機原理與應用/STC32DEMO。

2)新建項目

(1)打開Keil C251軟件,單擊“Project”菜單中的“New μVision Project...”項,在彈出的界面中選擇新建項目存儲的目標路徑,以及輸入新建項目的名稱,然后保存,如圖2.11所示。

(2)選擇目標芯片。如圖2.12所示,在彈出的界面中單擊下拉按鈕,選擇“STC MCU Database”,在STC庫中選擇“STC32G12K128 Series”芯片,然后單擊“OK”按鈕,完成“demo”項目的創建。

圖2.11 選擇新建項目目標路徑與設置新建項目名稱

圖2.12 選擇目標芯片

3)新建文件

(1)單擊“File”菜單中的“New”項,彈出新建文件(Text1)界面,單擊保存按鈕,如圖2.13所示。

圖2.13 新建文件

(2)輸入源程序文件名與文件類型。在文件保存界面中,輸入文件名與文件類型,即demo.c,單擊“保存”按鈕,完成“demo.c”的創建,如圖2.14所示。

圖2.14 設置文件名與文件類型

注意:如源程序文件是C語言文件,后綴名為c;如源程序文件是匯編語言文件,后綴名為asm。

(3)輸入與編輯源程序文件(demo.c),單擊“保存”按鈕。demo.c清單如下:

4)將新建文件添加到當前項目中

鼠標右鍵單擊“Source Group 1”并選擇“Add Existing Files to Group 'Source Group 1'...”,如圖2.15所示;在彈出的界面中選擇“demo”(即demo.c),單擊“Add”按鈕,如圖2.16所示,關閉添加文件界面。

圖2.15 選擇添加程序文件

圖2.16 選擇添加的程序文件

5)設置編譯環境

單擊工具欄中的img按鈕,打開編譯環境設置界面。

(1)設置項目1:在“Target”標簽頁中將“CPU Mode”項設為“Source(251 native)”,如圖2.17所示。

(2)設置項目2:在“Target”標簽頁中將“Memory Model”項設為“XSmall:near vars,far const,ptr-4”,如圖2.18所示。

圖2.17 “Target”標簽頁(設置項目1)

圖2.18 “Target”標簽頁(設置項目2)

(3)設置項目3:當程序大小不超過64KB時,在“Target”標簽頁中將“Code Rom Size”項設為“Large:variables in XDATA”,如圖2.19所示;當程序大小超過64K字節時,在“Target”標簽頁中將“Code Rom Size”項設為“Huge:64K functions,16M progr”,此時需要保證單個函數及單個文件的代碼大小必須在64KB以內,并且單個表格的數據量也必須在64KB以內,同時還需要設置“External Memory”,如圖2.20所示。

圖2.19“Target”標簽頁(當程序大小不超過64KB時)

圖2.20“Target”標簽頁(當程序大小超過64KB時)

(4)設置項目4:若程序空間超過64KB,則在“Output”標簽頁中必須將“HEX Format”項設為“HEX-386”,只有當程序空間不超過64KB時,此項才可設為“HEX-80”,如圖2.21所示。

(5)設置項目5:編譯時創建hex文件。勾選“Create HEX File”選項,如圖2.21所示。

6)編譯程序文件

單擊img按鈕或img按鈕,Keil C251進入編譯過程,編譯完成后,界面底部輸出窗口(Build Output)顯示編譯輸出信息,如圖2.22所示。如有Warning或Error信息,在窗口中,雙擊該信息,可以直接調轉至其在程序中對應的行,以便編程者對程序進行分析與糾錯,糾錯后再編譯,直至顯示“0Error(s)”,此時才算編譯成功,實際應用中,最好是“0Error(s),0Warning(s)”。

圖2.21“Output”標簽頁

圖2.22 編譯輸出信息

5.應用Keil C251模擬調試(仿真)單片機應用程序

Keil C251不僅可編輯C語言源程序和匯編語言源程序,還可以軟件模擬和硬件仿真的形式調試用戶程序,以驗證用戶程序的正確性。在下文介紹仿真的過程中,我們主要學習兩個方面的內容:一是程序的運行方式,二是如何查看與設置單片機內部資源的狀態。

在編譯環境設置界面的“Debug”標簽頁中設置仿真方式,如圖2.23所示,系統默認設置是模擬仿真;硬件(在線)仿真需要采用STC-USB Link1工具,其連接方法如圖2.24所示。

圖2.23 “Debug”標簽頁(設置仿真方式)

圖2.24 硬件(在線)仿真連接示意圖

在此重點介紹模擬調試(仿真),其步驟如下。

1)進入調試界面

單擊工具欄中的img按鈕,進入Keil C251的調試界面,如圖2.25所示。

(1)調試工具按鈕:從左至右依次為Reset(復位)、Run(全速運行)、Stop(停止運行)、Step(跟蹤運行)、Step Over(單步運行)、Step Out(執行跟蹤并跳出當前函數)、Run to Cursor Line(執行至光標處)。單擊其中任意工具按鈕,系統就會執行該工具按鈕對應的功能。

img(復位):使單片機的狀態恢復到初始狀態。

img(全速運行):系統從0000H開始運行程序,若無斷點,則無障礙運行程序;若遇到斷點,則程序在斷點處停止,再單擊此工具按鈕,程序會從斷點處繼續運行。

提示:斷點的設置與取消

雙擊需要設置斷點的指令行,即可設置斷點,此時在指令行的左邊會出現一個紅色方框;反之,雙擊需要取消斷點的指令行,則取消該斷點。斷點主要用于分塊調試程序,便于縮小程序故障范圍。

圖2.25 Keil C251的調試界面

img(停止運行):從程序運行狀態中退出。

img(跟蹤運行):每單擊該按鈕一次,系統執行一條指令,包括子程序(或子函數)中的每一條指令。運用該工具按鈕,可逐條指令進行程序調試。

img(單步運行):每單擊該按鈕一次,系統執行一條指令,但系統將調用子程序指令當作一整條指令執行。

img(執行跟蹤并跳出當前函數):當執行跟蹤操作進入了某個子程序時,單擊該按鈕,可從子程序中跳出,回到調用該子程序指令的下一條指令處。

img(執行至光標處):單擊該按鈕,程序從當前位置運行到光標處停下,其作用與斷點類似。

(2)調試程序窗口:調試程序窗口中顯示當前調試的源程序,在此可設置程序運行的目標處及設置斷點;在跟蹤運行或單步運行模式中,通過調試程序窗口可觀察到每一步的運行位置。

(3)寄存器窗口:寄存器包括R0~R14寄存器(在軟件界面上顯示的為r0~r14)、累加器A、寄存器B、程序狀態字寄存器PSW、數據指針寄存器DPTR及程序計數器PC等。在此窗口中可用鼠標左鍵雙擊要設置的寄存器,修改其數據。

(4)存儲器窗口:存儲器窗口用于顯示當前程序內部數據存儲器、外部(擴展)數據存儲器與程序存儲器的內容。在“Address”地址框中輸入存儲器類型與地址,存儲器窗口即可顯示與輸入類型相同且起始地址為輸入地址的存儲單元的內容,通過移動垂直滑動條可查看其他地址單元的內容。在此可修改存儲單元的內容。“c:存儲器地址”表示顯示的是程序存儲區相應地址的內容,“x:存儲器地址”表示顯示的是擴展數據存儲區(xdata)相應地址的內容,“e:存儲器地址”表示顯示的是數據存儲區(edata)相應地址的內容。

在顯示數據的區域單擊鼠標右鍵,可以在彈出的快捷菜單中選擇修改存儲器內容的顯示格式或修改指定存儲單元的內容。

(5)反匯編窗口:反匯編窗口同時顯示機器代碼程序與匯編語言源程序(或顯示C51源程序和相應的匯編語言源程序)。

(6)內部端口菜單:通過單擊此菜單上的選項可打開內部I/O端口的控制窗口,可用于設置內部端口的初始狀態及觀察程序運行過程中內部端口的當前狀態,包括Interrupt(中斷)、I/O-Ports(并行I/O端口)、Serial(串行端口)、Timer(定時器)等內部端口的控制窗口。

2)調試用戶程序

本示例程序用到P1口和P3口,P1口用于顯示流水燈信息,P3口的P3.2用于改變流水燈移動的方向。選擇Peripherals→I/O-Ports→P1菜單命令可調出P1口控制窗口,選擇Peripherals→I/O-Ports→P3菜單命令可調出P3口控制窗口,如圖2.26所示。每個控制窗口的主要內容分3行,第1、2行代表端口鎖存器輸出信息,第3行代表端口輸入引腳信息。信息顯示有2種形式:①為十六進制,②為二進制,“√”代表高電平,空白代表低電平。通過第1行可以設置端口(輸出)的初始狀態,通過第3行可以設置端口輸入引腳的信息,可以在①框中輸入十六進制信息,也可在②框中單擊需要調整的二進制位。

圖2.26 Keil C251的P1口和P3口控制窗口

單擊全速運行按鈕img,此時P3.2輸入高電平,觀察P1口控制窗口中“√”的移動方向和移動間隔。

單擊P3.2的輸入引腳位,讓P3.2輸入電平為低電平,觀察P1口控制窗口中“√”的移動方向和移動間隔。

主站蜘蛛池模板: 江川县| 嘉义县| 恭城| 西贡区| 铁岭县| 灵璧县| 余姚市| 柳江县| 潮州市| 蓬安县| 资阳市| 佛冈县| 乐平市| 扬中市| 运城市| 突泉县| 翁牛特旗| 称多县| 马龙县| 南丹县| 怀远县| 扎赉特旗| 普兰县| 永胜县| 隆尧县| 潞西市| 山东| 牙克石市| 梅州市| 肃宁县| 晋江市| 宜君县| 连南| 通海县| 和田县| 永丰县| 格尔木市| 五莲县| 民丰县| 深泽县| 延津县|