- 零基礎(chǔ)學(xué)單片機(jī)C語(yǔ)言程序設(shè)計(jì)
- 趙建領(lǐng) 薛園園等編著
- 2116字
- 2018-12-31 21:41:30
2.3 Keil μ Vision3中C51的開(kāi)發(fā)流程
當(dāng)硬件電路和軟件開(kāi)發(fā)環(huán)境準(zhǔn)備好之后,便可以在Keil μ Vision3集成開(kāi)發(fā)環(huán)境中編寫C51程序,并下載到硬件電路中執(zhí)行。下面通過(guò)一個(gè)實(shí)例,來(lái)講解如何在Keil μ Vision3集成開(kāi)發(fā)環(huán)境下進(jìn)行單片機(jī)C51語(yǔ)言的程序設(shè)計(jì)。
2.3.1 創(chuàng)建項(xiàng)目
雙擊啟動(dòng)Keil μ Vision3集成開(kāi)發(fā)環(huán)境,C51程序需要在一個(gè)項(xiàng)目中進(jìn)行管理。因此首先開(kāi)始創(chuàng)建項(xiàng)目,操作步驟如下所示。
(1)在Keil μ Vision3集成開(kāi)發(fā)環(huán)境中,選擇“Project”→“New”→“μ Vision Project”命令,彈出“創(chuàng)建新項(xiàng)目”對(duì)話框,如圖2.22所示。用戶可以在其中輸入項(xiàng)目的名稱,并選擇需要保存的目錄。

圖2.22 創(chuàng)建新項(xiàng)目
(2)單擊“保存”按鈕,此時(shí)彈出選擇單片機(jī)型號(hào)對(duì)話框,如圖2.23所示。用戶可以在其中選擇所使用的單片機(jī)型號(hào)。例如選擇Atmel公司的單片機(jī)AT89S52,此時(shí)在Description欄中將會(huì)顯示該單片機(jī)的資源。此時(shí)選擇的單片機(jī)型號(hào)也可以在項(xiàng)目建立后重新更改。

圖2.23 選擇單片機(jī)型號(hào)
(3)選擇完畢后,單擊“確定”按鈕,此時(shí)彈出提示信息,如圖2.24所示。該提示信息詢問(wèn)是否將適合該單片機(jī)型號(hào)的8051啟動(dòng)代碼添加到項(xiàng)目中。對(duì)于C51程序,一般選擇添加即可。

圖2.24 提示信息
(4)單擊“是”按鈕,選擇添加,此時(shí)項(xiàng)目建立完畢。其中還沒(méi)有任何源文件,屬于一個(gè)空殼項(xiàng)目,如圖2.25所示。

圖2.25 項(xiàng)目建立完畢
2.3.2 創(chuàng)建源文件
當(dāng)一個(gè)單片機(jī)項(xiàng)目建立完畢后,需要向其中添加程序的源文件。這里以新建一個(gè)C51源文件為例,介紹具體的操作步驟。
(1)選擇“File”→“New”命令,此時(shí)工作區(qū)中彈出一個(gè)新的源代碼編輯窗口,如圖2.26所示。

圖2.26 新建的源代碼編輯窗口
(2)用戶可以在其中輸入C51的源代碼,輸入如下程序代碼。
#include <reg51.h> //頭文件 sbit sel=P0^0; //位定義 void main() //主函數(shù) { P1=0x00; //P1端口預(yù)置數(shù) while(1) //循環(huán)執(zhí)行程序 { if (sel) //判斷端口數(shù)值,如果為高電平 { P1=P1+1; //P1端口數(shù)據(jù)右移 if (P1==0xFF) //P1端口為0xFF時(shí),重新置數(shù) P1==0x00; //以便于循環(huán)操作 } else { P1=P1-1; //P1端口數(shù)據(jù)左移 if (P1==0x00) //P1端口為零時(shí),重新置數(shù) P1=0xFF; //以便于循環(huán)操作 } } }
這段C51程序的功能是判斷單片機(jī)P0.0端口的電平。如果為高電平,就讓P1口的數(shù)據(jù)循環(huán)遞增;如果為低電平,就讓P1口的數(shù)據(jù)循環(huán)遞減。
從這段程序代碼可以看出,C51語(yǔ)言和C語(yǔ)言的程序結(jié)構(gòu)基本一致。由于C51語(yǔ)言運(yùn)行于單片機(jī)系統(tǒng),P0和P1為單片機(jī)的端口資源,可以直接對(duì)端口操作,這是C51語(yǔ)言特有的。
(3)C51源代碼輸入完畢后,可以選擇“File”→“Save”命令,保存為.C文件。
(4)在項(xiàng)目管理窗口中,右擊“Source Group 1”標(biāo)簽,選擇“Add Files to Group‘Source Group 1’”命令,在彈出的對(duì)話框中選擇剛才保存的C51源文件,并添加到當(dāng)前項(xiàng)目中。
2.3.3 編譯項(xiàng)目
項(xiàng)目及C51源文件準(zhǔn)備好后便可以編譯項(xiàng)目了。Keil μ Vision3集成開(kāi)發(fā)環(huán)境中,提供了多個(gè)源代碼編譯命令,分別介紹如下。
? 選擇“Project”→“Translate ??.c”命令,可以完成對(duì)當(dāng)前C51源代碼的翻譯。
? 選擇“Project”→“Build target”命令,即可對(duì)該項(xiàng)目進(jìn)行編譯。
? 選擇“Project”→“ReBuild all target files”命令,可以重新編譯所有的項(xiàng)目文件。
如果源程序無(wú)誤,則編譯完成后,將在輸出窗口中顯示編譯結(jié)果,如圖2.27所示。

