0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)Keil開發(fā)環(huán)境的搭建

CHANBAEK ? 來源:郎哥編程課堂 ? 作者:郎宏林 ? 2023-11-01 09:17 ? 次閱讀

歡迎大家來到C語言單片機(jī)編程課堂。前面一課我們了解了單片機(jī)編程嵌入式開發(fā)內(nèi)容,這節(jié)課我們來學(xué)習(xí)單片機(jī)開發(fā)環(huán)境Keil,并使用keil完成單片機(jī)編程第一個(gè)實(shí)驗(yàn)任務(wù)。

Keil是由美國Keil Software公司研發(fā)的嵌入式開發(fā)工具,它支持使用匯編語言和C語言開發(fā)單片機(jī)嵌入式程序。Keil提供了不同的工具包用于支持不同指令架構(gòu)的單片機(jī),在課程中我們主要學(xué)習(xí)51單片機(jī)ARM指令架構(gòu)的單片機(jī)嵌入式開發(fā),Keil完全支持51和ARM指令架構(gòu)的單片機(jī)開發(fā)。

Keil開發(fā)工具沒有發(fā)布中文版,但絕大多數(shù)嵌入式開發(fā)工程師都在使用Keil開發(fā)工具,它內(nèi)置了CC++編譯器、匯編編譯器、軟件仿真硬件仿真。軟件仿真在程序運(yùn)行調(diào)試狀態(tài)下,可以查看模擬單片機(jī)的寄存器、存儲器、I/O口狀態(tài),也可以查看程序在單片機(jī)內(nèi)部執(zhí)行過程中內(nèi)存的狀態(tài)。有了軟件仿真調(diào)試功能,開發(fā)者在沒有單片機(jī)的情況下,也可以開發(fā)單片機(jī)程序,并查看程序運(yùn)行結(jié)果。硬件仿真可以接入外部仿真器仿真實(shí)際運(yùn)行的單片機(jī)。

圖片

搭建Keil開發(fā)環(huán)境

安裝Keil開發(fā)工具

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

圖片

分別下載C51和MDK-Arm到本地,先安裝C51開發(fā)工具,C51安裝完成后,再安裝MDK-Arm(安裝路徑選擇C51的安裝路徑)。

安裝STC51系列單片機(jī)仿真包

Keil安裝完成后,并不支持STC51系列單片機(jī)的仿真調(diào)試,需要單獨(dú)安裝STC51系列單片機(jī)仿真包。進(jìn)入STC(宏晶科技)官網(wǎng),下載STC-ISP安裝包,STC-ISP是宏晶公司提供的單片機(jī)下載燒錄軟件,是針對STC系列單片機(jī)而設(shè)計(jì)的,可下載程序到STC89、12C2052和12C5410等系列的STC單片機(jī)ROM內(nèi)。

下載后解壓縮包,運(yùn)行stc-isp程序,選擇“Keil仿真設(shè)置”標(biāo)簽頁,單擊“添加STC仿真器驅(qū)動(dòng)到Keil中”按鈕,在彈出的目錄選擇對話框選擇keil的安裝目錄,單擊確定即可完成STC仿真器驅(qū)動(dòng)。

圖片

第一個(gè)單片機(jī)實(shí)驗(yàn)

實(shí)驗(yàn)?zāi)康?/strong>

使用keil創(chuàng)建單片機(jī)開發(fā)項(xiàng)目,添加C文件到項(xiàng)目,編寫C代碼控制單片機(jī)I/O口輸出低電平,掌握代碼的仿真調(diào)試,查看單片機(jī)I/O電平變化。

實(shí)驗(yàn)相關(guān)知識

TTL電平

實(shí)驗(yàn)用單片機(jī)為STC89C52RC,實(shí)驗(yàn)涉及到單片機(jī)I/O口的TTL電平檢測。TTL電平信號規(guī)定+5V等價(jià)于邏輯“1”,0V等價(jià)于邏輯“0”,使用Keil進(jìn)行仿真調(diào)試時(shí),若I/O口某位輸出“0”,則為低電平,輸出“1”則為高電平。

單片機(jī)I/O口

