版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單片機開發(fā)語言及工具的使用第2章單片機開發(fā)人員首要面臨的選擇是采用什么編程語言及工具進行開發(fā)。就開發(fā)語言而言,主要有兩種類型:匯編語言和高級語言。目前,匯編語言由于編程復雜,難以掌握,維護起來非常困難,已經(jīng)很少使用,更多的是采用高級語言來編程。目前,針對單片機開發(fā),使用最廣泛的高級語言就是C語言,使用本書應(yīng)具備C語言編程基礎(chǔ)知識。本章介紹單片機C51語言的使用方法,同時對編程開發(fā)工具軟件Keil和單片機運行仿真軟件Proteus的使用方法進行介紹。引言目錄單片機C51語言與標準C語言的區(qū)別1Keil軟件4C51程序?qū)嵗?本章小結(jié)5Proteus軟件3本章習題6行業(yè)PPT模板/hangye/2.1單片機C51語言與標準C語言的區(qū)別2.1單片機C51語言與標準C語言的區(qū)別單片機C51語言是8051單片機應(yīng)用開發(fā)中最常使用的程序設(shè)計語言,它在標準C語言的基礎(chǔ)上,針對8051內(nèi)核硬件的特點進行了擴展,能直接對8051單片機硬件進行操作,既有高級語言易讀、開發(fā)效率高的優(yōu)點,又有低級語言執(zhí)行效率高的優(yōu)點,已然成為最適合51單片機應(yīng)用開發(fā)的實用高級語言。C51語言在語法規(guī)范、程序結(jié)構(gòu)與設(shè)計方法上都與標準C語言基本相同,但在庫函數(shù)、數(shù)據(jù)類型、變量存儲模式等方面與標準C語言存在一些差別。2.1單片機C51語言與標準C語言的區(qū)別(1)庫函數(shù)有差異。標準C語言的庫函數(shù)是按通用微型計算機來定義的,C51語言的有些庫函數(shù)是按照8051單片機的特點來定義的。C51有豐富的可直接調(diào)用的庫函數(shù),靈活使用庫函數(shù)可使程序代碼簡單、結(jié)構(gòu)清晰,并且易于調(diào)試和維護。每個庫函數(shù)都在相應(yīng)的頭文件中給出了函數(shù)原型聲明,用戶如果需要使用庫函數(shù),就必須在源程序的開始處用預(yù)處理命令“#include”將有關(guān)的頭文件包含進來。(2)數(shù)據(jù)類型有區(qū)別。針對8051單片機的特點,C51語言在標準C語言的基礎(chǔ)上增加了4種數(shù)據(jù)類型,它們是bit、sfr、sfr16和sbit。(3)變量存儲模式不一樣。標準C語言最初是為通用計算機設(shè)計的,在通用計算機中,只有一個程序和數(shù)據(jù)統(tǒng)一尋址的內(nèi)存空間,而C51語言中的變量存儲模式與8051單片機的各種存儲器緊密相關(guān)。(4)數(shù)據(jù)存儲類型不同。8051單片機的存儲區(qū)可分為內(nèi)部數(shù)據(jù)存儲區(qū)、外部數(shù)據(jù)存儲區(qū)和程序存儲區(qū)。(5)標準C語言沒有處理單片機中斷的定義,而C51語言中有專門的中斷函數(shù)。2.1單片機C51語言與標準C語言的區(qū)別任何程序設(shè)計都離不開對于數(shù)據(jù)的處理,一個程序如果沒有數(shù)據(jù),它就無法工作。數(shù)據(jù)在計算機內(nèi)存中的存放情況由數(shù)據(jù)結(jié)構(gòu)決定,C語言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型出現(xiàn)的,數(shù)據(jù)類型可分為基本數(shù)據(jù)類型和復雜數(shù)據(jù)類型,復雜數(shù)據(jù)類型由基本數(shù)據(jù)類型構(gòu)造而成。C語言中的基本數(shù)據(jù)類型有char、int、short、long、float和double。對于C51編譯器,short與int相同,double與float相同。1.char(字符類型)char有signedchar和unsignedchar之分,默認為signedchar。char類型數(shù)據(jù)的長度均為1B,用于存放一個單字節(jié)數(shù)據(jù)。對于signedchar類型數(shù)據(jù),其字節(jié)中的最高位表示該數(shù)據(jù)的符號,“0”表示正數(shù),“1”表示負數(shù)(負數(shù)用補碼表示),所能表示的數(shù)值范圍是?128~127。unsignedchar類型數(shù)據(jù)是無符號字符數(shù)據(jù),其字節(jié)中的所有位均用來表示數(shù)據(jù)的數(shù)值,所能表示的數(shù)值范圍是0~255。2.1單片機C51語言與標準C語言的區(qū)別2.int(整型)int有signedint和unsignedint之分,默認為signedint。int類型數(shù)據(jù)的長度均為2B,用于存放一個雙字節(jié)數(shù)據(jù)。signedint類型數(shù)據(jù)是有符號整數(shù),字節(jié)中的最高位表示數(shù)據(jù)的符號,“0”表示正數(shù),“1”表示負數(shù),所能表示的數(shù)值范圍是?32768~32767。unsignedint類型數(shù)據(jù)是無符號整型,所能表示的數(shù)值范圍是0~65535。3.long(長整型)long有signedlong和unsignedlong之分,默認為signed。long類型數(shù)據(jù)的長度均為4B。signedlong類型數(shù)據(jù)是有符號的長整數(shù),字節(jié)中的最高位表示數(shù)據(jù)的符號,“0”表示正數(shù),“1”表示負數(shù),所能表示的數(shù)值范圍是?2147483648~2147483647。unsignedlong類型數(shù)據(jù)是無符號整數(shù),所示表示的數(shù)值范圍是0~4294967295。4.float(浮點型)float類型數(shù)據(jù)占4B,共32位,包含1位符號位、8位階碼(指數(shù)部分),以及23位尾數(shù)。它是符合IEEE754標準的單精度浮點型數(shù)據(jù),在十進制形式中有7位有效數(shù)字。2.1單片機C51語言與標準C語言的區(qū)別5.*(指針型)指針型數(shù)據(jù)不同于以上4種基本數(shù)據(jù)類型,它本身是一個變量,但在這個變量中存放的不是普通的數(shù)據(jù),而是指向另一個數(shù)據(jù)的地址。指針變量也要占據(jù)一定的內(nèi)存單元,在C51編譯器中,指針變量的長度一般為1~3B。指針變量也具有類型,其表示方法是在指針符號“*”的前面冠以數(shù)據(jù)類型符號。6.bit(位標量)bit是C51編譯器的一種擴充數(shù)據(jù)類型,利用它可定義一個位標量,但不能定義位指針,也不能定義數(shù)組。7.sfr(特殊功能寄存器)sfr也是C51編譯器的一種擴充數(shù)據(jù)類型,利用它可以訪問8051單片機的所有內(nèi)部SFR。sfr類型數(shù)據(jù)占用一個內(nèi)存單元,其取值范圍是0~255。2.1單片機C51語言與標準C語言的區(qū)別8.sfr16(16位特殊功能寄存器)sfr16類型數(shù)據(jù)占用兩個內(nèi)存單元,取值范圍是0~65535。9.sbit(特殊功能寄存器中可尋址位)sbit也是C51編譯器的一種擴充數(shù)據(jù)類型,利用它可以訪問8051單片機內(nèi)部數(shù)據(jù)存儲器RAM的SFR中的可尋址位。2.1單片機C51語言與標準C語言的區(qū)別下表列出了C51編譯器能夠識別的數(shù)據(jù)類型。2.1單片機C51語言與標準C語言的區(qū)別在C語言程序的表達式或變量賦值運算中,有時會出現(xiàn)運算對象的數(shù)據(jù)類型不一致的情況。C語言允許任何標準數(shù)據(jù)類型之間的隱式轉(zhuǎn)換。隱式轉(zhuǎn)換按以下優(yōu)先級別自動進行:bit→char→int→long→floatsigned→unsigned其中,箭頭方向僅表示數(shù)據(jù)類型級別的高低(轉(zhuǎn)換時由低向高進行),而不表示數(shù)據(jù)轉(zhuǎn)換時的順序。變量是一種在程序執(zhí)行過程中不斷變化的量。但是在使用一個變量之前,必須先對該變量進行定義,指出它的數(shù)據(jù)類型和存儲模式,以便編譯系統(tǒng)為它分配相應(yīng)的存儲單元。在C51編譯器中,對變量進行定義的格式如下:[存儲類型]數(shù)據(jù)類型[存儲器類型]變量名表;其中,“存儲類型”和“存儲器類型”是可選項。變量的存儲類型有4種:自動(auto)、外部(extern)、靜態(tài)(static)和寄存器(register)。在定義一個變量時,如果省略存儲類型選項,則該變量將為自動變量。2.1單片機C51語言與標準C語言的區(qū)別在定義一個變量時,除了需要說明其數(shù)據(jù)類型,C51編譯器還允許說明變量的存儲器類型。對于每個變量,C51編譯器可以準確地賦予其存儲器類型,從而可使之能夠在單片機系統(tǒng)內(nèi)準確地定位。下表列出了C51編譯器能夠識別的存儲器類型。2.1單片機C51語言與標準C語言的區(qū)別定義變量時如果省略了“存儲器類型”選項,則按編譯模式Small、Compact或Large所規(guī)定的默認存儲器類型確定變量的存儲區(qū)域。C51編譯器的3種儲存模式(默認的存儲器類型)對變量的影響如下。(1)Small:變量被定義在8051單片機的內(nèi)部RAM中,因此對這種變量的訪問速度最快。另外,所有的對象(包括堆棧)都必須嵌入內(nèi)部數(shù)據(jù)存儲器,而堆棧長度是很重要的,實際的堆棧長度取決于不同函數(shù)的嵌套深度。(2)Compact:所有變量被定義在分頁尋址的片外RAM中,每頁片外RAM的長度為256B。對變量的訪問是通過寄存器間接尋址(MOVX@Ri)進行的,變量的低8位地址由R0或R1確定,變量的高8位地址由P2口確定。采用Compact編譯模式與定義變量時指定pdata存儲器類型具有相同的效果。(3)Large:變量被定義在片RAM中(最大可達64KB),使用數(shù)據(jù)指針來間接訪問變量。這種訪問數(shù)據(jù)的方法的效率最低,尤其在對2個或多個字節(jié)的變量進行操作時,將增加程序的代碼長度。采用Large編譯模式與定義變量時指定xdata存儲器類型具有相同的效果。2.2C51程序?qū)嵗?.2.1應(yīng)用程序框架C51語言是一種結(jié)構(gòu)化程序設(shè)計語言,其程序?qū)懛ㄅc標準C語言類似,程序主體由若干函數(shù)(Function)組成,其主體內(nèi)容須以大括號{}來包含。對于一個完整的程序,無論它有幾個函數(shù),其中必定有一個名為main()的函數(shù),程序總是從它開始執(zhí)行的。在單片機的開發(fā)中,開發(fā)人員必須認真考慮應(yīng)用程序架構(gòu),應(yīng)盡可能地采用結(jié)構(gòu)化的程序設(shè)計方法,這樣可使整個應(yīng)用系統(tǒng)程序結(jié)構(gòu)清晰,易于調(diào)試和維護。程序架構(gòu)對于系統(tǒng)整體的穩(wěn)定性和可靠性是非常重要的,合適的程序架構(gòu)便于開發(fā)。常用的應(yīng)用程序架構(gòu)有3種,即順序執(zhí)行法、時間片輪詢法和操作系統(tǒng)。(1)順序執(zhí)行法比較簡單,通常在對實時性和并行性要求不太高的情況下使用,程序按從上往下的執(zhí)行順序來編寫即可,不需要考慮具體架構(gòu),其代碼結(jié)構(gòu)如下:2.2.1應(yīng)用程序框架2.2.1應(yīng)用程序框架(2)時間片輪詢法介于順序執(zhí)行法和操作系統(tǒng)之間,通常與操作系統(tǒng)一起出現(xiàn),即多數(shù)時候在操作系統(tǒng)中應(yīng)用此方法,本書在第5章中將具體介紹和使用此法。時間片輪詢法主要是利用定時器來實現(xiàn)的,定時器可以多處復用,用來實現(xiàn)不同的定時。定時器產(chǎn)生一個特定的定時周期,給每個需要執(zhí)行的任務(wù)設(shè)置好執(zhí)行周期,然后定時器按周期進行計時,一旦到了不同的執(zhí)行周期,就執(zhí)行相應(yīng)的任務(wù)。(3)單片機中采用的操作系統(tǒng)是嵌入式操作系統(tǒng),負責嵌入式系統(tǒng)的全部軟/硬件資源的分配、任務(wù)調(diào)度,控制、協(xié)調(diào)并發(fā)活動,主要分為全能操作系統(tǒng)(RichOS)和實時操作系統(tǒng)(Real-TimeOperatingSystem,RTOS)兩類。RichOS是運行功能非常齊全的操作系統(tǒng),RTOS是運行功能緊湊、具有很強的實時性的操作系統(tǒng)。RTOS的有效使用可以極大地提高系統(tǒng)性能,并簡化開發(fā)難度,減少開發(fā)人員的工作量,從根本上清除編程的障礙。對于8051單片機,因為其內(nèi)部資源較少,而RTOS會占用較多資源,所以不適合采用。通常情況下,8051單片機多采用順序執(zhí)行法和時間片輪詢法兩種程序架構(gòu)。2.2.2一個簡單的單片機程序接下來看一個利用8051單片機控制單個LED閃爍的程序。程序按照項目開發(fā)的格式規(guī)范來編寫,在程序的開頭做好程序名稱、程序功能、入口參數(shù)及返回值等的說明,在程序體中對關(guān)鍵的語句添加注釋說明。這是一個標準的格式規(guī)范,使用和維護起來都比較方便,建議程序都參照本格式來編寫。2.2.2一個簡單的單片機程序2.2.2一個簡單的單片機程序該程序采用的是順序執(zhí)行法的程序架構(gòu),實現(xiàn)了單片機對單個LED閃爍的控制。2.3Proteus軟件Proteus是英國LabCenterElectronics公司開發(fā)的EDA軟件。它運行于Windows操作系統(tǒng)上,能夠?qū)崿F(xiàn)從原理圖設(shè)計、電路仿真到PCB設(shè)計的一站式作業(yè),真正實現(xiàn)了電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件的三合一。Proteus的軟件仿真相比于其他軟件最大的優(yōu)勢在于它能仿真大量的單片機芯片(如MCS-51系列、PIC系列等),以及單片機外圍電路(如鍵盤、LED、LCD等)。它主要由ISIS和ARES兩部分構(gòu)成。?ISIS——智能原理圖輸入系統(tǒng),系統(tǒng)設(shè)計與仿真的基本平臺。?ARES——高級PCB布線編輯軟件。引言2.3.1Proteus8軟件界面及功能1.Proteus8軟件界面雙擊桌面上的Proteus8Professional圖標或選擇屏幕左下方的“開始”→“所有程序”→“Proteus8Professional”→“Proteus8Professional”選項,進入Proteus工作主頁面,如圖2-1所示。圖2-1Proteus工作主頁面2.3.1Proteus8軟件界面及功能進入Proteus工作主頁面后,單擊“開始設(shè)計”面板中的“打開示例工程”按鈕,打開一個示例工程,如圖2-2所示。圖2-2打開示例工程2.3.1Proteus8軟件界面及功能進入ProteusISIS工作界面,如圖2-3所示。ProteusISIS工作界面是一種標準的Windows界面,包括標題欄、菜單欄、標準工具欄、繪圖工具欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進程控制按鈕、預(yù)覽窗口、對象選擇窗口、狀態(tài)欄、圖形編輯窗口。圖2-3ProteusISIS工作界面2.3.1Proteus8軟件界面及功能2.Proteus軟件功能簡介Proteus軟件功能強大,融合了Multisim、Protel的功能,能夠?qū)崿F(xiàn)從原理布圖、代碼調(diào)試到單片機與外圍電路混合協(xié)同仿真和PCB設(shè)計的整個設(shè)計過程,能夠完成模擬電子、數(shù)字電子、單片機及嵌入式的虛擬仿真。它的主要功能特點如下。(1)智能原理布圖。(2)基于SPICE模型實現(xiàn)數(shù)字/模擬電路的混合仿真。(3)支持各種主流單片機仿真,如8051、8086、MSP430、AVR、PIC、ARM。(4)支持通用外設(shè)模型,如字符LCD模塊、圖形LCD模塊、LED點陣、LED七段顯示模塊、鍵盤/按鍵、直流/步進/伺服電機、RS-232虛擬終端、電子溫度計等,其COMPIM(COM口物理接口模型)還可以使仿真電路通過計算機串口與外部電路實現(xiàn)雙向異步串行通信。2.3.1Proteus8軟件界面及功能2.Proteus軟件功能簡介Proteus軟件功能強大,融合了Multisim、Protel的功能,能夠?qū)崿F(xiàn)從原理布圖、代碼調(diào)試到單片機與外圍電路混合協(xié)同仿真和PCB設(shè)計的整個設(shè)計過程,能夠完成模擬電子、數(shù)字電子、單片機及嵌入式的虛擬仿真。它的主要功能特點如下。(5)支持UART/USART/EUSARTs仿真、中斷仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。(6)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil、MPLAB(PIC系列單片機的C語言開發(fā)軟件)等。(7)擁有豐富的虛擬儀器,操作面板逼真,如示波器、邏輯分析儀、信號發(fā)生器、直流電壓/電流表、交流電壓/電流表、數(shù)字圖案發(fā)生器、頻率計/計數(shù)器、邏輯探頭、虛擬終端、SPI調(diào)試器、I2C調(diào)試器等,能對電路原理圖的關(guān)鍵點進行虛擬測試2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件單擊“新建”圖標或在“開始設(shè)計”面板中單擊“新建工程”按鈕,彈出“新建工程向?qū)?開始”對話框,如圖2-4所示。圖2-4“新建工程向?qū)?開始”對話框2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件在圖2-4中選擇合適的保存路徑與名稱(注意擴展名是否為.pdsprj),單擊“下一步”按鈕,進入原理圖創(chuàng)建對話框,如圖2-5所示。圖2-5原理圖創(chuàng)建對話框2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件在圖2-5中選擇合適的原理圖設(shè)計模板(通常選擇“DEFAULT”模板),單擊“下一步”按鈕,進入PCB布版設(shè)計創(chuàng)建對話框,如圖2-6所示。圖2-6PCB布版設(shè)計創(chuàng)建對話框2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件在圖2-6中選擇合適的PCB設(shè)計模板,如果只繪制原理圖并仿真,就可以選擇“不創(chuàng)建PCB布板設(shè)計”單選按鈕(默認設(shè)置)。單擊“下一步”按鈕,進入固件創(chuàng)建對話框,如圖2-7所示。圖2-7固件創(chuàng)建對話框2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件在圖2-7中,若選擇“創(chuàng)建固件項目”單選按鈕,則可用ProteusVSMStudio來編寫程序代碼。本書選擇用Keil軟件來編寫程序代碼,故此處選擇“設(shè)有固件項目”單選按鈕。單擊“下一步”按鈕,進入工程創(chuàng)建總結(jié)對話框,如圖2-8所示。圖2-8工程創(chuàng)建總結(jié)對話框2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件在工程創(chuàng)建總結(jié)對話框中可以看到之前設(shè)置的詳細信息,確認無誤后單擊“完成”按鈕即可創(chuàng)建工程,進入新建的ISIS工作界面,如圖2-9所示。圖2-9新建的ISIS工作界面2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖工程創(chuàng)建后,開始繪制單片機最小系統(tǒng)仿真圖,如圖2-10所示。該電路包含單片機AT89C52,由晶振X1和電容C1、C2構(gòu)成的單片機時鐘電路,以及由電阻R1、電容C3和按鍵開關(guān)S1構(gòu)成的復位電路。圖2-10單片機最小系統(tǒng)仿真圖2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(1)將需要用到的元器件加載到對象選擇窗口中。單擊對象選擇按鈕后,彈出“PickDevices”對話框,在“Category”列表框中找到“MircoprocessorIcs”選項,單擊它,在對話框的右側(cè)可以看到大量常見的各種型號的單片機。例如,要尋找單片機AT89C52,可以使用鼠標滾動查找,找到后,雙擊它。這樣,在左側(cè)的對象選擇窗口中就有AT89C52了。如果知道元器件的名稱或型號,則可以在“Keywords”文本框中輸入AT89C52,系統(tǒng)在對象庫中進行搜索,并將搜索結(jié)果顯示在“Showinglocalresults”列表框中,如圖2-11所示。在“Showinglocalresults”列表框中,雙擊“AT89C52”一欄即可將AT89C52加載到對象選擇窗口內(nèi)。2.3.2單片機最小系統(tǒng)仿真圖的繪制圖2-11加載AT89C522.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(1)將需要用到的元器件加載到對象選擇窗口中。同樣,在“Keywords”文本框中輸入“CRYSTAL”,在“Showinglocalresults”“列表框中雙擊“CRYSTAL”一欄即將晶振加載到對象選擇窗口內(nèi),如圖2-12所示。經(jīng)過前面的操作,已經(jīng)將AT89C52、晶振加載到了對象選擇窗口內(nèi),現(xiàn)在還缺少CAP(電容)、CAPPOL(極性電容)、RES(電阻)、BUTTON(輕觸開關(guān)),接下來只要依次在“Keywords”文本框中輸入“CAP”、“CAPPOL”、“RES”和“BUTTON”,并在“Showinglocalresults”列表框中把需要用到的元器件加載到對象選擇窗口內(nèi)即可。在對象選擇器窗口內(nèi),單擊“AT89C52”對象,可以在預(yù)覽窗口中看到AT89C52的實物圖,且繪圖工具欄中的元器件按鈕處于選中狀態(tài)。同樣,單擊“CRYSTAL”和“BUTTON”對象,也能看到對應(yīng)的實物圖,相應(yīng)的按鈕也處于選中狀態(tài),如圖2-13所示。2.3.2單片機最小系統(tǒng)仿真圖的繪制圖2-12加載晶振2.3.2單片機最小系統(tǒng)仿真圖的繪制圖2-13在預(yù)覽窗口中可以看到實物圖2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(2)將元器件放置到圖形編輯窗口中。在對象選擇窗口內(nèi),選中“AT89C52”對象,如果元器件的方向不符合要求,則可使用預(yù)覽對象方向控制按鈕進行操作。例如,用按鈕對元器件進行順時針旋轉(zhuǎn),用按鈕對元器件進行逆時針旋轉(zhuǎn),用按鈕對元器件進行左右反轉(zhuǎn),用按鈕對元器件進行上下反轉(zhuǎn)。元器件的方向符合要求后,將鼠標指針置于圖形編輯窗口中元器件需要放置的位置,單擊此位置,出現(xiàn)紫紅色的元器件輪廓符號(此時還可對元器件的放置位置進行調(diào)整)。再次單擊,元器件被完全放置(放置元器件后,如果還需要調(diào)整其方向,則可單擊需要調(diào)整的元器件,并單擊鼠標右鍵,利用右鍵菜單進行調(diào)整)。同理,將晶振、電容、電阻、輕觸開關(guān)放置到圖形編輯窗口中,如圖2-14所示2.3.2單片機最小系統(tǒng)仿真圖的繪制圖2-14放置元器件后的圖形編輯窗口2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(2)將元器件放置到圖形編輯窗口中。在圖2-14中,元器件已編號,參數(shù)也已修改。修改的方法是:在圖形編輯窗口中,雙擊元器件,在彈出的“編輯元件”對話框中進行修改?,F(xiàn)在以電阻為例進行說明,如圖2-15所示。把“元件位號”文本框中的值改為R1,把“Resistance”文本框中的值改為10k。修改好后單擊“確定”按鈕,這時編輯窗口就有了一個編號為R1,阻值為10kΩ的電阻。只需重復以上步驟就可編輯其他元器的參數(shù)。圖2-15修改元件參數(shù)2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(3)元器件與元器件的電氣連接。Proteus具有自動連線路功能(WireAutoRouter),當將鼠標指針移動至連接點時,鼠標指針處出現(xiàn)一個紅色框,如圖2-16所示。此時單擊,移動鼠標指針至晶振的其中一個引腳,出現(xiàn)紅色框時再次單擊,完成連線,如圖2-16所示。同理,可以完成其他連線。圖2-16電氣連接2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(4)放置電源端子和接地端子。單擊繪圖工具欄中的按鈕,使之處于選中狀態(tài)。選中“POWER”對象,放置一個電源端子;選中“GROUND”對象,放置一個接地端子。放置好后完成連線,如圖2-10所示。至此,單片機最小系統(tǒng)仿真圖便繪制完成,接下來就需要編寫程序并下載到單片機中驗證電路的功能是否正常了。2.4
Keil軟件要使用匯編語言或C語言,需要使用編譯器,以便把寫好的程序編譯為機器碼,只有這樣才能把HEX可執(zhí)行文件寫入單片機。Keil是眾多單片機應(yīng)用開發(fā)軟件中最優(yōu)秀的軟件之一,針對不同類型單片機(MCU),Keil推出了四大IDE:KeilMDK-Arm、KeilC51、KeilC251和KeilC166。其中,KeilC51針對的是51系列單片機,它支持眾多不同公司的MCS-51架構(gòu)的芯片,集編輯、編譯、仿真等于一體,界面友好,易學易用,在調(diào)試程序、軟件仿真方面也有很強大的功能;KeilMDK-Arm是針對Cortex和Arm設(shè)備的開發(fā)環(huán)境,用來開發(fā)ARM和STM32系列單片機,如果再安裝KeilC51,就可以用來開發(fā)8051單片機了。具體安裝過程可參考官網(wǎng)上的資料。引言2.4.1Keil軟件界面及功能雙擊桌面上的KeiluVision5圖標或選擇屏幕左下方的“開始”→“所有程序”→“KeiluVision5”選項,進入Keil工作界面,如圖2-17所示。圖2-17Keil工作界面2.4.1Keil軟件界面及功能Keil工作界面也是一種標準的Windows界面,主要包括菜單欄、工具欄、工程窗口、編輯窗口、消息窗口和狀態(tài)欄。Keil工作界面在編輯狀態(tài)與調(diào)試狀態(tài)下存在一定的差異,主要體現(xiàn)在工具欄上。在編輯狀態(tài)下,工具欄包含文件工具欄(FileToolbar)和編譯工具欄(BuildToolbar);在調(diào)試狀態(tài)下,工具欄包含文件工具欄(FileToolbar)和調(diào)試工具欄(DebugToolbar)。KeilC51的主要功能特點如下。? 行業(yè)標準的KeilC編譯器、宏匯編器、調(diào)試器和實時內(nèi)核支持所有的8051衍生產(chǎn)品。? μVision5IDE集成開發(fā)環(huán)境、調(diào)試器和仿真環(huán)境。? 提供豐富的庫函數(shù)。? μVision調(diào)試器可精確模擬8051的片上外設(shè),包括I2C、CAN、UART、SPI、中斷、I/O口、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器和PWM模塊。2.4.2單個LED控制程序設(shè)計本節(jié)以控制單個LED閃爍為例來演示如何通過Keil新建工程、添加源程序文件、編譯等。1.新建工程先建立一個空文件夾,把工程文件放到里面,以避免與其他文件混合。如圖2-18所示,這里新建了一個名為Project的文件夾。圖2-18新建Project文件夾2.4.2單個LED控制程序設(shè)計1.新建工程啟動KeiluVision5,出現(xiàn)啟動畫面,如圖2-19所示。圖2-19啟動界面2.4.2單個LED控制程序設(shè)計1.新建工程進入Keil工作界面后,選擇“project”→“NewuVisionProject…”選項,新建一個工程,如圖2-20所示。圖2-20新建工程2.4.2單個LED控制程序設(shè)計1.新建工程在彈出的對話框中,將工程放在剛才建立的Project文件夾下,給這個工程命名后保存,不需要填后綴名,默認的工程后綴合為.uvporj,如圖2-21所示。圖2-21保存工程2.4.2單個LED控制程序設(shè)計1.新建工程單擊“保存”按鈕后會彈出另一個對話框,在CPU類型列表框中找到并選中Atmel下的AT89C51或AT89C52,如圖2-22所示。圖2-22選擇芯片2.4.2單個LED控制程序設(shè)計1.新建工程單擊“OK”按鈕,彈出一個提示框,如圖2-23所示,詢問是否復制8051啟動代碼并添加到工程中,單擊“否”按鈕,新工程建立。圖2-23詢問是否復制8051啟動代碼并添加到工程中2.4.2單個LED控制程序設(shè)計2.建立并添加源程序文本選擇“File”→“New”選項,新建一個源程序文本,在編輯窗口寫入程序,如圖2-24所示。圖2-24編輯源程序2.4.2單個LED控制程序設(shè)計2.建立并添加源程序文本編寫完源程序后,保存源程序文件,保存路徑默認為前面創(chuàng)建好的工程路徑,如圖2-25所示。輸入文件名,這里示例輸入“LED_blink.c”。注意:如果用匯編語言,那么后綴名一定是.asm;如果用C語言,則后綴名是.c。單擊“保存”按鈕。圖2-25保存源程序文件2.4.2單個LED控制程序設(shè)計2.建立并添加源程序文本保存好的源程序文件需要導入工程,右擊工程窗口中的“SourceGroup1”文件夾,在右鍵菜單中選擇“AddExistingFilestoGroup‘SourceGroup1’…”選項,在添加文件對話框中選擇剛剛保存的源程序文件,如圖2-26所示。此時可以看到程序文本字體顏色已發(fā)生了變化。圖2-26添加源程序文件2.4.2單個LED控制程序設(shè)計3.設(shè)置工程屬性接下來要做一些必要的設(shè)置。按圖2-27設(shè)置晶振頻率,建議初學者將晶振頻率修改成12MHz,因為12MHz方便計算指令時間。圖2-27設(shè)置晶振頻率2.4.2單個LED控制程序設(shè)計3.設(shè)置工程屬性在“Output”選項卡下選中“CreateHEXFile”復選框,使編譯器輸出單片機需要的HEX文件,如圖2-28所示。其他項目可以保持默認設(shè)置,生成的二進制程序文件默認保存在工程文件所在的文件夾中,擴展名為.hex。圖2-28輸出HEX文件2.4.2單個LED控制程序設(shè)計4.編譯源代碼單擊“編譯”按鈕,如果程序沒有錯誤,就可生成單片機可執(zhí)行的HEX文件,如圖2-29所示。編譯生成的HEX文件可以放到Proteus軟件的單片機中模擬運行,也可以燒寫到實際的單片機中運行。圖2-29編譯生成HEX文件2.4.3Keil軟件的調(diào)試1.進入調(diào)試狀態(tài)選擇“Debug”→“Start”→“StopDebugSession”選項,或者按Ctrl+F5快捷鍵,或者單擊圖標均可進入調(diào)試狀態(tài),如圖2-30所示。圖2-30進入調(diào)試狀態(tài)進入調(diào)試狀態(tài)后,編譯工具欄自動變成調(diào)試工具欄,代碼窗口中的黃色三角形代表下一步要執(zhí)行的行,藍色三角形代表光標所在行。剛進入調(diào)試狀態(tài),黃色三角形會停留在main()函數(shù)頭部,即main()函數(shù)的第一條執(zhí)行語句。2.4.3Keil軟件的調(diào)試2.常用調(diào)試命令調(diào)試工具欄的前幾個按鈕最常用,下面對其做簡單介紹。(1):“復位”(Reset)按鈕,對程序進行復位操作。(2):“全速運行”(Run)按鈕(快捷鍵F5),使當前程序開始正常全速運行,直到程序遇到斷點時停止。(3):“停止”(Stop)按鈕,當程序全速運行時,單擊此按鈕可停止程序的運行。(4):“單步調(diào)試”(Step)按鈕(快捷鍵F11),根據(jù)當前調(diào)試的窗口的語言,執(zhí)行單條語句或指令。如果遇到函數(shù),則會進入函數(shù)內(nèi)部。如果在反匯編窗口中,則只執(zhí)行一條匯編指令。2.4.3Keil軟件的調(diào)試2.常用調(diào)試命令(5):“單步跳過調(diào)試”(StepOver)按鈕(快捷鍵F10),也是指按單條語句執(zhí)行。與單步調(diào)試不同的是,它在遇到函數(shù)時不進入函數(shù)內(nèi)部,而是直接全速運行函數(shù),并跳到下一條語句處。(6):“從函數(shù)返回調(diào)試”(StepOut)按鈕(快捷鍵Ctrl+F11),直接全速運行當前函數(shù)后面的所有內(nèi)容,直到函數(shù)返回上一級。(7):“運行至光標所在行”(RuntoCursorLine)按鈕,程序執(zhí)行到當前光標所在行。(8):“插入/移除斷點”(Insert/RemoveBreakpoint)按鈕(快捷鍵F9)。如果當前光標所在行沒有斷點,則插入斷點(前提是當前行可以插入斷點,如果無法插入斷點,則會顯示一個感嘆號),在有斷點的情況下移除斷點。插入斷點后,當前行前面會有個紅色圓點,表示斷點位置。斷點配合單步調(diào)試可以快速定位問題。2.4.3Keil軟件的調(diào)試3.監(jiān)視寄存器、變量及端口的狀態(tài)單步執(zhí)行語句的目的是跟蹤各個變量、寄存器及端口的狀態(tài)變化信息,以便找出程序編寫中存在的邏輯錯誤。查看這些信息常用的4種方法如下。(1)在單步執(zhí)行語句的過程中,鼠標指針指向代碼中的相關(guān)變量后會提示其當前值。(2)在左側(cè)的“Register”(寄存器狀態(tài))窗口中,可以看到部分SFR的值,如果某個值剛剛被修改過,則會高亮顯示。(3)Watch窗口可以實時查看變量值,通過選擇“View”→“WatchWindows”→“Watch1”或“Watch2”可以打開Watch窗口,也可單擊工具
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海財經(jīng)大學《馬克思主義文論》2023-2024學年第一學期期末試卷
- 地槽回填施工方案模板
- 山西警察學院《作物栽培學(Ⅱ)》2023-2024學年第一學期期末試卷
- 2025年蓄水池施工與污水處理一體化服務(wù)合同2篇
- 2025年茶樓租賃合同能源管理專項條款3篇
- 山東省金鄉(xiāng)縣重點達標名校2025屆中考生物押題試卷含解析
- 【8生(RJ)期末】蚌埠市2024-2025學年八年級上學期期末考試生物試題
- 二零二五年汽車零部件樣機定制與質(zhì)量檢驗合同3篇
- 2025年度體育賽事專用場地租賃合同范本4篇
- 二零二五年度4S店汽車銷售市場調(diào)研合同范本3篇
- 2025年湖北武漢工程大學招聘6人歷年高頻重點提升(共500題)附帶答案詳解
- 【數(shù) 學】2024-2025學年北師大版數(shù)學七年級上冊期末能力提升卷
- GB/T 26846-2024電動自行車用電動機和控制器的引出線及接插件
- 遼寧省沈陽市皇姑區(qū)2024-2025學年九年級上學期期末考試語文試題(含答案)
- 2024年國家工作人員學法用法考試題庫及參考答案
- 妊娠咳嗽的臨床特征
- 國家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 2024年金融理財-擔保公司考試近5年真題附答案
- 泰山產(chǎn)業(yè)領(lǐng)軍人才申報書
- 高中語文古代文學課件:先秦文學
評論
0/150
提交評論