Keil程序調(diào)試窗口1,存儲器窗口_第1頁
Keil程序調(diào)試窗口1,存儲器窗口_第2頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Keil 程序調(diào)試窗口 上一講中我們學(xué)習(xí)了幾種常用的程序調(diào)試方法,這一講中將介紹 Keil 提供各種窗口如 輸出窗口、觀察窗 口、存儲器窗口、反匯編窗口、串行窗口等的用途,以及這些窗口的使用 方法,并通過實例介紹這些窗口 在調(diào)試中的使用。一、程序調(diào)試時的常用窗口Keil 軟件在調(diào)試程序時提供了多個窗口,主要包括輸出窗口( Output Windows )、觀察 窗口( Watch&Ca ll StatckWindows )、存儲器窗口( Memory Window )、反匯編窗口( Dissambly Window )串行窗口( S erial Window )等。進入調(diào)試模式后,可以通過菜單

2、 View 下的相應(yīng)命 令打開或關(guān)閉這些窗口。圖 1 是輸出窗口、觀察窗口和存儲器窗口,各窗口的大小可以使用鼠標調(diào)整。進入調(diào)試 程序后,輸出窗 口自動切換到 Command 頁。該頁用于輸入調(diào)試命令和輸出調(diào)試信息。對于 初學(xué)者,可以暫不學(xué)習(xí)調(diào)試 命令的使用方法。圖 1 調(diào)試窗口(命令窗口、存儲器窗口、觀察窗口)1、存儲器窗口歡迎下載2存儲器窗口中可以顯示系統(tǒng)中各種內(nèi)存中的值,通過在Address 后的編緝框內(nèi)輸入 字 母:數(shù)字”即可顯示相應(yīng)內(nèi)存值,其中字母可以是C、D、I、X,分別代表代碼存儲空間、直接尋址的片內(nèi)存儲空間、間接尋址的片內(nèi)存儲空間、擴展的外部RAM 空間,數(shù)字代表想要查看的地址。

3、例如輸入D: 0 即可觀察到地址 0 開始的片內(nèi) RAM 單元值、鍵入 C: 0 即可顯示從 0 開始的 ROM 單元中的值,即查看程序的 二進制代碼。該窗口的顯示值可以以各種形式顯示,如十進制、十六進制、字符型等,改變顯示方式的方法是點鼠標右鍵, 在彈岀的快捷菜單中選擇, 該菜單用分隔條分成三部份, 其中第一部份與第二部份的三 個選項為同 一級別,選中第一部份的任一選項,內(nèi)容將以整數(shù)形式顯示,而選中第二部份的 Ascii 項則將以字符型式顯示,選中Float 項將相鄰四字節(jié)組成的浮點數(shù)形式顯示、選中 Double 項則將相鄰 8 字節(jié)組成雙精度形式顯示。第一部份又有多個選擇項,其中 Deci

4、mal 項是一個開關(guān),如果選中該項,則窗口中的值將以十進制的形式顯示,否則按默認的十六進制方式顯示。Unsigned 和 Signed 后分別有圖2存儲器數(shù)值各種方式顯示選擇三個選項:Char、Int、Long,分別代表以單字節(jié)方式顯示、將相鄰雙字節(jié)組成整型數(shù)方式顯示、將相鄰四字節(jié)組成長整型方式顯示,而Unsigned 和 Signed 則分別代表無符號形式和有符號形式,究竟從哪一個單元開始的相鄰單元則與你的設(shè)置有關(guān),以整型為例,如果你輸入的是 1:0,歡迎下載3那么 00H 和 01H 單元的內(nèi)容將會組成一個整型數(shù),而如果你輸入的是I : 1, 01H 和 02H 單元的內(nèi)容全組成一個整型數(shù)

5、,以此類推。有關(guān)數(shù)據(jù)格式與C 語言規(guī)定相同,請參考 C 語言書籍,默認以無符號單字節(jié)方式顯示。第三部份的 Modify Memory at X: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、觀察窗口歡迎下載4觀察窗口是很重要的一個窗口,工程窗口中僅可以觀察到工作寄存器和有限的寄存器如A、B、DPTR 等,如果需要觀 察其它的寄存器的值或者在高級語言編程時需要直接觀察變量,就要借助于觀察窗口了。其它窗口將在以下的實例中介紹。一般情況下,我們僅在單步執(zhí)行時才對變量的值的變化感興趣,全速運行時,變量的值是不變的,只有在程序停下來之后,才會將這些值最新的變化反映岀來,但是,在一些特殊場合下我們也可能需要在全速運行時觀察變量的變化,此時可以點擊 View-Periodic Window Updata(周期更新窗口),確認該項處于被選中狀態(tài),即可在全速運