單片機(jī)I/O口用于單片機(jī)與外部設(shè)備的連接并控制外部設(shè)備。STC89C52RC有4個(gè)8位的雙向I/O口,即可用于外部設(shè)備輸入數(shù)據(jù)到單片機(jī),也可以用于單片機(jī)向外部設(shè)備輸出數(shù)據(jù)或控制指令。

圖片

上圖的P0、P1、P2、P3為單片機(jī)的I/O口,每個(gè)I/O可以進(jìn)行位控制,按位進(jìn)行操作,每個(gè)位的初始邏輯狀態(tài)為1(高電平),使用程序可以改變每個(gè)I/O為的邏輯狀態(tài),從而控制對應(yīng)的外部設(shè)備。例如通過程序?qū)1.0位置為0(低電平)。

實(shí)驗(yàn)過程

創(chuàng)建單片機(jī)開發(fā)項(xiàng)目

啟動(dòng)keil開發(fā)工具,展開“Project”菜單,選擇“New μVision Project ……”命令,在彈出的“Create New Project”對話框內(nèi),選擇項(xiàng)目保存位置,輸入項(xiàng)目名稱。

圖片

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

圖片

添加C文件到項(xiàng)目

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

圖片

選擇項(xiàng)目文件窗口“Source Group 1”節(jié)點(diǎn),單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“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”已添加到項(xiàng)目節(jié)點(diǎn)“Source Group 1”節(jié)。

圖片

在“controllio.c”編輯窗口,輸入下面的C代碼:

#include
sbit led1 = P1^0;
void main()
{
       led1=0;
}

reg51.h是通用80C51和80C31單片機(jī)的頭文件。頭文件有兩個(gè)keil定義的關(guān)鍵字sbit和sfr,sbit用來定義位變量,sfr用來定義地址變量。

sbit的用法:

sbit X = A^n

其中X是位變量,A是一個(gè)可進(jìn)行位尋址的變量,n表示變量A的第n位,注意這里的^不是C語言的異或操作符,是keil定義的一個(gè)特殊符號,用于確定可進(jìn)行位尋址變量的第幾位。例如代碼:

sbit led1 = P1^0;

sbit定義了led1變量,該變量指向P1口的第0位,若執(zhí)行語句led1=0; 則P1口的第0位被置為低電平。

sfr的用法:

sfr X = 0x80

其中X是地址變量,0x80是一個(gè)地址。例如代碼:

sfr P0 = 0x80;

sfr定義了P0變量,該變量指向0x80地址,該地址為單片機(jī)P0口的地址。

C程序仿真調(diào)試

Keil提供了仿真調(diào)試功能,即使在沒有單片機(jī)硬件的情況下,我們也可以判斷C程序在單片機(jī)內(nèi)是否運(yùn)行正常,并跟蹤和調(diào)試C程序完整的執(zhí)行過程。

設(shè)置仿真

在進(jìn)行仿真調(diào)試之前,需要查看Keil是否已設(shè)置了仿真調(diào)試,展開Project菜單,選擇“Options for Targets”命令,在彈出的對話框中,選擇“Debug”標(biāo)簽頁,確定“Use Simulator”被選中。

圖片

仿真調(diào)試過程

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

圖片

展開“Debug”菜單,選擇“Start/Stop Debug Session”命令,或按下Ctrl+F5鍵,或單擊工具條上的啟動(dòng)調(diào)試圖標(biāo),都可以啟動(dòng)程序的仿真調(diào)試。

程序啟動(dòng)后,執(zhí)行到斷點(diǎn)后暫停運(yùn)行,仿真調(diào)試窗口如下圖所示。

圖片

通過寄存器窗口可以查看程序執(zhí)行過程中寄存器狀態(tài)的變化,關(guān)于單片機(jī)的寄存器,在后面的實(shí)驗(yàn)中會(huì)陸續(xù)講解。匯編指令窗口顯示了程序編譯后的匯編指令,通過該窗口可以查看匯編指令。在代碼窗口可以查看代碼,也可以繼續(xù)執(zhí)行程序,或單步執(zhí)行,或執(zhí)行代碼行,或執(zhí)行到光標(biāo)所在行。