圖2.27 編譯輸出結(jié)果
2.3.4 仿真調(diào)試
Keil μ Vision3集成開(kāi)發(fā)環(huán)境中提供了強(qiáng)大的程序仿真功能。在一個(gè)程序下載到單片機(jī)硬件中執(zhí)行之前,可以首先對(duì)程序進(jìn)行仿真,以確保源程序符合要求。下面就介紹如何使用Keil μ Vision3來(lái)進(jìn)行單片機(jī)C51語(yǔ)言程序的仿真調(diào)試。操作步驟如下。
(1)選擇“Debug”→“Start/Stop Debug Session”命令,此時(shí),Keil μ Vision3進(jìn)入仿真調(diào)試模式。
(2)選擇“Peripherals”→“I/O-Ports”→“Port 0”命令,打開(kāi)并行端口P0仿真窗口,如圖2.28所示。

圖2.28 并行端口P0仿真窗口
(3)選擇“Peripherals”→“I/O-Ports”→“Port 1”命令,打開(kāi)并行端口P1仿真窗口,如圖2.29所示。

圖2.29 并行端口P1仿真窗口
(4)按F11鍵,開(kāi)始單步執(zhí)行程序。由于P0端口初始化為0xFF,因此變量sel為1,單片機(jī)的并行端口P1數(shù)據(jù)循環(huán)遞增,如圖2.30所示。

圖2.30 P1端口數(shù)據(jù)遞增
(5)如果手工改變P0.0引腳為低電平,如圖2.31所示。此時(shí),如果繼續(xù)按F11鍵執(zhí)行程序,P1端口的數(shù)據(jù)將循環(huán)遞減。

圖2.31 置P0.0引腳為低電平
(6)選擇“Debug”→“Start/Stop Debug Session”命令,可以退出程序仿真調(diào)試模式。
通過(guò)上面的仿真操作可以看出,這段源代碼完全符合預(yù)期的功能。合理使用Keil μ Vision3集成開(kāi)發(fā)環(huán)境的仿真調(diào)試功能,不僅能夠確保源程序的正確性,同時(shí)也可以在沒(méi)有硬件的基礎(chǔ)上學(xué)習(xí)C51語(yǔ)言及單片機(jī)程序開(kāi)發(fā),從而加快學(xué)習(xí)速度。
2.3.5 程序下載
C51程序需要在單片機(jī)硬件上執(zhí)行,因此需要通過(guò)特定的工具將源程序生成的可執(zhí)行文件寫入單片機(jī)中。Keil μ Vision3集成開(kāi)發(fā)環(huán)境生成的可執(zhí)行文件一般為HEX格式的文件。在Keil μ Vision3中生成單片機(jī)上可執(zhí)行的文件的步驟如下。
(1)選擇“Project”→“Options for Target‘Target 1’”命令,此時(shí)彈出“Options for Target‘Target 1’”對(duì)話框,如圖2.32所示。

圖2.32 “Options for Target‘Target 1’”對(duì)話框
(2)在Output選項(xiàng)卡中,選中“Create Hex File”復(fù)選框,并單擊“確定”按鈕保存設(shè)置。
(3)此時(shí),重新編譯一次,便生成可以下載到單片機(jī)中的HEX執(zhí)行文件。
然后可以利用下載工具將其下載到單片機(jī)中執(zhí)行。目前市場(chǎng)上有多種下載工具可以選擇,其價(jià)格和支持的器件各不相同。但所有的下載工具均包含擦除器件、寫器件、讀器件和校驗(yàn)數(shù)據(jù)等功能。以AT89S52單片機(jī)的程序下載為例,其程序下載界面如圖2.33所示。在下載程序前,一般先擦除單片機(jī),以防止先前程序的干擾。然后,選擇Keil μ Vision3集成開(kāi)發(fā)環(huán)境生成的HEX可執(zhí)行文件寫入單片機(jī)。最后,還需要校驗(yàn)數(shù)據(jù),以確保程序?qū)懭胝_。

圖2.33 下載程序
當(dāng)程序正確通過(guò)編譯并寫入單片機(jī)后,便可以在單片機(jī)中運(yùn)行。
- TensorFlow Lite移動(dòng)端深度學(xué)習(xí)
- C語(yǔ)言程序設(shè)計(jì)(第3版)
- Java入門經(jīng)典(第6版)
- Getting started with Google Guava
- TypeScript Blueprints
- Python網(wǎng)絡(luò)爬蟲(chóng)從入門到實(shí)踐(第2版)
- Oracle 12c中文版數(shù)據(jù)庫(kù)管理、應(yīng)用與開(kāi)發(fā)實(shí)踐教程 (清華電腦學(xué)堂)
- 營(yíng)銷數(shù)據(jù)科學(xué):用R和Python進(jìn)行預(yù)測(cè)分析的建模技術(shù)
- Ray分布式機(jī)器學(xué)習(xí):利用Ray進(jìn)行大模型的數(shù)據(jù)處理、訓(xùn)練、推理和部署
- Python高效開(kāi)發(fā)實(shí)戰(zhàn):Django、Tornado、Flask、Twisted(第3版)
- Zabbix Performance Tuning
- PHP 8從入門到精通(視頻教學(xué)版)
- Learning Cocos2d-JS Game Development
- SAS編程演義
- Java Web動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)(第2版·微課版)