《單片機原理及應(yīng)用》第3章:基于KEIL軟件的設(shè)計入門_第1頁
《單片機原理及應(yīng)用》第3章:基于KEIL軟件的設(shè)計入門_第2頁
《單片機原理及應(yīng)用》第3章:基于KEIL軟件的設(shè)計入門_第3頁
《單片機原理及應(yīng)用》第3章:基于KEIL軟件的設(shè)計入門_第4頁
《單片機原理及應(yīng)用》第3章:基于KEIL軟件的設(shè)計入門_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第3章基于KEIL軟件的設(shè)計入門本章內(nèi)容3.1KEIL軟件的使用3.1.1KeiluVision4工程文件的建立3.1.2KeiluVision4工程的詳細(xì)設(shè)置3.1.3工程編譯、連接3.1.4調(diào)試方法3.2ISP在線燒錄3.3實例程序解析3.3.1reg52.h及其他頭文件3.3.2C語言中注釋的寫法3.3.3main()主函數(shù)的寫法3.1KEIL軟件的使用3.1.1KeiluVision4工程文件的建立1、建立工程文件在項目開發(fā)中,并不是僅有一個源程序就行了,為了管理和使用方法,有了Keil使用工程(Project)這一概念,下面介紹如何新建工程。第1步,選擇Project下的NewuVision4Project菜單,出現(xiàn)一個對話框。選擇放置工程的路徑,然后給工程取個名稱,例如1,不需要擴展名,點擊保存。第2步,選擇你正在使用的芯片,先是廠家,然后是型號假設(shè)使用AT89S52時選擇Atmel→AT89S52,選好芯片后點擊確定按鈕。3、使用菜單File/New或者點擊工具樣的新建文件按鈕,即可在項目窗的右側(cè)打開一個新的文本編緝窗口,在該窗口中輸入源程序:4、保存該文件,注意必須加上展名(匯編語言源程用.ASM或A51為擴展名,如果是C語言用.c),這里假定將文件保存為流水燈.c。需要說明的是,源文件就是一般的文本文件,可以使用任意文本編輯。5、窗口左測出現(xiàn)如下所示工程目錄。新建工程至此完成。此時的工程是一個空的工程,里面什么文件也沒有,需要手動把剛才編寫好的源程序加入,點擊SourceGroup1后鼠標(biāo)右鍵,出現(xiàn)一個下拉菜單,如下圖所示,選中AddFilestoGroup‘SourceGroup1’,出現(xiàn)一個對話框,要求尋找源文件。找到剛在保存的流水燈.c雙擊將文件加入項目。點擊SourceGroup1前的加號,會發(fā)現(xiàn)流水燈.c文件已在其中。雙擊文件名,即可打開該源程序。3.1.2KeiluVision4工程的詳細(xì)設(shè)置Target1右擊選擇OptionsforTarget'target1'或者使用菜單Project/Optionfortarget'target1'即出現(xiàn)對工程設(shè)置的對話框。這個對話框可謂非常復(fù)雜,共有8個頁面,要全部搞清可不容易,好在絕大部份設(shè)置項取默認(rèn)值就行了1.Target選項卡Xtal后面的數(shù)值是晶振頻率值,默認(rèn)值是所選目標(biāo)CPU的最高可用頻率值,對于我們所選的AT89S52而言是24M,該值與最終產(chǎn)生的目標(biāo)代碼無關(guān)MemoryModel用于設(shè)置RAM使用情況,Small是所有變量都在單片機的內(nèi)部RAM中;Compact是可以使用一頁外部擴展RAM;Larget則是可以使用全部外部的擴展RAM。CodeModel用于設(shè)置ROM空間的使用,Small模式,只用低于2K的程序空間;Compact模式,單個函數(shù)的代碼量不能超過2K,整個程序可以使用64K程序空間;Larget模式,可用全部64K空間。Useon-chipROM選擇項,確認(rèn)是否僅使用片內(nèi)ROM2.OutPut選項卡CreatHexfile用于生成可執(zhí)行代碼文件(可以用編程器寫入單片機芯片的HEX格式文件,文件的擴展名為.HEX),默認(rèn)情況下該項未被選中,如果要寫片做硬件實驗,就必須選中該項,這一點是初學(xué)者易疏忽的。3.Listing選項卡在匯編或編譯完成后將產(chǎn)生(*.lst)的列表文件,在連接完成后也將產(chǎn)生(*.m51)的列表文件,該頁用于對列表文件的內(nèi)容和形式進(jìn)行細(xì)致的調(diào)節(jié),其中比較常用的選項是CCompileListing下的AssambleCode項,選中該項可以在列表文件中生成C語言源程序所對應(yīng)的匯編代碼。4.C51選項卡用于對Keil的C51編譯器的編譯過程進(jìn)行控制,CodeOptimization組,該組中Level是優(yōu)化等級,C51在對源程序進(jìn)行編譯時,可以對代碼多至9級優(yōu)化,默認(rèn)使用第8級,一般不必修改,如果在編譯中出現(xiàn)一些問題,可以降低優(yōu)化級別試一試。3.1.3工程編譯、連接在設(shè)置好工程后,即可進(jìn)行編譯、連接。Project/Buildtarget,先對該文件進(jìn)行編譯,然后再連接以產(chǎn)生目標(biāo)代碼;從左到右分別是:編譯、編譯連接、全部重建、停止編譯和對工程進(jìn)行設(shè)置。選擇圖標(biāo)或Debug/Start/StopDebugSessio