本實(shí)驗(yàn)重點(diǎn)查看仿真單片機(jī)的I/O口狀態(tài),展開“peripherals”菜單,選擇“I/O-Ports”菜單項(xiàng),再彈出的子菜單中選擇“Port 1”項(xiàng)。

圖片

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

圖片

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

圖片

P1口第0位的邏輯狀態(tài)已經(jīng)發(fā)生了變化,其邏輯狀態(tài)為0。

實(shí)驗(yàn)小結(jié)

通過這次實(shí)驗(yàn),掌握了Keil編寫單片機(jī)程序的過程,以及如何仿真調(diào)試單片機(jī)程序。實(shí)際上,在沒有硬件單片機(jī)的情況下,應(yīng)用Keil仿真調(diào)試工具,完全可以監(jiān)控程序在仿真單片機(jī)中的運(yùn)行狀態(tài)。

本次實(shí)驗(yàn)主要完成單片機(jī)I/O口單個(gè)位的控制。下次實(shí)驗(yàn)應(yīng)用EDA仿真工具proteus,設(shè)計(jì)單片機(jī)第一個(gè)應(yīng)用,使用單片機(jī)I/O口控制發(fā)光二極管。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6026

    文章

    44452

    瀏覽量

    630784
  • 嵌入式
    +關(guān)注

    關(guān)注

    5052

    文章

    18908

    瀏覽量

    300702
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135541
  • keil
    +關(guān)注

    關(guān)注

    68

    文章

    1208

    瀏覽量

    166444
  • 開發(fā)環(huán)境
    +關(guān)注

    關(guān)注

    1

    文章

    215

    瀏覽量

    16548