7、行時動態(tài)地觀察有關(guān)值的變化。但是,選中該項,將會使程序模擬執(zhí)行的速度變慢。二、各種窗口在程序調(diào)試中的用途以下通過一個高級語言程序來說明這些窗口的使用。例2:圖 4 工程窗口寄存器頁#include reg51.h sbit P1_0=P1A0; 定義 P1.0 void mDelay(unsigned char DelayTime) unsigned int j=0;for(;DelayTime0;DelayTime-) for(j=0;jDissambly Window 可以打開反匯編窗口,該窗口可以顯示反匯編后的代碼、源程序和相應(yīng)反匯編代 碼的混合代碼,可以在該窗口進行在線匯編、利用該窗口

8、跟蹤已找行的代碼、在該窗口按匯編代碼的方式單步執(zhí)行,這也是一個重要的窗口。打開反匯編窗口,點擊鼠標右鍵,出現(xiàn)快捷菜單,如圖6 所示,其中 Mixed Mode 是以混合方式顯示,Assembly Mode 是以反匯編碼方式顯示。程序調(diào)試中常使用設(shè)置斷點然后全速運行的 方式,在斷點處可以獲得各變量值,但卻無法知道程序到達斷點以前究竟執(zhí)行了哪些代碼,而這 往往是需要了解的,為此, Keil 提供了跟蹤功能, 在運行程序之前 打開調(diào)試工具條上的允許跟蹤代 碼開關(guān),然后全速運行程序,當程序停止運行后,點擊查看跟蹤代碼按鈕,自動切換到反匯編窗口,圖 5 設(shè)定觀察窗的顯示方式圖 6 反匯編窗口如圖 6 所

9、示,其中前面標有 -”號的行就是中斷以前執(zhí)行的代碼,可以按窗口邊的上卷按鈕向上翻查看代碼執(zhí)行記錄。利用工程窗口可以觀察程序執(zhí)行的時間, 下面我們觀察一下該例中延時程序的延時時間是否滿足我們的要求,即是否確實延時 10 毫秒,展開工程窗口 Regs 頁中的 Sys 目錄樹,其 中的 Sec 項記錄了從程序開 始執(zhí)行到當前歡迎下載7程序流逝的秒數(shù)。點擊 RST 按鈕以復(fù)位程序,Sec 的值回零,按下 F10 鍵,程序窗口中的 黃色箭頭指向 mDelay(10)行,此時,記錄下 Sec 值為0.00038900,然后再按 F10 執(zhí)行完該段程序,再次查看 Sec 的值為 0.01051200,兩者相

10、減大 約是 0.01 秒,所以延時時間大致是正確的。讀者可以試著將延時程序中的unsigned int 改為 unsigned char 試試看時間是否仍正確。注意,使用這一功能的前提是在項目設(shè)置中正確設(shè)置晶振的數(shù)值。Keil 提供了串行窗口,我們可以直接在串行窗口中鍵入字符,該字符雖不會被顯示岀來,但卻能傳遞到仿真 CPU 中,如果仿真 CPU 通過串行口發(fā)送字符,那么這些字符會在串行窗口顯示出來,用該窗口可以在沒有硬件的情況下用鍵盤模擬串口通訊。下面通過一個例子說明 Keil 串行窗口的應(yīng)用。該程序?qū)崿F(xiàn)一個行編緝功能,每鍵入一個字母,會立即回顯到窗歡迎下載8口中。編程的方法是通過檢測RI

11、是否等于 1 來判斷串行口是否有字符輸入,如果有字符輸入,則將其送到 SBUF,這個字符就會在串行窗口中顯示出來。其中ser_init 是串行口初始 化程序,要使用串行口,必須首先對串行口進行初始化。例3 :MOV SP,#5FH ;堆棧初始化CALL SER_INIT ;串行口初始化LOOP:JBC RI,NEXT ;如果串口接收到字 符,轉(zhuǎn)JMP LOOP;否則等待接收字符NEXT:MOV A,SBUF ;從 SBUF 中取字符MOV SBUF,A ;回送到發(fā)送 SBUF 中SEND:歡迎下載9JBC Tl,LOOP;發(fā)送完成,轉(zhuǎn) LOOPJMP SEND ;否則等待發(fā)送完SER_INIT:;中斷初始化MOV SCON,#5OH ORL TMOD,#2OH ORL PCON,#8OHMOV TH1,#0FDH ;設(shè)定波特率SETB TR1 淀時器 1 開始運行SETB REN ;允許接收SETB SM2RET END輸入源程序,并建立項目,正確編譯、連接,進入調(diào)試后,全速運行,點擊串行窗口1 按鈕,即在原源程序窗口位置岀現(xiàn)一個空白窗口,擊鍵,相應(yīng)的字母就會岀現(xiàn)在該窗口中。在窗口中擊鼠標右鍵,岀現(xiàn)一個彈出式菜單,選擇 “Ascii Mode 即以 Ascii 碼的方式顯

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論