版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——基于proteus單片機試驗講義2023
單片機試驗講義
第一章:集成開發(fā)環(huán)境的使用
1.1軟件仿真
這是一種完全的依靠軟件手段進行開發(fā)的系統(tǒng),該系統(tǒng)由計算機加模擬開發(fā)軟件構(gòu)成。模擬開發(fā)系統(tǒng)的工作原理就是利用模擬開發(fā)軟件在計算機上實現(xiàn)對單片機的硬件模擬、指令模擬、運行狀態(tài)模擬,從而完成應(yīng)用軟件開發(fā)全過程,其間不需要任何在線的仿真器和用戶機。軟件的模擬調(diào)試功能很強,基本上包括了在線仿真器的單步、跟蹤、檢查和修改功能,并且還能模擬產(chǎn)生各種中斷和I/O應(yīng)答過程。因此,用戶只需要配備模擬/調(diào)試軟件,就可以使IBM-PC微機成為一臺通用的模擬開發(fā)系統(tǒng)。
學(xué)習(xí)者和開發(fā)者可脫離硬件進行全軟件仿真,一切調(diào)試好后將程序燒入(固化)芯片,再將芯片插入硬件系統(tǒng),就可使用。隨著單片機開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開發(fā)MCS-51系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。把握這一軟件的使用對于使用51系列單片機的愛好者來說是十分必要的,其便利易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令你事半功倍。
1.1.1Keil開發(fā)軟件的介紹
KeilIDEμVision2集成開發(fā)環(huán)境是KeilSoftwareInc/KeilElektronikGmbH開發(fā)的基于80C51內(nèi)核的微處理器軟件開發(fā)平臺,內(nèi)嵌多種符合當(dāng)前工業(yè)標(biāo)準(zhǔn)的開發(fā)工具,可以完成從工程建立和管理、編譯連接目標(biāo)代碼的生成、軟件仿真硬件仿真等完整的開發(fā)流程。特別C編譯工具在產(chǎn)生代碼的確鑿性和效率方面達到了較高的水平,而且可以附加靈活的控制選項,在開發(fā)大型項目時十分理想。μVision2IDE
μVision2IDE包括一個工程管理器、一個功能豐富并有交互式錯誤提醒的編輯器、選項設(shè)置生成工具、以及在線幫助。您可以使用μVision2創(chuàng)立源文件,并組成應(yīng)用工程加以管理。μVision2可以自動完成編譯、匯編、鏈接程序的操作,使您可以只專注開發(fā)工作的效果。
C51編譯器和A51匯編器
由μVision2IDE創(chuàng)立的源文件可以被C51編譯器或A51匯編器處理,生成可重定位的object文件。KeilC51編譯器遵照ANSIC語言標(biāo)準(zhǔn)支持C語言的所有標(biāo)準(zhǔn)特性,另外還增加了幾個可以直接支持80C51結(jié)構(gòu)的特性KeilA51宏匯編器、支持80C51及其派生系列的所有指令集。LIB51庫管理器
LIB51庫管理器可以從由匯編器和編譯器創(chuàng)立的目標(biāo)文件建立目標(biāo)庫,這些庫是按規(guī)定格式排列的目標(biāo)模塊,可在以后被鏈接器所使用。當(dāng)鏈接器處理一個庫時,僅僅使用了庫中程序使用了的目標(biāo)模塊,而不是全部加以引用。BL51鏈接器定位器
BL51鏈接器使用從庫中提取出來的目標(biāo)模塊和由編譯器匯編器生成的目標(biāo)模塊,創(chuàng)立
一個絕對地址目標(biāo)模塊,絕對地址目標(biāo)文件或模塊包括不可重定位的代碼和數(shù)據(jù),所有的代碼和數(shù)據(jù)都被固定在具體的存儲器單元中。絕對地址目標(biāo)文件可以用于:
◆編程EPROM或其它存儲器設(shè)備
◆由μVision2調(diào)試器對目標(biāo)進行調(diào)試和模擬◆使用在線仿真器進行程序測試μVision2軟件調(diào)試器
μVision2軟件調(diào)試器能十分理想地進行快速可靠的程序調(diào)試。調(diào)試器包括一個高速模擬器,您可以使用它模擬整個80C51系統(tǒng)包括片上外圍器件和外部硬件。當(dāng)您從器件數(shù)據(jù)庫選擇器件時,這個器件的屬性會被自動配置。μVision2硬件調(diào)試器
μVision2調(diào)試器向您提供了幾種在實際目標(biāo)硬件上測試程序的方法
◆安裝MON51,目標(biāo)監(jiān)控器到您的目標(biāo)系統(tǒng)并通過Monitor-51接口下載您的程序?!羰褂酶呒塆DI,接口將μVision2調(diào)試器同仿真器的硬件系統(tǒng)相連接,通過μVision2的人機交互環(huán)境指揮連接的硬件完成仿真操作。RTX51實時操作系統(tǒng)
RTX51實時操作系統(tǒng)是針對80C51微控制器系列的一個多任務(wù)內(nèi)核。RTX51實時內(nèi)核簡化了需要對實時事件進行反應(yīng)的繁雜應(yīng)用的系統(tǒng)設(shè)計編程和調(diào)試,這個內(nèi)核完全集成在C51編譯器中,使用十分簡單。
1.1.2軟件開發(fā)的流程
對于剛剛使用Keil的用戶來講一般是依照下面的流程來完成開發(fā)任務(wù)的
◆建立工程
◆為工程選擇目標(biāo)器件,例如選擇PHILIPS的P89C58◆設(shè)置工程的配置參數(shù)◆開啟/建立程序文件◆編譯和連接工程
◆改正程序中的書寫和語法錯誤,并重新編譯連接◆對程序中某些純軟件的部分使用軟件仿真驗證◆使用硬件仿真器對應(yīng)用程序進行硬件仿真◆將生成的Hex文件燒寫到ROM中運行測試
上面的流程只是一個標(biāo)準(zhǔn)的開發(fā)流程實際中用戶可能反復(fù)重復(fù)一個或幾個步驟
1.1.3Keil軟件的安裝
系統(tǒng)要求:
必需滿足最小的硬件和軟件要求才能確保編譯器以及其它程序功能正常您必需具有◆PentiumPentium-II或兼容處理器的PC
◆Windows95,Windows98,WindowsNT4.0,Windows2000,Windowsxp◆至少16MBRAM
◆至少20MB硬盤空間安裝詳細說明
所有的Keil產(chǎn)品都自帶一個安裝程序和安裝說明,十分易于安裝。根據(jù)您得到的軟件
途徑不同,軟件的存放格式可能不同。
1.1.4Keil軟件的工作環(huán)境
安裝完成后,用戶可以點擊運行圖標(biāo)進入IDE環(huán)境。μVision2軟件有菜單欄可以快速選擇命令,按鈕的工具欄一些源代碼文件窗口、對話框窗口、信息顯示窗口。μVision2允許同時開啟幾個源程序文件。
菜單欄為您提供了各種操作菜單,譬如編輯器操作、工程維護、開發(fā)工具選項設(shè)置、程序調(diào)試窗體選擇和操作在線幫助。工具欄按鈕可以快速執(zhí)行μVision2命令快捷鍵,您可以自己配置也可以執(zhí)行μVision2命令。
圖3-1Keil集成開發(fā)環(huán)境
1.2在Keil環(huán)境下仿真的詳細范例
在項目開發(fā)中,并不是僅有一個源程序就行了,還要為這個項目選擇CPU(Keil支持?jǐn)?shù)百種CPU,而這些CPU的特性并不完全一致),確定編譯、匯編、連接的參數(shù),指定調(diào)試的方式,有一些項目還會有多個文件組成等。
在Keil中文件的管理使用的工程的方法,而不是單一文件的模式。您的所有的文件包括源程序,包括C程序匯編程序頭文件,甚至說明性的技術(shù)文檔都可以放在工程里統(tǒng)一管理。
1.2.1Keil工程的建立
工程建立步驟:
1.首先啟動Keil軟件的集成開發(fā)環(huán)境,這里假設(shè)讀者已正確安裝了該軟件,可以從桌面上直接雙擊uVision的圖標(biāo)以啟動該軟件。
UVision啟動后,程序窗口的左邊有一個工程管理窗口,該窗口有3個標(biāo)簽,分別是Files、Regs、和Books,這三個標(biāo)簽頁分別顯示當(dāng)前項目的文件結(jié)構(gòu)、CPU的寄放器及部份特別功能寄放器的值(調(diào)試時才出現(xiàn))和所選CPU的附加說明文件,假使是第一次啟動Keil,那么這三個標(biāo)簽頁全是空的。
圖3-2進入keilIDE時主界面
2.點擊“Project->NewProject?〞菜單,出現(xiàn)一個對話框,在這里您要做的事情是:??◆為您的工程選一個名稱??◆選擇工程存放的路徑,建議為每個工程單獨建立一個目錄,并且工程中需要的所有文件都放在這個目錄下。
??◆在選擇了工程目錄和名稱后點擊保存,返回。
我們給將要建立的工程起一個名字,在編緝框中輸入一個名字(test1),不需要擴展名。
圖3-3新建工程項目
3.為工程選擇目標(biāo)器件
在工程建立完畢以后,μVision2會馬上彈出器件選擇窗口,器件選擇的目的是告訴μVision2您最終80C51芯片的型號是哪一個公司的哪一個型號,由于不同型號的51芯片內(nèi)部的資源是不同的。μVision2可以根據(jù)您的選擇為您進行SFR的預(yù)定義在軟硬件仿真中提供易于操作的外設(shè)浮動窗口等。μVision2支持的所有型號,根據(jù)生產(chǎn)廠家形成器件組用戶可以點開相應(yīng)的器件組,并選擇相應(yīng)的器件型號,另外假使用戶在選擇完目標(biāo)器件后想重新改變目標(biāo)器件,可點擊菜單Project->SelectDevicefor..,出現(xiàn)圖3-4的對話窗口后重新加以選擇。由于不同廠家的大量型號性能一致或相近,因此假使用戶的目標(biāo)器件型號在μVision2中找不到用戶可以選擇其它公司的相近型號選擇好器件后,點擊確定。
圖3-4器件選擇窗口
4.新建文件
到現(xiàn)在用戶已經(jīng)建立了一個空白的工程文件并為工程選擇好了目標(biāo)器件但是這個工程里沒有任何程序文件,程序文件的添加必需人工進行。假使在程序文件在添加前還沒有創(chuàng)立用戶還必需建立它。新建文件
點擊菜單File->New后在文件窗口會出現(xiàn)Text1的新文件窗口,假使屢屢點擊File->New則會出現(xiàn)Text2、Text3等多個新文件窗口?,F(xiàn)在我們在Keil中有了一個名字為Text1新文件框架,我們還需要把它保存起來,并為它起一個正式的名字。點擊菜單File->SaveAs出現(xiàn)圖的對話窗口,在文件名欄輸入文件的正式名稱,這里我們把Text1保存成test1.asm。注意文件的后綴由于μVision2要根據(jù)后綴判斷文件的類型從而自動進行處理。唯一需要注意的是文件要保存在同一的工程目錄test1中而不要放置在其它的目錄中否則簡單造成工程管理混亂。
圖3-5保存新建文件
圖3-6新建文件命名
編輯程序文件
上面我們建立了一個叫test1.asm的匯編語言程序文件但是這個文件是一個空文件我們還必需編輯。它寫入我們的程序代碼在μVision2中文件的編輯方法同其它文本編輯器是一樣的用戶執(zhí)行可以輸入刪除選擇拷貝粘貼等基本功能。我們編輯文件如下:MAIN:SETBP1.2LOOP:ACALLDELAYCPLP1.2AJMPLOOPDELAY:MOVR7,#0FFHDELAY1:MOVR6,#0FFHHERE:DJNZR6,HEREDJNZR7,DELAY1
RETEND
保存該文件,注意必需加上擴展名(匯編語言源程序一般用asm或a51為擴展名),這里假定將文件保存為test1.asm。
需要說明的是,源文件就是一般的文本文件,不一定使用Keil軟件編寫,可以使用任意文本編輯器編寫,而且,Keil的編輯器對漢字的支持不好,建議使用UltraEdit之類的編輯軟件進行源程序的輸入。5.為工程添加文件
我們建立了一個程序文件并初步把它編輯成我們需要的格式,需要特別提出的是這個程序文件我們僅僅是建立了,它與test1工程還沒有建立起任何關(guān)系我們現(xiàn)在要做的工作就是要把test1.asm添加到test1工程中。添加文件
用鼠標(biāo)的右鍵點擊SourceGroup1彈出的菜單見圖添加工程文件。
圖3-7添加文件
添加文件定位
在菜單中選擇AddfilestoGroupSourceGroup1向工程中添加程序文件后彈出文件選擇窗口見圖3-8,選擇要添加的工程文件test1.asm。注意,在文件參與項目后,該對話框并不消失,等待繼續(xù)參與其它文件,但初學(xué)時常會誤認為操作沒有成功而再次雙擊同一文件,這時會出現(xiàn)對話框,提醒你所選文件已在列表中,此時應(yīng)點擊“確定〞,返回前一對話框,然后點擊“Close〞即可返回主界面,返回后,點擊“SourceGroup1〞前的加號,會發(fā)現(xiàn)test1.asm文件已在其中。雙擊文件名,即開啟該源程序。
圖3-8添加文件定位
刪除工程文件
假使用戶想刪除已經(jīng)參與的工程文件可以用鼠標(biāo)右鍵點擊該文件彈出選擇菜單,選擇RemoveFile...可以將文件從工程中刪除但該文件并沒有從磁盤上刪除仍舊保存在原目錄下。
6.對工程進行設(shè)置
在工程建立以后還需要對工程進行設(shè)置,工程的設(shè)置分為軟件設(shè)置和硬件設(shè)置。硬件設(shè)置主要針對仿真器用于硬件仿真時使用。軟件設(shè)置主要用于程序的編譯和連接也有一些參數(shù)用于軟件仿真。對于軟件和硬件的設(shè)置用戶都應(yīng)當(dāng)細心選擇,不恰當(dāng)?shù)呐渲脮褂脩舻囊恍┎僮鳠o法完成。使用鼠標(biāo)右鍵點擊工程名Target1出現(xiàn)選擇菜單見下圖3-9
圖3-9工程設(shè)置
選擇菜單上的OptionforTarget“Target1“后出現(xiàn)工程的配置窗口見圖3-10。一個工程的配置分成8部分。對工程設(shè)置的對話框,這個對話框可謂十分繁雜,共有8個頁
面,要全部搞清可不簡單,好在絕大部份設(shè)置項取默認值就行了。
??Target用戶最終系統(tǒng)的工作模式的設(shè)定它決定用戶系統(tǒng)的最終框架
??Output工程輸出文件的設(shè)定例如是否輸出最終的Hex文件以及格式設(shè)定??List列表文件的輸出格式設(shè)定??C51使用C51處理的一些設(shè)定??A51使用A51處理的一些設(shè)定
??BL51Location連接時用戶資源的物理定位??BL51MISCBL51的一些附加設(shè)定??Debug硬件和軟件仿真的設(shè)定
Target頁:
圖3-10target頁
晶振頻率選擇:
晶振的選擇主要是在軟件仿真時起作用。μVision2將根據(jù)您的輸入頻率來決定軟件仿真時系統(tǒng)運行的時間和時序。這個設(shè)置在硬件仿真時完全沒有作用。請用戶注意,Xtal后面的數(shù)值是晶振頻率值,默認值是所選目標(biāo)CPU的最高可用頻率值,該數(shù)值與最終產(chǎn)生的目標(biāo)代碼無關(guān),僅用于軟件模擬調(diào)試時顯示程序執(zhí)行時間。正確設(shè)置該數(shù)值可使顯示時間與實際所用時間一致,一般將其設(shè)置成與你的硬件所用晶振頻率一致,假使沒必要了解程序執(zhí)行的時間,也可以不設(shè),這里設(shè)置為12。存儲器模式選擇:
存儲器模式有3種可以選擇:
??◆Small沒有指定區(qū)域的變量缺省放置在data區(qū)域內(nèi)??◆Compact沒有指定區(qū)域的變量缺省放置在pdata區(qū)域內(nèi)??◆Larger沒有指定區(qū)域的變量缺省放置在xdata區(qū)域內(nèi)
程序存儲器選擇:
CodeModel用于設(shè)置ROM空間的使用,同樣也有三個選擇項:◆Small模式,只用低于2K的程序空間;
◆Compact模式,單個函數(shù)的代碼量不能超過2K,整個程序可以使用64K程序空間;◆Larget模式,可用全部64K空間Useon-chipROM選擇項
確認是否僅使用片內(nèi)ROM(注意:選中該項并不會影響最終生成的目標(biāo)代碼量);Operating項:
操作系統(tǒng)選擇Keil提供了兩種操作系統(tǒng):Rtxtiny和Rtxfull,關(guān)于操作系統(tǒng)是另外一個很大的話題了,尋常我們不使用任何操作系統(tǒng),即使用該項的默認值:None(不使用任何操作系統(tǒng));
OffChipCodememory
用以確定系統(tǒng)擴展ROM的地址范圍,OffChipxDatamemory組用于確定系統(tǒng)擴展RAM的地址范圍,這些選擇項必需根據(jù)所用硬件來決定,由于該例是單片應(yīng)用,未進行任何擴展,所以均不重新選擇,按默認值設(shè)置。
Output頁
設(shè)置對話框中的OutPut頁面,如圖3-11所示,這里面也有多個選擇項:
圖3-11output頁
CreatHexfile:用于生成可執(zhí)行代碼文件(可以用編程器寫入單片機芯片的HEX格式文件,文件的擴展名為.HEX),默認狀況下該項未被選中,假使要寫片做硬件試驗,就必需選中該項,這一點是初學(xué)者易疏忽的,在此特別提醒注意。
Debuginformation:將會產(chǎn)生調(diào)試信息,這些信息用于調(diào)試,假使需要對程序進行調(diào)試,應(yīng)選中中該項。
Browseinformation:是產(chǎn)生瀏覽信息,該信息可以用菜單view->Browse來查看,這里取默認值。
“SelectFolderforobjects〞是用來選擇最終的目標(biāo)文件所在的文件夾,默認是與工程文件在同一個文件夾中。
NameofExecutable用于指定最終生成的目標(biāo)文件的名字,默認與工程的名字一致,這兩項一般不需要更改。
工程設(shè)置對話框中的其它各頁:
C51編譯選項、A51的匯編選項、BL51連接器的連接選項等用法有關(guān),這里均取默認值,不作任何修改。以下僅對一些有關(guān)頁面中常用的選項作一個簡單介紹。
Listing標(biāo)簽頁用于調(diào)整生成的列表文件選項。在匯編或編譯完成后將產(chǎn)生(*.lst)的列表文件,在連接完成后也將產(chǎn)生(*.m51)的列表文件,該頁用于對列表文件的內(nèi)容和形式進行細致的調(diào)理,其中比較常用的選項是“CCompileListing〞下的“AssembleCode〞項,選中該項可以在列表文件中生成C語言源程序所對應(yīng)的匯編代碼。
1.2.2工程的編譯、連接
在設(shè)置好工程后,即可進行編譯、連接。選擇菜單Project->Buildtarget,對當(dāng)前工程進行連接,假使當(dāng)前文件已修改,軟件會先對該文件進行編譯,然后再連接以產(chǎn)生目標(biāo)代碼;假使選擇RebuildAlltargetfiles將會對當(dāng)前工程中的所有文件重新進行編譯然后再連接,確保最終生產(chǎn)的目標(biāo)代碼是最新的。而Translate?項則僅對該文件進行編譯,不進行連接。以上操作也可以通過工具欄按鈕直接進行。是有關(guān)編譯、設(shè)置的工具欄按鈕,從左到右分別是:編譯、編譯連接、全部重建、中止編譯和對工程進行設(shè)置。編譯過程中的信息將出現(xiàn)在輸出窗口中的Build頁中,假使源程序中有語法錯誤,會有錯誤報告出現(xiàn),雙擊該行,可以定位到出錯的位置,對源程序反復(fù)修改之后,提醒獲得了名為test1.hex的文件,該文件即可被編程器讀入并寫到芯片中,同時還產(chǎn)生了一些其它相關(guān)的文件,可被用于Keil的仿真與調(diào)試,這時可以進入下一步調(diào)試的工作。
圖3-12編譯窗口
1.2.3Keil的調(diào)試
建立工程、匯編、連接工程,并獲得目標(biāo)代碼,但是做到這一步僅僅代表你的源程序沒有語法錯誤,至于源程序中存在著的其它錯誤,必需通過調(diào)試才能發(fā)現(xiàn)并解決,事實上,除了極簡單的程序以外,絕大部份的程序都要通過反復(fù)調(diào)試才能得到正確的結(jié)果,因此,調(diào)試是軟件開發(fā)中重要的一個環(huán)節(jié)。接下來我們將介紹常用的調(diào)試命令、利用在線匯編、各種設(shè)置斷點進行程序調(diào)試的方法,并通過實例介紹這些方法的使用。
Keil內(nèi)建了一個仿真CPU用來模擬執(zhí)行程序,該仿真CPU功能強大,可以在沒有硬件和仿真機的狀況下進行程序的調(diào)試,下面將要學(xué)的就是該模擬調(diào)試功能。不過在學(xué)習(xí)之前必需明確,模擬終究只是模擬,與真實的硬件執(zhí)行程序確定還是有區(qū)別的,其中最明顯的就是時序,軟件模擬是不可能和真實的硬件具有一致的時序的,具體的表現(xiàn)就是程序執(zhí)行的速度和各人使用的計算機有關(guān),計算機性能越好,運行速度越快。
在對工程成功地進行匯編、連接以后,按Ctrl+F5或者使用菜單Debug->Start/StopDebugSession即可進入調(diào)試狀態(tài),進入調(diào)試狀態(tài)后,界面與編輯狀態(tài)相比有明顯的變化,Debug菜單項中原來不能用的命令現(xiàn)在已可以使用了,工具欄會多出一個用于運行和調(diào)試的工具條,Debug菜單上的大部份命令可以在此找到對應(yīng)的快捷按鈕,從左到右依次是復(fù)位、運行、暫停、單步、過程單步、執(zhí)行完當(dāng)前子程序、運行到當(dāng)前行、下一狀態(tài)、開啟跟蹤、觀測跟蹤、反匯編窗口、觀測窗口、代碼作用范圍分析、串行窗口、內(nèi)存窗口、性能分析、工具按鈕等命令。
圖3-13開啟調(diào)試窗口
圖3-14調(diào)試菜單
學(xué)習(xí)程序調(diào)試,必需明確兩個重要的概念,即單步執(zhí)行與全速運行。全速執(zhí)行是指一行程序執(zhí)行完以后緊接著執(zhí)行下一行程序,中間不中止,這樣程序執(zhí)行的速度很快,并可以看到該段程序執(zhí)行的總體效果,即最終結(jié)果正確還是錯誤,但假使程序有錯,則難以確認錯誤
出現(xiàn)在哪些程序行。單步執(zhí)行是每次執(zhí)行一行程序,執(zhí)行完該行程序以后即中止,等待命令執(zhí)行下一行程序,此時可以觀測該行程序執(zhí)行完以后得到的結(jié)果,是否與我們寫該行程序所想要得到的結(jié)果一致,借此可以找到程序中問題所在。程序調(diào)試中,這兩種運行方式都要用到。
1.2.3.1Keil程序調(diào)試窗口
圖3-15調(diào)試窗口
主寄放器窗口
顯示修改主寄放器內(nèi)容,例如ABSP等特別功能寄放器,該窗口可以切換成工程文件管理窗口或資料窗口。源程序窗口
顯示用戶編寫的源程序μVision2支持源程序調(diào)試外設(shè)窗口
顯示或修改外設(shè)數(shù)據(jù),例如T0串口中斷等內(nèi)容。用戶還可以開啟其它外設(shè)。反匯編窗口
顯示或修改最終形成的匯編代碼形式,
信息輸出窗口
μVision2給用戶的提醒信息輸出,命令輸入窗口
用戶可以輸入控制命令包括顯示資源設(shè)置斷點單步運行等,存儲器窗口
批量顯示或修改80C51存儲器資源,例如程序存儲器數(shù)據(jù)存儲器等。存儲器地址輸入。規(guī)定存儲器窗口顯示的存儲器種類和地址范圍。變量觀測窗口
顯示或修改當(dāng)前工程中定義的所有變量。
1.2.3.2μVision2窗口的啟動或關(guān)閉
在μVision2中任何窗口都可以顯示或關(guān)閉。對于已經(jīng)顯示的窗口用戶可以用鼠標(biāo)點擊該窗口上的Windows標(biāo)準(zhǔn)關(guān)閉圖標(biāo)來關(guān)閉。該窗口對于沒有顯示的窗口用戶可以點擊菜單View里面的不同選擇用于開啟或關(guān)閉不同的顯示內(nèi)容:
??ProjectWindows開啟或關(guān)閉工程管理窗口主寄放器窗口資料窗口??OutputWindows開啟或關(guān)閉信息輸出窗口??DisassemblyWindows開啟或關(guān)閉反匯編窗口??MemoryWindows開啟或關(guān)閉存儲器窗口
??WatchandCallStackWindows開啟或關(guān)閉變量觀測窗口
1.2.3.3μVision2中用戶可以完成的操作
??查看內(nèi)部所有的資源,對于80C51內(nèi)部的所有資源在μVision2中都可以查看??內(nèi)部可以直接尋址的數(shù)據(jù)存儲器data??內(nèi)部只能間接尋址的數(shù)據(jù)存儲器idata??特別功能寄放器SFR,名稱必需定義??外部數(shù)據(jù)存儲器xdata??程序代碼空間code??運行用戶程序包括:??Stepinto單步跟蹤??Stepover單步運行
??Runtillcursor運行到光標(biāo)處??Run全速運行
",設(shè)置運行斷點
1.2.3.4程序復(fù)位
假使用戶想重新開始運行用戶程序,可以對用戶程序進行復(fù)位,由于80C51芯片復(fù)位后程序計數(shù)器器將從0000H重新開始,復(fù)位后程序計數(shù)器PC指針將復(fù)位成0000H另外一些內(nèi)部特別功能寄放器在復(fù)位期間也將重新賦值。例如A將變?yōu)?0H,DPTR變?yōu)?000H,SP變?yōu)?7H,I/O口變?yōu)?FFH。程序的復(fù)位有以下幾種方法實現(xiàn):
??◆點擊圖標(biāo)
??◆點擊菜單Peripherals->ResetCPU??◆在命令輸入窗口輸入RESET
1.2.3.5斷點
在μVision2中在C源程序窗口/匯編源程序窗口/反匯編窗口都可以在任何有效位置設(shè)置斷點。斷點的設(shè)置/取消操作也十分簡單在三種窗口中假使您想在某一行設(shè)置斷點只需要用鼠標(biāo)左鍵雙擊該行,就可以在該行左邊框發(fā)現(xiàn)紅色的斷點標(biāo)志。斷點的取消也是同樣的操。
斷點的管理
假使用戶設(shè)置了好多的斷點,可能存在著斷點管理的問題。例如我想取消全部的斷點全速運行,假使逐個的取消將是十分煩瑣的事情。在μVision2中有斷點管理器點擊Debug->Breaks,出現(xiàn)斷點管理窗口
圖3-16斷點管理器
1.2.3.6程序調(diào)試時的常用窗口
Keil軟件在調(diào)試程序時提供了多個窗口,主要包括輸出窗口(OutputWindows)、觀測窗口(Watch&CallStatckWindows)、存儲器窗口(MemoryWindow)、反匯編窗口(DissamblyWindow)串行窗口(SerialWindow)等。進入調(diào)試模式后,可以通過菜單View下的相應(yīng)命令開啟或關(guān)閉這些窗口。
空間資源的查看和修改
在μVision2的仿真環(huán)境中標(biāo)準(zhǔn)80C51的所有有效空間資源都可以查看和修改μVision2把空間資源分成幾種類型加以管理。data空間:
內(nèi)部可直接尋址RAM或SFR類型data簡稱d。在標(biāo)準(zhǔn)80C51中可直接尋址空間為0-0X7F范圍內(nèi)的RAM和0X80-0XFF的SFR特別功能寄放器。在μVision2中把它們組合成空間連續(xù)的可直接尋址的data空間。??存儲器窗口MemoryWindows:存儲器窗口的開啟,點擊View->MemoryWindows可以開啟存儲器窗口見圖3-18假使窗口已開啟,該窗口則會關(guān)閉。
圖3-18memory空間窗口
開啟存儲器窗口后可以看到,存儲器地址輸入欄用于輸入空間類型和起始地址。在上圖中d表示data區(qū)域,0表示顯示起始地址,存儲器地址欄顯示每一行的起始地址便于觀測和修改。data區(qū)域的最大地址為0XFF。
存儲器窗口組,分成獨立的4個組。每個組可以單獨定義空間類型和起始地址點擊組圖標(biāo)可以切換。
存儲器窗口中數(shù)據(jù)的修改,存儲器窗口中的數(shù)據(jù)可以便利的修改,修改的方法是把鼠標(biāo)移動到該數(shù)據(jù)的顯示位置按動鼠標(biāo)的右鍵,出現(xiàn)浮動菜單見圖,
圖3-19memory空間窗口數(shù)據(jù)修改
選擇ModifyMemoryatD0X33,表示要改動data區(qū)域OX33地址的數(shù)據(jù)內(nèi)容。選擇后系統(tǒng)會出現(xiàn)輸入欄,輸入新的數(shù)值后點擊OK返回。Idata空間:
內(nèi)部可間接尋址RAM類型idata簡稱i。在標(biāo)準(zhǔn)51中,可間接尋址空間為0-0xFF范圍內(nèi)的RAM。其中地址范圍0x00-0x7F的RAM既可間接尋址也可直接尋址,地址范圍0x80-0xFF的RAM只能間接尋址,在μVision2中把它們組合成空間連續(xù)的可間接尋址的idata空間。idata空間查看可以開啟存儲器窗口MemoryWindows,在存儲器地址輸入欄輸入的空間信息要變?yōu)閕。例如要在存儲器窗口顯示起始地址為0x65的idata數(shù)據(jù)只要在存儲器地址輸入欄輸入i0x65。Xdata空間:
外部數(shù)據(jù)空間XRAM類型xdata簡稱x。在標(biāo)準(zhǔn)80C51中外部可間接尋址64K地址范圍的數(shù)據(jù),存儲器其讀取的指令是MO間接尋址寄放器是DPTR或Ri。在μVision2中把它們組合成空間連續(xù)的可間接尋址的xdata空間。xdata空間查看可以開啟存儲器窗口MemoryWindows,在存儲器地址輸入欄輸入的空間信息要變?yōu)閤。Code空間:
程序空間code類型code簡稱c。在標(biāo)準(zhǔn)80C51中程序空間有64K的地址范圍程序存儲器。在μVision2中把它們組合成空間連續(xù)的可間接尋址的code空間。Code空間數(shù)據(jù)可以開啟存儲器窗口MemoryWindows,在存儲器地址輸入欄輸入的空間信息要變?yōu)閏。
工程窗口寄放器頁
圖3-20是工程窗口寄放器頁的內(nèi)容,寄放器頁包括了當(dāng)前的工作寄放器組和系統(tǒng)寄放器,系統(tǒng)寄放器組有一些是實際存在的寄放器如A、B、DPTR、SP、PSW等,有一些是實際中并不存在或雖然存在卻不能對其操作的如PC、Status等。每當(dāng)程序中執(zhí)行到對某寄放器的操作時,該寄放器會以反色(藍底白字)顯示,用鼠標(biāo)單擊然后按下F2鍵,即可修改該
值。
圖3-20特別功能寄放器窗口
外設(shè)窗口
在μVision2中還可以開啟一些外設(shè)窗口。外設(shè)窗口的內(nèi)容與您選擇的目標(biāo)器件有關(guān)系,例如您假使選擇89C51外設(shè)中就沒有T2這個選項只有選擇了89C52才可能出現(xiàn)T2外設(shè)選項,外設(shè)窗口只有在進入仿真環(huán)境中才有可能開啟或關(guān)閉。在仿真環(huán)境中點擊菜單Peripherals就可以看到可以使用的外設(shè)或外設(shè)組,點擊對應(yīng)的外設(shè)就可以開啟或關(guān)閉該外設(shè)窗口,外設(shè)窗口以簡單的形式告訴用戶現(xiàn)在外設(shè)的狀態(tài)。
圖3-21中斷窗口
圖3-22I/O口
圖3-23串行口
圖3-24定時技術(shù)器窗口
1.3程序下載1.3.1編程器的使用
上面已經(jīng)講過,不管哪種單片機,廠家都要配套提供編程器(固化程序)、由于廠家好多,芯片好多,不可能一種芯片一個編程器,有些公司研究出通用編程器。常見的通用編程器有:南京西爾特電子有限公司的SUPERPRO通用編程器,下面介紹SUPERPRO通用編程器。1、簡介
SUPERPRO是一種可靠性高,速度快,具有高性能價格比的高級通用編程器系列。SUPERPRO適用于IBMPC386、486、PENTIUM及其兼容性。其菜單驅(qū)動接口軟件使裝入、編輯和保存文件極其便利。支持?jǐn)?shù)十個廠家生產(chǎn)的EPLD、E(E)PROM、FLASH、BPROM、MCU等數(shù)千種可編程器。2、編程器的使用
?按說明書安裝好硬件和軟件。
?編程,將器件插入編程器插座,然后鎖緊。?選SelectbyDevice…根據(jù)型號選擇器件。
從主顯示界面進入“Device→SelectbyManufacturer〞或進入“Device→SelectbyDevice〞,選擇正確器件。當(dāng)編程器件的類型確定之后,用戶便可以利用列表窗口進行器件選擇,左邊的列表窗口顯示器件生產(chǎn)廠家(Manufacturer),左邊的列表窗口顯示不同廠家所對應(yīng)的器件、選擇一個器件的方法是,先選廠家,后選器件,在對話框的底部,有一個信息欄,其中顯示當(dāng)前所選器件的廠家名(Manufacturer)、器件(DeviceName)、器件類型(DeviceType)、芯片容量(ChipSize)、最大管腳(MaxPin)、編程算法名(AlgoName),可供用戶在選擇器件時參考。
本菜單提供另一種器件選擇方法,即先選器件,后選廠家,其余的選擇方法與上一個菜單一致。
●進入文件(FILE)菜單,把文件調(diào)入緩沖區(qū)或者從器件讀入緩沖區(qū)?!襁M入緩沖區(qū)(Buffer)菜單,檢查、修改數(shù)據(jù)文件。(非必要步驟)?!襁M入“Device→FunctionSelect〞,選擇并執(zhí)行所需功能。?菜單項各功能①、Program編程
將緩沖區(qū)內(nèi)的數(shù)據(jù)燒寫至芯片。編程過程中或完畢將執(zhí)行Verify功能,如有錯誤,顯示出錯信息和出錯地址。其他結(jié)果則顯示在Message窗口。假使為ROM,當(dāng)芯片進行編程和校驗時,Address窗口中CurrentAddress窗口顯示編程地址增加。緩沖區(qū)的起始地址和終止地址可以在Address窗口中的BufferStart和BufferEnd輸入行進行修改。ProgramAddress為緩沖區(qū)編程開始地址。假使為PLD,當(dāng)芯片進行編程和校驗時,Address窗口中CurrentAddress窗口顯示編程地址增加。
②、Read讀
從芯片讀其內(nèi)容到緩沖區(qū)。讀完之后,Environment窗口顯示數(shù)據(jù)的校驗和。假使芯片是PAL或GAL,Blowcount同時顯示計數(shù)值。當(dāng)GAL編程時,將首先檢查其器件電子標(biāo)簽,假使讀出的廠家名的器件型號與所選的不符,將顯示錯誤信息,芯片不能編程也不能讀。假使PAL或GAL的安全熔絲斷了,則不管芯片內(nèi)容是什么,讀出的數(shù)據(jù)要么全“1〞要么全“0〞。假使為ROM或單片微控制器,將把起始地址和終止地址中的數(shù)據(jù)讀入緩沖區(qū)。Address窗口中的Currentaddress將顯示編程地址;Message窗口顯示編程信息。
③、Verify檢驗
本功能對緩沖區(qū)內(nèi)容芯片內(nèi)容進行比較。假使出現(xiàn)錯誤,顯示錯誤信息和出錯地址。假使為ROM或單片微控制器,將對起始地址和終止地址之間進行比較。Currentaddress顯示比較的地址。
④、BlankCheck空檢查
本功能讀芯片內(nèi)容并與空字符比較。假使芯片不空,將顯示不空地址。假使芯片為ROM或單片微控制器,則在指定起始地址和終止地址進行部分空比較。
⑤、DataCompare數(shù)據(jù)比較
本功能僅用于ROM和單片微控制器,功能與Verify一致,但將產(chǎn)生包含芯片數(shù)據(jù)和緩沖區(qū)數(shù)據(jù)有差異的文件。文件名即為所選擇器件名,.cmp作為擴展名。例如:假使選擇的器件為AMD27256,則產(chǎn)生的文件為27256.cmp。此文件可在一般編輯器中瀏覽,它包含了芯片數(shù)據(jù)與緩沖區(qū)數(shù)據(jù)之間的差異。與Verify功能不同,遇到第一個不同數(shù)據(jù),它不會停下來。
⑥、Auto自動操作
本功能將順序執(zhí)行一些功能。假使芯片是PAL或GAL,它將執(zhí)行Erase(擦除),Blankcheck(空檢查),Program(編程),Verify(校驗)。假使其中任何一個功能由于出現(xiàn)錯誤而中斷,則下面的步驟也不可以執(zhí)行。假使是ROM或單片微控制器,它將順序執(zhí)行blankcheck,Program和Verify。對87單片微控制器系列,還可進行加密。
⑦、Security加密
假使進行了加密編程,插入芯片的數(shù)據(jù)將不能讀出,對可擦除器件,要進行加密部分編程,必需首先執(zhí)行Erase功能。不同的器件,此功能的名稱可能不同。如MEM-?PROTECT等。含義都一樣。
注意:加密芯片有可能可以通過BlankCheck。⑧、EncryptionProgram加密位表編程
僅用于帶加密位表的單片機。本操作將密碼表編進芯片。加密表的內(nèi)容可以裝入、保存和編輯。一旦寫入密碼數(shù)據(jù),緩沖區(qū)中的數(shù)據(jù)就與密碼表中的數(shù)據(jù)進行“異或〞操作,若有錯,將顯示錯誤信息。
注意:對ROM或單片微控制器編程,將顯示以下條目。當(dāng)前地址和組數(shù)也同時顯示出來。
●ChipStartAddress芯片起始地址:編程芯片的起始地址。
●ChipEndAddress芯片終止地址:編程芯片的終止地址。輸入16進制數(shù)或地址大于芯片地址的最大值,將顯示錯誤信息。
●ProgramStartAddress緩沖區(qū)起始地址:指定編程緩沖區(qū)起始地址。
●BufferStratAddress緩沖區(qū)起始地址:指定緩沖區(qū)的起始地址。改變這個值,選擇自動操作后,編程器就自動執(zhí)行所有操作,并顯示操作狀況。編程器還有其它功能,請看說明書使用。
1.3.2ISPdown使用說明
1.把解壓縮后的文件放在您習(xí)慣放的地方(如C:\\ProgramFiles\\ispdown目錄里),ispdown是無需安裝的綠色軟件,直接做個快捷方式在桌面就行。
2.接通下載線及所需下載的目標(biāo)板有關(guān)線路并通電,運行ispdown軟件,您可以看到軟件中關(guān)于您的下載線的硬件版本及內(nèi)核軟件版本的提醒,例如:
圖3-25ISPDOWN信息
3.假使對ATMEL、PIC的芯片進行編程,在ispdown軟件里是我們精心為您開發(fā)的軟件,對CPLD/FPGA的編程則請在不關(guān)閉此ispdown軟件的前提下,先選擇功能圖標(biāo),再開啟相應(yīng)的官方編程軟件,如圖3-26是點擊ALTERA圖標(biāo)后的圖片。
圖3-26ISPDOWN檢測窗口
4.假使點擊“MCU〞圖標(biāo),您可以點擊“自動查找〞功能,ispdown軟件可以自動查到您所使用的芯片型號(有少量芯片本身是不支持此功能的,如:89S8252),當(dāng)然,也可以在軟件菜單中進行人工設(shè)置。
圖3-27ISPDOWN已連接
5.從“文件〞菜單中加載文件后,您可以使用“自動編程〞圖標(biāo)下載程序到芯片中了。
圖3-28ISPDOWN下載
圖中“速度調(diào)理及工作進度〞的選項,是為了適應(yīng)不同性能計算機工作速度的不同而設(shè)計的,一般狀況可以放在最快的位置,若下載不成功則適當(dāng)調(diào)慢些,
6.軟件提供了對flash及EEprom數(shù)據(jù)區(qū)的直接修改功能,對一些有特別需要的編程提供了便利。
7.“芯片操作〞菜單中,“其它操作〞提供了對單片機下載程序時采用何種加密方式。8.此外,在“芯片操作〞菜單中提供了獨特的“復(fù)位目標(biāo)板芯片〞功能,讓調(diào)試中一旦程序跑飛時直接就可通過ispdown軟件進行復(fù)位。
1.4keil環(huán)境下仿真調(diào)試實例講解
實例1:單字節(jié)十六進制數(shù)轉(zhuǎn)換成雙字節(jié)ASCII碼
第一步:分析函數(shù)要求
入口條件:待轉(zhuǎn)換的單字節(jié)十六進制數(shù)在累加器A中。
出口信息:高四位的ASCII碼在A中,低四位的ASCII碼在B中。影響資源:PSW、A、B堆棧需求:4字節(jié)
其次步:建立工程雙擊桌面KeiluVision2圖標(biāo),或者在開始-程序-KeiluVision2中開啟keil集成開發(fā)環(huán)境。
圖3-29開啟KeilIDE
新建一個工程,放在D:/code/hasc目錄下面,工程名稱hasc。并選擇MCU為ATmel89c52。
圖3-30建立工程
圖3-31選擇器件
第三步:建立程序文件
新建程序文件并保存,命名為hasc.asm。編輯程序如下:HASC:MOVB,A;暫存待轉(zhuǎn)換的單字節(jié)十六進制數(shù)LCALLHAS1;轉(zhuǎn)換低四位XCHA,B;存放低四位的ASCII碼SWAPA;準(zhǔn)備轉(zhuǎn)換高四位
HAS1:ANLA,#0FH;將累加器的低四位轉(zhuǎn)換成ASCII碼ADDA,#90H
DAAADDCA,#40HDAARETEND
第四步:把程序文件添加至工程文件中
在工程窗口中,鼠標(biāo)右鍵點擊SourceGroup1,會出現(xiàn)如下菜單,選擇ADDFiles,選擇文件hasc.asm,點擊ADD鍵,然后關(guān)閉文件添加窗口。這時,會看到文件已經(jīng)添加進工程中。
圖3-32添加文件
圖3-33添加文件成功
第五步:工程設(shè)置
由于該程序是一個純軟件算法,只需要軟件模擬調(diào)試即可,故不需要生成HEX文件。其他選項可以選擇默認即可。
圖3-34工程項目設(shè)置
第六步:編譯連接
選擇快捷鍵,或者F7或者菜單Project-buildtarget,對工程項目進行編譯。這時可能會出現(xiàn)編譯報錯:
圖3-35編譯出錯
雙擊錯誤信息,可以直接轉(zhuǎn)到程序的錯誤行上。閱讀所給出的錯誤信息提醒,細心在錯誤行附件檢查。Keil的程序中的字母、符號、數(shù)字必需是在英文輸入下完成,解釋可以是中文的。在寫程序的時候,好多學(xué)院開始都會對中英文切換弄混,這樣在程序里就會產(chǎn)生好多中文的符號如逗號、冒號、分號。這些中文下的符號在編譯的時候都會出現(xiàn)錯誤。上面顯示的錯誤就是在程序的第4行,分號使用了中文下面的分號。對程序的錯誤進行修改,這個時候可以得到:
圖3-36編譯成功
這表示程序已經(jīng)編譯通過。第七步:程序調(diào)試:
點擊debug菜單欄的start/stopdebugsession或直接點擊快捷圖標(biāo)進入到調(diào)試環(huán)境。
圖3-37開始調(diào)試
在工程窗口中修改寄放器A的值,如修改成1F
圖3-38修改寄放器
單步運行程序,一邊運行一邊觀測寄放器的變化,當(dāng)程序運行至XCHA,B時,觀測結(jié)果
圖3-39程序調(diào)試觀測寄放器
此時可見寄放器A中的值是46H,這是1F中的“F〞的ASCII碼,繼續(xù)單步運行程序,注意觀測寄放器及PSW的變化狀況。當(dāng)程序運行終止前,可以觀測到結(jié)果,注意此時A,B寄放器的值已經(jīng)是最終結(jié)果。
圖3-40程序調(diào)試觀測寄放器
第八步:程序的反復(fù)調(diào)試
由于程序中有各種狀況,有的程序有分支,對于不同的條件程序會進入不同的代碼段。假使僅僅是調(diào)試一個數(shù)據(jù)是不可取的,該數(shù)據(jù)可能具有一定的特別性。多項選擇幾個有代表性的數(shù)據(jù)進行調(diào)試,是判斷程序正確的必要手段。此程序調(diào)試中,我們可以調(diào)試“1FH〞,“11H〞,“F1〞,“FF〞這幾個數(shù)據(jù)來檢驗程序。調(diào)試過程完全與第七步一致。第九步:保存當(dāng)程序調(diào)試完畢后,關(guān)閉調(diào)試狀態(tài),對整個工程項目保存一下,以備以后使用。
實例2串口通信程序的調(diào)試
第一步:程序分析
該程序?qū)⑼瓿梢韵聨讉€主要功能:
1.當(dāng)單片機復(fù)位以后,P1.1,P1.2,P1.3間隔一定時間按順序置高電平
2.當(dāng)串口發(fā)送數(shù)據(jù)005501時,P1.1置高,其余為低;005502時,P1.2置高,其余為低;
005503時,P1.3置高,其余為低;005504時,全為低。
3.當(dāng)單片機接收的數(shù)據(jù)不為005501,005502,005503,005504,中任何一個數(shù)時,認為接
收數(shù)據(jù)錯誤,系統(tǒng)復(fù)位。
4.當(dāng)單片機超過200左右秒還沒有收到任何數(shù)據(jù)時,認為單片機程序異常,單片機系統(tǒng)復(fù)
位。
其次步:建立工程
建立工程名為“serial〞,詳細過程與上例一致第三步:建立程序文件
建立程序文件“serial.asm〞ORG0000HLJMPSTARTORG000BHLJMPTIME0ORG0023HLJMPSERIAL
ORG0040H
START:MOVIE,#00HMOVIP,#00HMOVTMOD,#00HMOVTCON,#00HMOVPCON,#00HMOVPSW,#00HMOVTH0,#00HMOVTL0,#00HMOVTH1,#00HMOVTL1,#00HMOVSCON,#00HMOVSBUF,#00HMOVSP,#07HMOV30H,#0FFHMOV31H,#0FFHMOV32H,#0FFHMOVP1,#01HMOVR3,#30H;DELAYUSER3ACALLDELAYMOVP1,#02H
MOVR3,#30H;DELAYUSER3ACALLDELAYMOVP1,#04HMOVR3,#30H;DELAYUSER3ACALLDELAYMOVP1,#00HMOVR3,#30H;DELAYUSER3ACALLDELAYMOVR1,#00H;0NOTERR,1ERRMOVR2,#00H;SERIALSET0,TIMER0CHECK,1OKMOVR0,#30H;SAVE3BYTEFROM50HMOVR6,#0A1HMOVR7,#03HMOVIP,#10H
MOVTMOD,#21HMOVTH0,#3CHMOVTL0,#00HMOVTH1,#0FDHMOVTL1,#0FDHMOVPCON,#00HMOVSCON,#50HSETBEASETBET0SETBESSETBTR1SETBTR0
HERE:CJNER1,#01H,HERELJMP0000H
DELAY:PUSH03HDELAY2:PUSH03HDELAY3:PUSH03HDELAY4:DJNZR3,DELAY4POP03HDJNZR3,DELAY3POP03HDJNZR3,DELAY2POP03HDJNZR3,DELAYRET
TIME0:MOVTH0,#3CHMOVTL0,#00HDJNZR6,NEXT0
0NOTOKDJNZR7,NEXT0CJNER2,#01H,ERR0MOVR2,#00HMOVR6,#0A1HMOVR7,#03HAJMPNEXT0
ERR0:MOVR1,#01HNEXT0:RETI
SERIAL:CLRESCLRRIMOVR2,#01H;SYSTEMOKMOVA,SBUFMOV@R0,AINCR0CJNER0,#33H,NENDMOVR0,#30HCJNE@R0,#00H,ERR1INCR0CJNE@R0,#55H,ERR1INCR0CJNE@R0,#01H,CHECK2MOVP1,#01HAJMPNEXT1CHECK2:CJNE@R0,#02H,CHECK3MOVP1,#02HAJMPNEXT1CHECK3:CJNE@R0,#03H,CHECK0MOVP1,#04HAJMPNEXT1
CHECK0:CJNE@R0,#04H,ERR1MOVP1,#00HAJMPNEXT1
ERR1:MOVR1,#01HNEXT1:MOVR0,#30HNEND:SETBESRETIEND
第四步:把程序文件添加至工程文件中方法與上例一致,不再詳述第五步:工程設(shè)置
該程序需要在板子上調(diào)試,故需要生成HEX文件
圖3-41工程設(shè)置,生成Hex
第六步:編譯連接
方法與上例一致,不再詳述第七步:程序調(diào)試:
本例與上例調(diào)試方法基本一致。但在調(diào)試過程中需要注意幾點:
1.要開啟memorywindow,觀測存儲器空間重的data空間,特別功能寄放器在這個空
間中,在調(diào)試時需要注意其變化。
圖3-42觀測memory
2.在調(diào)試過程中有ACALLDEALY的函數(shù),假使單步運行,需要幾萬周期,不可實
現(xiàn)。此時要先在下條指令前設(shè)置一個斷點,選擇全速運行,讓程序運行至斷點處。當(dāng)然,也有其他方法可以實現(xiàn),如把光標(biāo)移至延時函數(shù)的下一行,選擇debug菜單中的運行至光標(biāo)處,也可以實現(xiàn)?;蛘咴谶M入到程序ACALLDEALY時,選擇stepover(宏單步)也可。以第一種方法為例,可以觀測到一下結(jié)果
圖3-43程序停在斷點處
3.程序需要調(diào)試串行口,IO端口,以及定時器。故需要開啟外設(shè)窗口:串行口、P1口
以及定時器0窗口。
圖3-44各種外設(shè)調(diào)試窗口
4.定時器的調(diào)試:
在調(diào)試定時器的時候,當(dāng)希望程序進入定時中斷時,可以在定時器窗口內(nèi)把TF選項打勾,然后點擊一下主程序,把主程序設(shè)置為當(dāng)前窗口,選擇單步運行,這時程序就進入了定時中斷。
圖3-45定時器調(diào)試窗口
5.串行口調(diào)試
在調(diào)試串行口的時候,當(dāng)希望程序進入串行中斷時,可以在串行中斷窗口的IRQ選項選擇是發(fā)送中斷還是接收中斷。在SBUF內(nèi)可以設(shè)置寄放器的值。設(shè)定完選項以后,點擊一下主程序,把主程序設(shè)置為當(dāng)前窗口,選擇單步運行,這時程序就進入了串行中斷。
圖3-46串行口調(diào)試窗口
6.I/O端口調(diào)試
I/O端口調(diào)試時,按選項打勾即可。
圖3-47I/O調(diào)試窗口
第八步:程序反復(fù)調(diào)試
多設(shè)置一些特別數(shù)據(jù),驗證模擬實現(xiàn)其功能。除了正常接收處理數(shù)據(jù)以外,還要注意驗證數(shù)據(jù)接收錯誤,數(shù)據(jù)超時未收到等狀況。第九不:程序下載
使用ISPDOWN軟件,選擇生成的HEX文件,下載到目標(biāo)板中
圖3-48ISP下載
第十步:目標(biāo)板測試驗證
用串口調(diào)試助手進行調(diào)試。注意波特率選擇9600,無校驗,數(shù)據(jù)位8,中止位1。用16進制顯示,16進制發(fā)送。驗證發(fā)送005501,005502,005503,005504,以及發(fā)送數(shù)據(jù)超時等狀況。當(dāng)發(fā)送完數(shù)據(jù)后,可以使用萬用表測量P1口的電壓值。
圖3-49串口調(diào)試
第十一步:項目保存
當(dāng)測試程序完全正確以后,保存該項目。同時可以做一個文檔,對該程序進行總結(jié),記錄一下關(guān)鍵數(shù)據(jù)的意義,程序在測試時遇到的問題,以及解決方法,為以后的工作提供材料。
其次章:Proteus電路分析與實物仿真軟件
ProteusISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:①實現(xiàn)了單片機仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、規(guī)律分析儀、信號發(fā)生器等。②支持主流單片機系統(tǒng)的仿真。目前支持的單片機類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。③提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點等調(diào)試功能,同時可以觀測各個變量、寄放器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必需具有這些功能;同時支持第三方的軟件編譯和調(diào)試環(huán)境,如KeilC51uVision2等軟件。④具有強大的原理圖繪制功能。總之,該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大。本章介紹ProteusISIS軟件的工作環(huán)境和一些基本操作。
2.1進入ProteusISIS
雙擊桌面上的ISIS6Professional圖標(biāo)或者單擊屏幕左下方的“開始〞→“程序〞→“Proteus6Professional〞→“ISIS6Professional〞,出現(xiàn)如圖1-1所示屏幕,說明進入ProteusISIS集成環(huán)境。
圖1-1啟動時的屏幕
2.2工作界面
ProteusISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面,如圖1-2所示。包括:標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進程控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口。
圖1-2ProteusISIS的工作界面
2.3基本操作
圖形編輯窗口
在圖形編輯窗口內(nèi)完成電路原理圖的編輯和繪制。為了便利作圖坐標(biāo)系統(tǒng)(CO-ORDINATESYSTEM)
ISIS中坐標(biāo)系統(tǒng)的基本單位是10nm,主要是為了和ProteusARES保持一致。但坐標(biāo)系統(tǒng)的識別(read-out)單位被限制在1th。坐標(biāo)原點默認在圖形編輯區(qū)的中間,圖形的坐標(biāo)值能夠顯示在屏幕的右下角的狀態(tài)欄中。
點狀柵格(TheDotGrid)與捕獲到柵格(SnappingtoaGrid)
編輯窗口內(nèi)有點狀的柵格,可以通過View菜單的Grid命令在開啟和關(guān)閉間切換。點與點之間的間距由當(dāng)前捕獲的設(shè)置決定。捕獲的尺度可以由View菜單的Snap命令設(shè)置,或者直接使用快捷鍵F4、F3、F2和CTRL+F1。如圖1-3所示。若鍵入F3或者通過View菜單的選中Snap100th,
你會注意到鼠標(biāo)在圖形編輯窗口內(nèi)移動時,坐標(biāo)值是以固定的步長100th變化,這稱為捕獲,
假使你想要確鑿地看到捕獲位置,可以使用View菜單的X-Cursor命令,選中后將會在捕獲點顯示一個小的或大的交織十字。實時捕獲(RealTimeSnap)
當(dāng)鼠標(biāo)指針指向管腳末端或者導(dǎo)線時,鼠標(biāo)指針將會被捕獲到這些物體,這種功能被稱為實時捕獲,該功能可以使你便利的實現(xiàn)導(dǎo)線和管腳的連接??梢酝ㄟ^Tools菜單的RealTimeSnap命令或者是CTRL+S切換該功能。
可以通過View菜單的Redraw命令來刷新顯示內(nèi)容,同時預(yù)覽窗口中的內(nèi)容也將被刷新。當(dāng)執(zhí)行其它命令導(dǎo)致顯示錯亂時可以使用該特性恢復(fù)顯示。視圖的縮放與移動
可以通過如下幾種方式:
?用鼠標(biāo)左鍵點擊預(yù)覽窗口中想要顯示的位置,這將使編輯窗口顯示以鼠標(biāo)點擊處為中心
的內(nèi)容。
?在編輯窗口內(nèi)移動鼠標(biāo),按下SHIFT鍵,用鼠標(biāo)“撞擊〞邊框,這會使顯示平移。我
們把這稱為Shift-Pan。
?用鼠標(biāo)指向編輯窗口并按縮放鍵或者操作鼠標(biāo)的滾動鍵,會以鼠標(biāo)指針位置為中心重新
顯示。
預(yù)覽窗口(TheOverviewWindow)
該窗口尋常顯示整個電路圖的縮略圖。在預(yù)覽窗口上點擊鼠標(biāo)左鍵,將會有一個矩形藍綠框標(biāo)示出在編輯窗口的中顯示的區(qū)域。其他狀況下,預(yù)覽窗口顯示將要放置的對象的預(yù)覽。這種PlacePreview特性在以下狀況下被激活:?當(dāng)一個對象在選擇器中被選中?當(dāng)使用旋轉(zhuǎn)或鏡像按鈕時
?當(dāng)為一個可以設(shè)定朝向的對象選擇類型圖標(biāo)時(例如:Componenticon,DevicePinicon
等等)
?當(dāng)放置對象或者執(zhí)行其他非以上操作時,placepreview會自動消除
?對象選擇器(ObjectSelector)根據(jù)由圖標(biāo)決定的當(dāng)前狀態(tài)顯示不同的內(nèi)容。顯示對象
的類型包括:設(shè)備,終端,管腳,圖形符號,標(biāo)注和圖形。
?在某些狀態(tài)下,對象選擇器有一個Pick切換按鈕,點擊該按鈕可以彈出庫元件選取窗
體。通過該窗體可以選擇元件并置入對象選擇器,在今后繪圖時使用。
對象選擇器窗口
通過對象選擇按鈕,從元件庫中選擇對象,并置入對象選擇器窗口,供今后繪圖時使用。顯示對象的類型包括:設(shè)備,終端,管腳,圖形符號,標(biāo)注和圖形。
圖形編輯的基本操作
對象放置(ObjectPlacement)
放置對象的步驟如下(Toplaceanobject:)
1.根據(jù)對象的類別在工具箱選擇相應(yīng)模式的圖標(biāo)(modeicon)。2、根據(jù)對象的具體類型選擇子模式圖標(biāo)(sub-modeicon)。
3、假使對象類型是元件、端點、管腳、圖形、符號或標(biāo)記,從選擇器里(selector)選擇你想要的對象的名字。對于元件、端點、管腳和符號,可能首先需要從庫中調(diào)出。4、假使對象是有方向的,將會在預(yù)覽窗口顯示出來,你可以通過預(yù)覽對象方位按鈕對對象進行調(diào)整。
5、最終,指向編輯窗口并點擊鼠標(biāo)左鍵放置對象。選中對象(TagginganObject)
用鼠標(biāo)指向?qū)ο蟛Ⅻc擊右鍵可以選中該對象。該操作選中對象并使其高亮顯示,然后可以進行編輯。
?選中對象時該對象上的所有連線同時被選中。?要選中一組對象,可以通過依次在每個對象右擊選中每個對象的方式。也可以通過右鍵拖出一個選擇框的方式,但只有完全位于選擇框內(nèi)的對象才可以被選中。?在空白處點擊鼠標(biāo)右鍵可以取消所有對象的選擇。刪除對象(DeletinganObject)
用鼠標(biāo)指向選中的對象并點擊右鍵可以刪除該對象,同時刪除該對象的所有連線。拖動對象(DragginganObject)
用鼠標(biāo)指向選中的對象并用左鍵拖曳可以拖動該對象。該方式不僅對整個對象有效,而且對對象中單獨的labels也有效。
?假使WireAutoRouter功能被使能的話,被拖動對象上所有的連線將會重新排布或者'fixedup'。這將花費一定的時間(10秒左右),特別在對象有好多連線的狀況下,這時鼠標(biāo)指針將顯示為一個沙漏。
?假使你誤拖動一個對象,所有的連線都變成了一團糟,你可以使用Undo命令撤消操作恢復(fù)原來的狀態(tài)。
拖動對象標(biāo)簽(DragginganObjectLabel)
大量類型的對象有一個或多個屬性標(biāo)簽附著。例如,每個元件有一個“reference〞標(biāo)簽和一個“value〞標(biāo)簽??梢院芎唵蔚匾苿舆@些標(biāo)簽使你的電路圖看起來更美觀。
移動標(biāo)簽的步驟如下(Tomovealabel)1、選中對象
2、用鼠標(biāo)指向標(biāo)簽,按下鼠標(biāo)左鍵。
3、拖動標(biāo)簽到你需要的位置。假使想要定位的更確切的話,可以在拖動是改變捕獲的精度(使用F4、F3、F2、CTRL+F1鍵)。
4、釋放鼠標(biāo)
調(diào)整對象大小(ResizinganObject)
子電路(Sub-circuits)、圖表、線、框和圓可以調(diào)整大小。當(dāng)你選中這些對象時,對象周邊會出現(xiàn)黑色小方塊叫做“手柄〞,可以通過拖動這些“手柄〞來調(diào)整對象的大小。
調(diào)整對象大小的步驟如下(Toresizeanobject)1、選中對象
2、假使對象可以調(diào)整大小,對象周邊會出現(xiàn)黑色小方塊,叫做“手柄〞。
3、用鼠標(biāo)左鍵拖動這些“手柄〞到新的位置,可以改變對象的大小。在拖動的過程中手柄會消失以便不和對象的顯示混疊。調(diào)整對象的朝向(ReorientinganObject)
大量類型的對象可以調(diào)整朝向為0?,90?,270?,360?或通過x軸y軸鏡象。當(dāng)該類型對象被選中后,“RotationandMirror〞圖標(biāo)會從蘭色變?yōu)榧t色,然后就可以來改變對象的朝向。
調(diào)整對象朝向的步驟如下(Toreorientanobject)1、選中對象
2、用鼠標(biāo)左鍵點擊Rotation圖標(biāo)可以使對象逆時針旋轉(zhuǎn),用鼠標(biāo)右鍵點擊Rotation圖標(biāo)可以使對象順時針旋轉(zhuǎn)。
3、用鼠標(biāo)左鍵點擊Mirror圖標(biāo)可以使對象按x軸鏡象,用鼠標(biāo)右鍵點擊Mirror圖標(biāo)可以使對象按y軸鏡象。
毫無疑問當(dāng)RotationandMirror圖標(biāo)是紅色時,操作他們將回改變某個對象,即便你當(dāng)前沒有看到它,實際上,這中顏色的指示在你想對將要放置的新對象操作時是特別有用的。當(dāng)圖標(biāo)是紅色時,首先取消對象的選擇,此時圖標(biāo)會變成蘭色,說明現(xiàn)在可以“安全“調(diào)整新對象了。
編輯對象(EditinganObject)
大量對象具有圖形或文本屬性,這些屬性可以通過一個對話框進行編輯,這是一中很常見的操作,有多種實現(xiàn)方式。
編輯單個對象的步驟是(Toeditasingleobjectusingthemouse):1、選中對象
2、用鼠標(biāo)左鍵點擊對象。
連續(xù)編輯多個對象的步驟是(Toeditasuccessionofobjectsusingthemouse)1、選擇MainMode圖標(biāo),再選擇InstantEdit圖標(biāo)。2、依次用鼠標(biāo)左鍵點擊各個對象
以特定的編輯模式編輯對象的步驟是(Toeditanobjectandaccessspecialeditmodes:)1、指向?qū)ο?/p>
2、使用鍵盤CTRL+'E'
對于文本腳本來說,這將啟動外部的文本編輯器。假使鼠標(biāo)沒有指向任何對象的話,該命令將對當(dāng)前的圖進行編輯。
通過元件的名稱編輯元件的步驟如下(Toeditacomponentbyname:)1、鍵入'E'
2、在彈出的對話框中輸入元件的名稱(partID)。確定后將會彈出該項目中任何元件的編輯對話框,并非只限于當(dāng)前sheet的元件。編輯完后,畫面將會以該元件為中心重新顯示。你可以通過該方式來定位一個元件,即便你并不想對其進行編輯。
在OBJECTSPECIFICS這一節(jié)中將詳細說明對應(yīng)于每種對象類型的具體編輯操作方式。
編輯對象標(biāo)簽(EditingAnObjectLabel)
元件、端點、線和總線標(biāo)簽都可以象元件一樣編輯。
編輯單個對象標(biāo)簽的步驟是(Toeditasingleobjectlabelusingthemouse:)1、選中對象標(biāo)簽。
2、用鼠標(biāo)左鍵點擊對象。
連續(xù)編輯多個對象標(biāo)簽的步驟是(Toeditasuccessionofobjectlabelsusingthemouse:)1、選擇MainMode圖標(biāo),再選擇InstantEdit圖標(biāo)。2、依次用鼠標(biāo)左鍵點擊各個標(biāo)簽。
任何一種方式,都將彈出一個帶有LabelandStyle欄的對話框窗體??梢詤⒄罩改现蠩ditingLocalStyles這一節(jié)得到編輯local文本類型的詳細內(nèi)容??截愃羞x中的對象(CopyingallTaggedObjects)拷貝一整塊電路的方式(Tocopyasectionofcircuitry:)
1、選中需要的對象,具體的方式參照上文的TagginganObject部分。2、用鼠標(biāo)左鍵點擊Copy圖標(biāo)。
3、把拷貝的輪廓拖到需要的位置,點擊鼠標(biāo)左鍵放置拷貝。4、重復(fù)步驟[3]放置多個拷貝。5、點擊鼠標(biāo)右鍵終止
當(dāng)一組元件被拷貝后,他們的標(biāo)注自動重置為隨機態(tài),用來為下一步的自動標(biāo)注做準(zhǔn)備,防止出現(xiàn)重復(fù)的元件標(biāo)注。
移動所有選中的對象(MovingallTaggedObjects)移動一組對象的步驟是(Tomoveasetofobjects:)
1、選中需要的對象,具體的方式參照上文的TagginganObject部分。2、把輪廓拖到需要的位置,點擊鼠標(biāo)左鍵放置。
你可以使用塊移動的方式來移動一組導(dǎo)線,而不移動任何對象。更進一步的探討可以參照DraggingWires這一節(jié)。
刪除所有選中的對象(DeletingallTaggedObjects)刪除一組對象的步驟是(Todeleteagroupofobjects:)
1、選中需要的對象,具體的方式參照上文的TagginganOb
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度人工智能產(chǎn)業(yè)投資轉(zhuǎn)借款合作協(xié)議模板3篇
- 國防建設(shè)知識
- 二零二五年度個人知識產(chǎn)權(quán)侵權(quán)糾紛授權(quán)委托書3篇
- 二零二五年度商場消防安全責(zé)任協(xié)議書3篇
- 二零二五年度城市停車場信息化建設(shè)承包協(xié)議3篇
- 二零二五年辦公樓智能安防與保潔服務(wù)合同3篇
- 二零二五版海洋石油鉆井平臺外派海員聘用合同范本3篇
- 二零二五年度商品房團購項目合作代理協(xié)議3篇
- 二零二五年度高校研究生學(xué)術(shù)交流活動合作協(xié)議3篇
- 藝術(shù)地坪施工方案
- 衛(wèi)生健康系統(tǒng)安全生產(chǎn)隱患全面排查
- 媒介社會學(xué)備課
- GB/T 15114-2023鋁合金壓鑄件
- 三相分離器原理及操作
- 新教科版五年級下冊科學(xué)全冊每節(jié)課后練習(xí)+答案(共28份)
- 貨物驗收單表格模板
- 葫蘆島尚楚環(huán)保科技有限公司醫(yī)療廢物集中處置項目環(huán)評報告
- 600字A4標(biāo)準(zhǔn)作文紙
- GB/T 18015.2-2007數(shù)字通信用對絞或星絞多芯對稱電纜第2部分:水平層布線電纜分規(guī)范
- 2007年邁騰3.2發(fā)動機維修手冊
- 選擇性必修二課本活動題答案(教參) 高中地理湘教版(2019)選擇性必修二
評論
0/150
提交評論