收藏 人收藏

    評論

    相關(guān)推薦

    如何在Linux環(huán)境搭建51單片機(jī)開發(fā)燒寫環(huán)境

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何在Linux環(huán)境搭建51單片機(jī)開發(fā)燒寫環(huán)境。
    發(fā)表于 08-15 17:32 ?2次下載
    如何在Linux<b class='flag-5'>環(huán)境</b>下<b class='flag-5'>搭建</b>51<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>開發(fā)</b>燒寫<b class='flag-5'>環(huán)境</b>

    STM32單片機(jī)如何進(jìn)行開發(fā)環(huán)境搭建

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32單片機(jī)如何進(jìn)行開發(fā)環(huán)境搭建包括了:MDK軟件安裝,USB串口驅(qū)動(dòng)安裝,JLINK驅(qū)動(dòng)安裝。
    發(fā)表于 05-28 08:00 ?1次下載
    STM32<b class='flag-5'>單片機(jī)</b>如何進(jìn)行<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>的<b class='flag-5'>搭建</b>

    C51單片機(jī)學(xué)習(xí)筆記(一)——搭建開發(fā)環(huán)境及燒寫工具

    C51單片機(jī)學(xué)習(xí)筆記(一)——搭建開發(fā)環(huán)境及燒寫工具文章目錄C51單片機(jī)學(xué)習(xí)筆記(一)——搭建
    發(fā)表于 11-12 10:06 ?17次下載
    C51<b class='flag-5'>單片機(jī)</b>學(xué)習(xí)筆記(一)——<b class='flag-5'>搭建</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>及燒寫工具

    VSCode搭建STM32單片機(jī)開發(fā)環(huán)境

    前言由于之前的學(xué)習(xí)過程中使用過了VSCode、Source Insight這類強(qiáng)大的代碼編輯器,感覺實(shí)在是太好用了。但是最近自己要用到Keil進(jìn)行STM32單片機(jī)開發(fā),因?yàn)槭褂眠^了VSCode這類
    發(fā)表于 11-13 11:06 ?15次下載
    VSCode<b class='flag-5'>搭建</b>STM32<b class='flag-5'>單片機(jī)</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>

    mac 搭建單片機(jī)開發(fā)環(huán)境

    mac 搭建單片機(jī)開發(fā)環(huán)境
    發(fā)表于 11-13 11:21 ?1次下載
    mac <b class='flag-5'>搭建</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>

    單片機(jī)優(yōu)雅的開發(fā)Clion環(huán)境搭建

    單片機(jī)優(yōu)雅的開發(fā)Clion環(huán)境搭建
    發(fā)表于 11-13 12:21 ?20次下載
    <b class='flag-5'>單片機(jī)</b>優(yōu)雅的<b class='flag-5'>開發(fā)</b>Clion<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>

    入門51單片機(jī)(一):開發(fā)環(huán)境搭建

    入門51單片機(jī)(一):開發(fā)環(huán)境搭建這里以目前最流行的STC89C52RC為例來介紹51單片機(jī)開發(fā)
    發(fā)表于 11-13 13:36 ?5次下載
    入門51<b class='flag-5'>單片機(jī)</b>(一):<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>的<b class='flag-5'>搭建</b>

    GD32單片機(jī)開發(fā)環(huán)境搭建Keil5安裝)

    GD32單片機(jī)開發(fā)環(huán)境搭建Keil5安裝)
    發(fā)表于 11-13 14:36 ?40次下載
    GD32<b class='flag-5'>單片機(jī)</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>(<b class='flag-5'>Keil</b>5安裝)

    單片機(jī)集成開發(fā)環(huán)境Keil5的使用

    實(shí)驗(yàn)1 單片機(jī)集成開發(fā)環(huán)境Keil5的使用實(shí)驗(yàn)?zāi)康?、學(xué)會(huì)下載、安裝Keil μVision集成開發(fā)
    發(fā)表于 11-13 15:06 ?24次下載
    <b class='flag-5'>單片機(jī)</b>集成<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>Keil</b>5的使用

    "【51單片機(jī)授課筆記】(0)開發(fā)環(huán)境搭建,Keil的下載,安裝與授權(quán),固件燒錄方法(史上最詳細(xì),win10系統(tǒng)

    "【51單片機(jī)授課筆記】(0)開發(fā)環(huán)境搭建,Keil的下載,安裝與授權(quán),固件燒錄方法(史上最詳細(xì),win10系統(tǒng))"
    發(fā)表于 11-13 16:06 ?32次下載
    "【51<b class='flag-5'>單片機(jī)</b>授課筆記】(0)<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>,<b class='flag-5'>Keil</b>的下載,安裝與授權(quán),固件燒錄方法(史上最詳細(xì),win10系統(tǒng)

    GD單片機(jī)Keil環(huán)境搭建

    GD單片機(jī)Keil環(huán)境搭建
    發(fā)表于 11-13 16:21 ?8次下載
    GD<b class='flag-5'>單片機(jī)</b><b class='flag-5'>Keil</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>

    合泰單片機(jī)HT32之keil5開發(fā)環(huán)境搭建(一)

    也有keil5的支持包,也就是說可以從庫函數(shù)進(jìn)行開發(fā),不用從寄存器進(jìn)行開發(fā),但我找了好久,并沒有找到教程,后來實(shí)在沒辦法,打算自己動(dòng)手搭建環(huán)境
    發(fā)表于 11-13 17:06 ?25次下載
    合泰<b class='flag-5'>單片機(jī)</b>HT32之<b class='flag-5'>keil</b>5<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>(一)

    51單片機(jī)-開發(fā)環(huán)境搭建

    51單片機(jī)-開發(fā)環(huán)境搭建
    發(fā)表于 11-14 09:21 ?11次下載
    51<b class='flag-5'>單片機(jī)</b>-<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>的<b class='flag-5'>搭建</b>

    manjaro 開發(fā)51單片機(jī)環(huán)境搭建

    manjaro 開發(fā)51單片機(jī)環(huán)境搭建
    發(fā)表于 11-23 16:36 ?8次下載
    manjaro <b class='flag-5'>開發(fā)</b>51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>

    51單片機(jī)-PASCAL語言開發(fā)環(huán)境搭建

    51單片機(jī)-PASCAL語言開發(fā)環(huán)境搭建
    發(fā)表于 11-23 16:36 ?12次下載
    51<b class='flag-5'>單片機(jī)</b>-PASCAL語言<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>