歡迎大家來到C語言單片機編程課堂。前面一課我們了解了單片機編程與嵌入式開發(fā)內(nèi)容,這節(jié)課我們來學習單片機開發(fā)環(huán)境Keil,并使用keil完成單片機編程第一個實驗任務(wù)。
Keil是由美國Keil Software公司研發(fā)的嵌入式開發(fā)工具,它支持使用匯編語言和C語言開發(fā)單片機嵌入式程序。Keil提供了不同的工具包用于支持不同指令架構(gòu)的單片機,在課程中我們主要學習51單片機和ARM指令架構(gòu)的單片機嵌入式開發(fā),Keil完全支持51和ARM指令架構(gòu)的單片機開發(fā)。
Keil開發(fā)工具沒有發(fā)布中文版,但絕大多數(shù)嵌入式開發(fā)工程師都在使用Keil開發(fā)工具,它內(nèi)置了CC++編譯器、匯編編譯器、軟件仿真和硬件仿真。軟件仿真在程序運行調(diào)試狀態(tài)下,可以查看模擬單片機的寄存器、存儲器、I/O口狀態(tài),也可以查看程序在單片機內(nèi)部執(zhí)行過程中內(nèi)存的狀態(tài)。有了軟件仿真調(diào)試功能,開發(fā)者在沒有單片機的情況下,也可以開發(fā)單片機程序,并查看程序運行結(jié)果。硬件仿真可以接入外部仿真器仿真實際運行的單片機。

搭建Keil開發(fā)環(huán)境
安裝Keil開發(fā)工具
搜索Keil官網(wǎng),進入Keil官網(wǎng)網(wǎng)站,在Keil官網(wǎng)我們主要下載MDK-Arm和C51兩個安裝包,C51用于51系列單片機開發(fā),MDK-Arm用于ARM指令架構(gòu)的系列單片機開發(fā)。

分別下載C51和MDK-Arm到本地,先安裝C51開發(fā)工具,C51安裝完成后,再安裝MDK-Arm(安裝路徑選擇C51的安裝路徑)。
安裝STC51系列單片機仿真包
Keil安裝完成后,并不支持STC51系列單片機的仿真調(diào)試,需要單獨安裝STC51系列單片機仿真包。進入STC(宏晶科技)官網(wǎng),下載STC-ISP安裝包,STC-ISP是宏晶公司提供的單片機下載燒錄軟件,是針對STC系列單片機而設(shè)計的,可下載程序到STC89、12C2052和12C5410等系列的STC單片機ROM內(nèi)。
下載后解壓縮包,運行stc-isp程序,選擇“Keil仿真設(shè)置”標簽頁,單擊“添加STC仿真器驅(qū)動到Keil中”按鈕,在彈出的目錄選擇對話框選擇keil的安裝目錄,單擊確定即可完成STC仿真器驅(qū)動。

第一個單片機實驗
實驗?zāi)康?/strong>
使用keil創(chuàng)建單片機開發(fā)項目,添加C文件到項目,編寫C代碼控制單片機I/O口輸出低電平,掌握代碼的仿真調(diào)試,查看單片機I/O電平變化。
實驗相關(guān)知識
TTL電平
實驗用單片機為STC89C52RC,實驗涉及到單片機I/O口的TTL電平檢測。TTL電平信號規(guī)定+5V等價于邏輯“1”,0V等價于邏輯“0”,使用Keil進行仿真調(diào)試時,若I/O口某位輸出“0”,則為低電平,輸出“1”則為高電平。
單片機I/O口
單片機I/O口用于單片機與外部設(shè)備的連接并控制外部設(shè)備。STC89C52RC有4個8位的雙向I/O口,即可用于外部設(shè)備輸入數(shù)據(jù)到單片機,也可以用于單片機向外部設(shè)備輸出數(shù)據(jù)或控制指令。

上圖的P0、P1、P2、P3為單片機的I/O口,每個I/O可以進行位控制,按位進行操作,每個位的初始邏輯狀態(tài)為1(高電平),使用程序可以改變每個I/O為的邏輯狀態(tài),從而控制對應(yīng)的外部設(shè)備。例如通過程序?qū)1.0位置為0(低電平)。
實驗過程
創(chuàng)建單片機開發(fā)項目
啟動keil開發(fā)工具,展開“Project”菜單,選擇“New μVision Project ……”命令,在彈出的“Create New Project”對話框內(nèi),選擇項目保存位置,輸入項目名稱。

在彈出的“Select Device for target”對話框內(nèi),選擇列表框內(nèi)的“STC MCU Database”項,在單片機類型列表框內(nèi)選擇“STC89C52RC”單片機,然后單擊“OK”按鈕。

添加C文件到項目
單片機項目創(chuàng)建成功后,需要添加C文件到項目,項目工作窗口如下圖所示。

選擇項目文件窗口“Source Group 1”節(jié)點,單擊鼠標右鍵,在彈出的菜單中選擇“ADD New Item to Group ‘Source Group 1’……”命令,如下圖所示。

在彈出的“Add New Item to Group ‘Source Group 1’”對話框內(nèi),在文件類型列表框選擇C文件類型,在Name輸入域輸入C文件名稱,這里輸入的是“controllio.c”,輸入完成后,單擊“Add”按鈕。如下圖所示。

