


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Keil程序調(diào)試窗口上一講中我們學習了幾種常用的程序調(diào)試方法,這一講中將介紹Keil提供各種窗口如輸出窗口、觀察窗口、存儲器窗口、反匯編窗口、串行窗口等的用途,以及這些窗口的使用方法,并通過實例介紹這些窗口在調(diào)試中的使用。、程序調(diào)試時的常用窗口Keil軟件在調(diào)試程序時提供了多個窗口,主要包括輸出窗口(OutputWindows)、觀察窗口(Watch&CallStatckWindows)、存儲器窗口(MemoryWindow)、反匯編窗口(DissamblyWindow)串行窗口(SerialWindow)等。進入調(diào)試模式后,可以通過菜單View下的相應(yīng)命令打開或關(guān)閉這些窗口。圖1是輸
2、出窗口、觀察窗口和存儲器窗口,各窗口的大小可以使用鼠標調(diào)整。進入調(diào)試程序后,輸出窗口自動切換到Command頁。該頁用于輸入調(diào)試命令和輸出調(diào)試信息。對于初學者,可以暫不學習調(diào)試命令的使用方法。圖1調(diào)試窗口(命令窗口、存儲器窗口、觀察窗口),通過在Address后的編緝框內(nèi)輸入字母:數(shù)字”即可顯1、存儲器窗口nJSvMcm1。00oo00。4004b00$555555$5EqqqqyI*15*55551Irrnrta-we&存儲器窗口中可以顯示系統(tǒng)中各種內(nèi)存中的值示相應(yīng)內(nèi)存值,其中字母可以是C、D、I、X,分別代表代碼存儲空間、直接尋址的片內(nèi)存儲空間、間接尋址的片內(nèi)存儲空間、擴展的外部R
3、AM空間,數(shù)字代表想要查看的地址o例如輸入D:0即可觀察到地址0開始的片內(nèi)RAM單元值、鍵入C:0即可顯示從0開始的ROM單元中的值,即查看程序的二進制代碼。該窗口的顯示值可以以各種形式顯示,如十進制、十六進制、字符型等,改變顯示方式的方法是點鼠標右鍵,在彈出的快捷菜單中選擇,該菜單用分隔條分成三部份,其中第一部份與第二部份的三個選項為同一級別,選中第一部份的任一選項,內(nèi)容將以整數(shù)形式顯示,而選中第二部份的Ascii項則將以字符型式顯示,選中Float項將相鄰四字節(jié)組成的浮點數(shù)形式顯示、選中Double項則將相鄰8字節(jié)組成雙精度形式顯示。第一部份又有多個選擇項,其中Decimal項是一個開關(guān),
4、如果選中該項,則窗口中的值將以十進制的形式顯示,否則按默認的十六進制方式顯示。Unsigned和Signed后分別有圖2存儲器數(shù)值各種方式顯示選擇三個選項:Char、Int、Long,分別代表以單字節(jié)方式顯示、將相鄰雙字節(jié)組成整型數(shù)方式顯示、將相鄰四字節(jié)組成長整型方式顯示,而Unsigned和Signed則分別代表無符號形式和有符號形式,究竟從哪一個單元開始的相鄰單元則與你的設(shè)置有關(guān),以整型為例,如果你輸入的是I:0,那么00H和01H單元的內(nèi)容將會組成一個整型數(shù),而如果你輸入的是I:1,01H和02H單元的內(nèi)容全組成一個整型數(shù),以此類推。有關(guān)數(shù)據(jù)格式與C語言規(guī)定相同,請參IEnterByte
5、(5)atI:OxOEEnterExample:2tTesas-IIriiIr.M.iI考C語言書籍,默認以無符號單字節(jié)方式顯示。第三部份的ModifyMemoryatX:xx用于更改鼠標處的內(nèi)存單元值,選中該項即出現(xiàn)如圖3所示的對話框,可以在對話框內(nèi)輸入要修改的內(nèi)容。2、工程窗口寄存器頁圖3存儲器的值的修改圖4是工程窗口寄存器頁的內(nèi)容,寄存器頁包括了當前的工作寄存器組和系統(tǒng)寄存器,系統(tǒng)寄存器組有一些是實際存在的寄存器如A、B、DPTR、SP、PSW等,有一些是實際中并不存在或雖然存在卻不能對其操作的如PC、Status等。每當程序中執(zhí)行到對某寄存器的操作時,該寄存器會以反色(藍底白字)顯示,
6、用鼠標單擊然后按下F2鍵,即可修改該值。3、觀察窗口觀察窗口是很重要的一個窗口,工程窗口中僅可以觀察到工作寄存器和有限的寄存器如A、B、DPTR等,如果需要觀察其它的寄存器的值或者在高級語言編程時需要直接觀察變量,就要借助于觀察窗口其它窗口將在以下的實例中介紹。一般情況下,我們僅在單步執(zhí)行時才對變量的值的變化感興趣,全速運行時,變量的值是不變的,只有在程序停下來之后,才會將這些值最新的變化反映出來,但是,在一些特殊場合下我們也可能需要在全速運行時觀察變量的變化,此時可以點擊View->PeriodicWindowUpdata(周期更新窗口),確認該項處于被選中狀態(tài),即可在全速運行時動態(tài)地
7、觀察有關(guān)值的變化。但是,選中該項,將會使程序模擬執(zhí)行的速度變慢。二、各種窗口在程序調(diào)試中的用途以下通過一個高級語言程序來說明這些窗口的使用。例2:圖4工程窗口寄存器頁#include"reg51.h”sbitP1_0=P1A0;/定義P1.0voidmDelay(unsignedcharDelayTime)(unsignedintj=0;for(;DelayTime>0;DelayTime-)(for(j=0;j<125;j+)(;)voidmain()(unsignedinti;for(;)(mDelay(10);/延時10毫秒i+;if(i=10)(P1_0=!P1_
8、0;i=0;)這個程序的工作過程是:不斷調(diào)用延時程序,每次延時10毫秒,然后將變量I加1,隨后對變量I進行判斷,如果I的值等于10,那么將P1.0取反,并將I清0,最終的執(zhí)行效果是P1.0每0.1S取反一次輸入源程序并以exam2.c為文件名存盤,建立名為exam2的項目,將exam2.c加入項目,編譯、連接后按Ctrl+F5進入調(diào)試,按F10單步執(zhí)行。注意觀察窗口,其中有一個標簽頁為Locals,這一頁會自動顯示當前模塊中的變量名及變量值。可以看到窗口中有名為I的變量,其值隨著執(zhí)行的次數(shù)而逐漸加大,如果在執(zhí)行到mDelay(10)行時按F11跟蹤到mDelay函數(shù)內(nèi)部,該窗口的變量自動變?yōu)镈
9、elayTime和j。另外兩個標簽頁Watch#1和Watch#2可以加入自定義的觀察變量,點擊“typeF2toedit然后再按F2即可輸入變量,試著在Watch#1中輸入I,觀察它的變化。在程序較復(fù)雜,變量很多的場合,這兩個自定義觀察窗口可以篩選出我們自己感興趣的變量加以觀察。觀察窗口中變量的值不僅可以觀察,還可以修改,以該程序為例,I須加10次才能到10,為快速驗證是否可以正確執(zhí)行到P1_0=!P1_0行,點擊I后面的值,再按F2,該值即可修改,將I的值改到9,再次按F10單步執(zhí)行,即可以很快執(zhí)行到P1_0=!P1_0程序行。該窗口顯示的變量值可以以十進制或十六進制形式顯示,方法是在顯示
10、窗口點右鍵,在快捷菜單中選擇如圖5所示。Decinal點擊View->DissamblyWindow可以打開反匯編窗口,該窗口可以顯示反匯編后的代碼、源程序和相應(yīng)反匯編代碼的混合代碼,可以在該窗口進行在線匯編、利用該窗口跟蹤已找行的代碼在該窗口按匯編代碼的方式單步執(zhí)行這也是一個重要的窗口Mode是以混合方式顯,但卻無法知道程序到達打開反匯編窗口,點擊鼠標右鍵,出現(xiàn)快捷菜單,如圖6所示,其中Mixed示,AssemblyMode是以反匯編碼方式顯示。程序調(diào)試中常使用設(shè)置斷點然后全速運行的方式,在斷點處可以獲得各變量值斷點以前究竟執(zhí)行了哪些代碼,而這往往是需要了解的,為此,Keil提供了跟蹤
11、功能,在運行程序之前打開調(diào)試工具條上的允許跟蹤代碼開關(guān),然后全速運行程序,當程序停止運行后,點擊查看跟蹤代碼按鈕,自動切換到反匯編窗口,圖5設(shè)定觀察窗的顯示方式-59"C:0x002D64加C:0x002F4Ca,aC:O*IUMrtlyBrf.7:voidk*L44kl;0x00IEl|,gj*E:OjcOO1F喑:0x0020,1:勵*'Tr«*褊心4110x0022幻住,3,圖6反匯編窗口如圖6所示,其中前面標有-“”號的行就是中斷以前執(zhí)行的代碼,可以按窗口邊的上卷按鈕向上翻查看代碼執(zhí)行記錄。利用工程窗口可以觀察程序執(zhí)行的時間,下面我們觀察一下該例中延時程序的
12、延時時間是否滿足我們的要求,即是否確實延時10毫秒,展開工程窗口Regs頁中的Sys目錄樹,其中的Sec項記錄了從程序開始執(zhí)行到當前程序流逝的秒數(shù)。點擊RST按鈕以復(fù)位程序,Sec的值回零,按下F10鍵,程序窗口中的黃色箭頭指向mDelay(10)行,此時,記錄下Sec值為0.00038900,然后再按F10執(zhí)行完該段程序,再次查看Sec的值為0.01051200,兩者相減大約是0.01秒,所以延時時間大致是正確的。讀者可以試著將延時程序中的unsignedint改為unsignedchar試試看時間是否仍正確。注意,使用這一功能的前提是在項目設(shè)置中正確設(shè)置晶振的數(shù)值。Keil提供了串行窗口,
13、我們可以直接在串行窗口中鍵入字符,該字符雖不會被顯示出來,但卻能傳遞到仿真CPU中,如果仿真CPU通過串行口發(fā)送字符,那么這些字符會在串行窗口顯示出來,用該窗口可以在沒有硬件的情況下用鍵盤模擬串口通訊。下面通過一個例子說明Keil串行窗口的應(yīng)用。該程序?qū)崿F(xiàn)一個行編緝功能,每鍵入一個字母,會立即回顯到窗口中。編程的方法是通過檢測RI是否等于1來判斷串行口是否有字符輸入,如果有字符輸入,則將其送到SBUF,這個字符就會在串行窗口中顯示出來。其中ser_init是串行口初始化程序,要使用串行口,必須首先對串行口進行初始化。例3:MOVSP,#5FH;堆棧初始化CALLSER_INIT;串行口初始化L
14、OOP:JBCRI,NEXT;如果串口接收到字符,轉(zhuǎn)JMPLOOP;否則等待接收字符NEXT:MOVA,SBUF;從SBUF中取字符MOVSBUF,A;回送到發(fā)送SBUF中SEND:JBCTI,LOOP;發(fā)送完成,轉(zhuǎn)LOOPJMPSEND;否則等待發(fā)送完SER_INIT:;中斷初始化MOVSCON,#50HORLTMOD,#20HORLPCON,#80HMOVTH1,#0FDH;設(shè)定波特率SETBTR1;定時器1開始運行SETBREN;允許接收SETBSM2RETEND輸入源程序,并建立項目,正確編譯、連接,進入調(diào)試后,全速運行,點擊串行窗口1按鈕,即在原源程序窗口位置出現(xiàn)一個空白窗口,擊鍵,相應(yīng)的字母就會出現(xiàn)在該窗口中
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 監(jiān)理工程師職業(yè)素養(yǎng)與法律法規(guī)遵守考核試卷
- 入院護理宣教
- 食管癌護理查房
- 蘇州工藝美術(shù)職業(yè)技術(shù)學院《韓語語法三》2023-2024學年第一學期期末試卷
- 江蘇省宿遷2024-2025學年初三全真模擬考試(一)生物試題試卷含解析
- 烏魯木齊市沙依巴克區(qū)2025年五下數(shù)學期末調(diào)研模擬試題含答案
- 江西省樟樹市2025年初三4月教學質(zhì)量檢測試題生物試題含解析
- 江西財經(jīng)大學現(xiàn)代經(jīng)濟管理學院《基礎(chǔ)俄語Ⅳ》2023-2024學年第一學期期末試卷
- 民辦四川天一學院《醫(yī)學文獻檢索》2023-2024學年第一學期期末試卷
- 吉林省白山市江源縣2025年數(shù)學五下期末考試模擬試題含答案
- 腎臟移植課件
- 食品生產(chǎn)許可審查通則解讀課件
- 美麗的晉祠-完整版課件
- 醫(yī)院“雙培養(yǎng)”制度
- 時區(qū)與區(qū)時課件
- 許慎《說文解字》(全文)
- DB34∕T 1948-2013 建設(shè)工程造價咨詢檔案立卷標準
- 通用門座機安裝工藝2
- 企業(yè)集團財務(wù)管理綜合練習計算
- 養(yǎng)老機構(gòu)服務(wù)高質(zhì)量115項明細
- 圓管涵結(jié)構(gòu)計算
評論
0/150
提交評論