或Ctrl+F5,開始進(jìn)行軟件調(diào)試。編譯過程中的信息將出現(xiàn)在輸出窗口中的Build頁中,如果源程序中有語法錯誤,會有錯誤報告出現(xiàn),雙擊該行,可以定位到出錯的位置,對源程序反復(fù)修改之后,最終會得到如下圖所示的結(jié)果,提示獲得了名為Text1.hex的文件,該文件即可被編程器讀入并寫到芯片中,同時還產(chǎn)生了一些其它相關(guān)的文件,可被用于Keil的仿真與調(diào)試,這時可以進(jìn)入下一步調(diào)試的工作。3.1.4調(diào)試方法選擇菜單Debug->Start/StopDebugSession進(jìn)入軟件調(diào)試環(huán)境,顯示界面會有明顯的變化,并且多出寄存器監(jiān)視窗口、內(nèi)存監(jiān)視窗口、變量監(jiān)視窗口等,并彈出調(diào)試工具條,我們再次將它列出來,如圖3.16所示。1.寄存器窗口點擊View菜單,打開寄存器監(jiān)視窗口Registerswindow,用于監(jiān)視寄存器R0~R7的變化,并提供監(jiān)視SP堆棧指針、PC程序計數(shù)器指針、PSW程序狀態(tài)字的變化。2.觀察窗口

點擊快捷按鈕,彈出觀察窗口,它主要用于監(jiān)視變量值的變化,

3.反匯編窗口點擊

快捷按鈕,彈出反匯編窗口,它主要顯示的是C語言代碼被編譯過后的匯編代碼,如圖所示4.外圍設(shè)備窗口點擊菜單【Periherals】,選擇相應(yīng)的選項將會彈出以下的窗口,如圖3.20~圖3.23所示。硬件調(diào)試方法(1)硬件電路如果有發(fā)二極管的話,可以在代碼中加入點亮發(fā)光二極管,用于驗證代碼是否執(zhí)行到此處。比如,調(diào)用某個函數(shù)時,是否調(diào)用成功,可以在進(jìn)入函數(shù)的開頭,加入點亮發(fā)光二極管。(2)電路如果有數(shù)碼管的話,可以在代碼中加入數(shù)碼管顯示0—9,用于驗證,某一變量的輸出值,是否和預(yù)期的一樣。(3)添加斷點:如果用匯編語言的話,可以在程序中,匯編語言加入SJMP$,程序運行的此處就停止了,用于驗證某一段代碼是否和預(yù)期的一樣。3.2ISP在線燒錄第一步:芯片型號的選擇。單片機背面有型號的標(biāo)注,選擇相對應(yīng)的型號第二步:COM選擇,版本不一的STC-IS不能夠自己掃描COM的,請打開電腦設(shè)備管理器--端口號進(jìn)行查看,選擇相對應(yīng)的COM口。第三步:打開您所需要的下載到單片機的hex文件第四步:點擊下載。會出現(xiàn)如下圖提示:正在檢測單片機,然后板子重新打開電源上電,重新上電后會出現(xiàn)如下提示等待握手之后,會出現(xiàn)操作成功的提示,如下圖。這個時候說明hex文件已經(jīng)下載到單片機中,正在運行了。3.3實例程序解析reg52.h及其他頭文件從上面代碼可以看出,該頭文件定義了52單片機內(nèi)部所有的功能寄存器,用到了sfr和sbit兩個關(guān)鍵字,C51通常還有reg51.h、math.h、intrins.h、absacc.h、stdio.h、stdlib.h、ctype.h等頭文件。其中reg51.h和reg52.h頭文件一樣,都是定義特殊功能寄存器和位寄存器的,它們中大部分內(nèi)容是一樣的,52單片機比51單片機多一個定時器T2,因此,reg52.h中就比reg51.h中多了幾行定義T2寄存器的內(nèi)容。math.h是定義數(shù)學(xué)運算的,求方根、正余弦、絕對值等,該頭文件中包含各種數(shù)學(xué)運算函數(shù),當(dāng)我們需要使用時可以直接調(diào)用它的內(nèi)部函數(shù)。intrins.h是固有函數(shù)。absacc.h訪問特殊功能寄存器的。stdio.h動態(tài)內(nèi)存分配函數(shù)。stdlib.h標(biāo)準(zhǔn)庫文件函數(shù)。3.3.2C語言中注釋的寫法在C語言中,注釋有兩種寫法:(1)//......,兩個斜杠后面跟著的為注釋語句。這種寫法只能注釋一行,當(dāng)換行時,又必須在新行上重新寫兩個斜扛。(2)/*...*/,斜扛與星號結(jié)合使用,這種寫法可以注釋任意行,即斜扛星號與星號斜扛之間的所有文字都作為注釋。如:#defineucharunsignedchar//定義無符號字符#defineuintunsignedint//定義無符號整數(shù)uinti;//定義一個無符號整型變量uchartemp;//定義無符號字符型變量3.3.3main()主函數(shù)的寫法格式:voidmain()注意:后面沒有分號。特點:無返回值,無參數(shù)。任何一個單片機C程序有且僅有一個main函數(shù),它是整個程序開始執(zhí)行的入口。即在一個函數(shù)中,所有的代碼都寫在這個函數(shù)的兩個大括號內(nèi),每條語句結(jié)束后

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論