C文件“controllio.c”已添加到項目節(jié)點“Source Group 1”節(jié)。

在“controllio.c”編輯窗口,輸入下面的C代碼:
#include
sbit led1 = P1^0;
void main()
{
led1=0;
}
reg51.h是通用80C51和80C31單片機的頭文件。頭文件有兩個keil定義的關(guān)鍵字sbit和sfr,sbit用來定義位變量,sfr用來定義地址變量。
sbit的用法:
sbit X = A^n
其中X是位變量,A是一個可進行位尋址的變量,n表示變量A的第n位,注意這里的^不是C語言的異或操作符,是keil定義的一個特殊符號,用于確定可進行位尋址變量的第幾位。例如代碼:
sbit led1 = P1^0;
sbit定義了led1變量,該變量指向P1口的第0位,若執(zhí)行語句led1=0; 則P1口的第0位被置為低電平。
sfr的用法:
sfr X = 0x80
其中X是地址變量,0x80是一個地址。例如代碼:
sfr P0 = 0x80;
sfr定義了P0變量,該變量指向0x80地址,該地址為單片機P0口的地址。
C程序仿真調(diào)試
Keil提供了仿真調(diào)試功能,即使在沒有單片機硬件的情況下,我們也可以判斷C程序在單片機內(nèi)是否運行正常,并跟蹤和調(diào)試C程序完整的執(zhí)行過程。
設(shè)置仿真
在進行仿真調(diào)試之前,需要查看Keil是否已設(shè)置了仿真調(diào)試,展開Project菜單,選擇“Options for Targets”命令,在彈出的對話框中,選擇“Debug”標簽頁,確定“Use Simulator”被選中。

仿真調(diào)試過程
展開“Debug”菜單,選擇“Insert/Remove Breakpoint”命令,或者用鼠標雙擊語句左側(cè)的灰色區(qū)域設(shè)置斷點,如下圖所示。

展開“Debug”菜單,選擇“Start/Stop Debug Session”命令,或按下Ctrl+F5鍵,或單擊工具條上的啟動調(diào)試圖標,都可以啟動程序的仿真調(diào)試。
程序啟動后,執(zhí)行到斷點后暫停運行,仿真調(diào)試窗口如下圖所示。

通過寄存器窗口可以查看程序執(zhí)行過程中寄存器狀態(tài)的變化,關(guān)于單片機的寄存器,在后面的實驗中會陸續(xù)講解。匯編指令窗口顯示了程序編譯后的匯編指令,通過該窗口可以查看匯編指令。在代碼窗口可以查看代碼,也可以繼續(xù)執(zhí)行程序,或單步執(zhí)行,或執(zhí)行代碼行,或執(zhí)行到光標所在行。
本實驗重點查看仿真單片機的I/O口狀態(tài),展開“peripherals”菜單,選擇“I/O-Ports”菜單項,再彈出的子菜單中選擇“Port 1”項。

Keil彈出P1口狀態(tài)對話框,如下圖所示。

從圖中可以看到,當前P1口0~7位邏輯狀態(tài)都為1,繼續(xù)執(zhí)行程序,再次查看P1口狀態(tài)。

P1口第0位的邏輯狀態(tài)已經(jīng)發(fā)生了變化,其邏輯狀態(tài)為0。
實驗小結(jié)
通過這次實驗,掌握了Keil編寫單片機程序的過程,以及如何仿真調(diào)試單片機程序。實際上,在沒有硬件單片機的情況下,應(yīng)用Keil仿真調(diào)試工具,完全可以監(jiān)控程序在仿真單片機中的運行狀態(tài)。
本次實驗主要完成單片機I/O口單個位的控制。下次實驗應(yīng)用EDA仿真工具proteus,設(shè)計單片機第一個應(yīng)用,使用單片機I/O口控制發(fā)光二極管。
-
單片機
+關(guān)注
關(guān)注
6077文章
45514瀏覽量
671415 -
嵌入式
+關(guān)注
關(guān)注
5200文章
20507瀏覽量
334921 -
C語言
+關(guān)注
關(guān)注
183文章
7645瀏覽量
145788 -
keil
+關(guān)注
關(guān)注
69文章
1230瀏覽量
172761 -
開發(fā)環(huán)境
+關(guān)注
關(guān)注
1文章
272瀏覽量
17646
發(fā)布評論請先 登錄
如何在Linux環(huán)境下搭建51單片機的開發(fā)燒寫環(huán)境
STM32單片機如何進行開發(fā)環(huán)境的搭建
C51單片機學習筆記(一)——搭建開發(fā)環(huán)境及燒寫工具
VSCode搭建STM32單片機開發(fā)環(huán)境
入門51單片機(一):開發(fā)環(huán)境的搭建
單片機集成開發(fā)環(huán)境Keil5的使用
"【51單片機授課筆記】(0)開發(fā)環(huán)境搭建,Keil的下載,安裝與授權(quán),固件燒錄方法(史上最詳細,win10系統(tǒng)
合泰單片機HT32之keil5開發(fā)環(huán)境搭建(一)
單片機Keil開發(fā)環(huán)境的搭建
評論