資料介紹
本文將介紹Keil提供各種窗口如輸出窗口、觀察窗口、存儲(chǔ)器窗口、反匯編窗口、串行窗口等的用途,以及這些窗口的使用方法,并通過實(shí)例介紹這些窗口在調(diào)試中的使用。
一、程序調(diào)試時(shí)的常用窗口
??
Keil軟件在調(diào)試程序時(shí)提供了多個(gè)窗口,主要包括輸出窗口(Output Windows)、觀察窗口(Watch&Call Statck Windows)、存儲(chǔ)器窗口(Memory Window)、反匯編窗口(Dissambly Window)串行窗口(Serial Window)等。進(jìn)入調(diào)試模式后,可以通過菜單View下的相應(yīng)命令打開或關(guān)閉這些窗口。
圖1是輸出窗口、觀察窗口和存儲(chǔ)器窗口,各窗口的大小可以使用鼠標(biāo)調(diào)整。進(jìn)入調(diào)試程序后,輸出窗口自動(dòng)切換到Command頁。該頁用于輸入調(diào)試命令和輸出調(diào)試信息。對(duì)于初學(xué)者,可以暫不學(xué)習(xí)調(diào)試命令的使用方法。
1、存儲(chǔ)器窗口
存儲(chǔ)器窗口中可以顯示系統(tǒng)中各種內(nèi)存中的值,通過在Address后的編緝框內(nèi)輸入“字母:數(shù)字”即可顯示相應(yīng)內(nèi)存值,其中字母可以是C、D、I、X,分別代表代碼存儲(chǔ)空間、 直接尋址的片內(nèi)存儲(chǔ)空間、間接尋址的片內(nèi)存儲(chǔ)空間、擴(kuò)展的外部RAM空間,數(shù)字代表想要查看的地址。例如輸入D:0即可觀察到地址0開始的片內(nèi)RAM單元值、鍵入C:0即可顯示從0開始的ROM單元中的值,即查看程序的二進(jìn)制代碼。該窗口的顯示值可以以各種形式顯示,如十進(jìn)制、十六進(jìn)制、字符型等,改變顯示方式的方法是點(diǎn)鼠標(biāo)右鍵,在彈出的快捷菜單中選擇,該菜單用分隔條分成三部份,其中第一部份與第二部份的三個(gè)選項(xiàng)為同一級(jí)別,選中第一部份的任一選項(xiàng),內(nèi)容將以整數(shù)形式顯示,而選中第二部份的Ascii項(xiàng)則將以字符型式顯示,選中Float項(xiàng)將相鄰四字節(jié)組成的浮點(diǎn)數(shù)形式顯示、選中Double項(xiàng)則將相鄰8字節(jié)組成雙精度形式顯示。第一部份又有多個(gè)選擇項(xiàng),其中Decimal項(xiàng)是一個(gè)開關(guān),如果選中該項(xiàng),則窗口中的值將以十進(jìn)制的形式顯示,否則按默認(rèn)的十六進(jìn)制方式顯示。Unsigned和Signed后分別有三個(gè)選項(xiàng):Char、Int、Long,分別代表以單字節(jié)方式顯示、將相鄰雙字節(jié)組成整型數(shù)方式顯示、將相鄰四字節(jié)組成長(zhǎng)整型方式顯示,而Unsigned和Signed則分別代表無符號(hào)形式和有符號(hào)形式,究竟從哪一個(gè)單元開始的相鄰單元?jiǎng)t與你的設(shè)置有關(guān),以整型為例,如果你輸入的是I:0,那么00H和01H單元的內(nèi)容將會(huì)組成一個(gè)整型數(shù),而如果你輸入的是I:1,01H 和02H單元的內(nèi)容全組成一個(gè)整型數(shù),以此類推。有關(guān)數(shù)據(jù)格式與C語言規(guī)定相同,請(qǐng)參考C語言書籍,默認(rèn)以無符號(hào)單字節(jié)方式顯示。第三部份的Modify Memory at X:xx用于更改鼠標(biāo)處的內(nèi)存單元值,選中該項(xiàng)即出現(xiàn)如圖3所示的對(duì)話框,可以在對(duì)話框內(nèi)輸入要修改的內(nèi)容。
2、工程窗口寄存器頁
圖4是工程窗口寄存器頁的內(nèi)容,寄存器頁包括了當(dāng)前的工作寄存器組和系統(tǒng)寄存器, 系統(tǒng)寄存器組有一些是實(shí)際存在的寄存器如A、B、DPTR、SP、PSW等,有一些是實(shí)際中并不存在或雖然存在卻不能對(duì)其操作的如PC、Status等。每當(dāng)程序中執(zhí)行到對(duì)某寄存器的操作時(shí),該寄存器會(huì)以反色(藍(lán)底白字)顯示,用鼠標(biāo)單擊然后按下F2鍵,即可修改該值。
3、觀察窗口
觀察窗口是很重要的一個(gè)窗口,工程窗口中僅可以觀察到工作寄存器和有限的寄存器如A、B、DPTR等,如果需要觀察其它的寄存器的值或者在高級(jí)語言編程時(shí)需要直接觀察變量,就要借助于觀察窗口了。
其它窗口將在以下的實(shí)例中介紹。
一般情況下,我們僅在單步執(zhí)行時(shí)才對(duì)變量的值的變化感興趣,全速運(yùn)行時(shí),變量的值是不變的,只有在程序停下來之后,才會(huì)將這些值最新的變化反映出來,但是,在一些特殊場(chǎng)合下我們也可能需要在全速運(yùn)行時(shí)觀察變量的變化,此時(shí)可以點(diǎn)擊View->Periodic Window Updata(周期更新窗口),確認(rèn)該項(xiàng)處于被選中狀態(tài),即可在全速運(yùn)行時(shí)動(dòng)態(tài)地觀察有關(guān)值的變化。但是,選中該項(xiàng),將會(huì)使程序模擬執(zhí)行的速度變慢。
二、各種窗口在程序調(diào)試中的用途 以下通過一個(gè)高級(jí)語言程序來說明這些窗口的使用。
例2,
#include "reg51.h"
sbit P1_0=P1^0; //定義P1.0
void mDelay(unsigned char DelayTime)
{ unsigned int j=0;
for(;DelayTime>0;DelayTime--)
{ for(j=0;j
}
void main()
{ unsigned int i;
for(;;){ mDelay(10); //延時(shí)10毫秒
i++;
if(i==10)
{ P1_0=!P1_0;
i=0; }
} }
這個(gè)程序的工作過程是:不斷調(diào)用延時(shí)程序,每次延時(shí)10毫秒,然后將變量I加1,隨后對(duì)變量I進(jìn)行判斷,如果I的值等于10,那么將P1.0取反,并將I清0,最終的執(zhí)行效果圖4 工程窗口寄存器頁圖3存儲(chǔ)器的值的修改是P1.0每0.1S取反一次。
輸入源程序并以exam2.c為文件名存盤,建立名為exam2的項(xiàng)目,將exam2.c加入項(xiàng)目, 編譯、連接后按Ctrl+F5進(jìn)入調(diào)試,按F10單步執(zhí)行。注意觀察窗口,其中有一個(gè)標(biāo)簽頁為 Locals,這一頁會(huì)自動(dòng)顯示當(dāng)前模塊中的變量名及變量值??梢钥吹酱翱谥杏忻麨镮的變量,其值隨著執(zhí)行的次數(shù)而逐漸加大,如果在執(zhí)行到mDelay(10)行時(shí)按F11跟蹤到mDelay函數(shù)內(nèi)部,該窗口的變量自動(dòng)變?yōu)镈elayTime和j。另外兩個(gè)標(biāo)簽頁Watch #1和Watch #2可以加入自定義的觀察變量,點(diǎn)擊“type F2 to edit”然后再按F2即可輸入變量,試著在Watch #1 中輸入I,觀察它的變化。在程序較復(fù)雜,變量很多的場(chǎng)合,這兩個(gè)自定義觀察窗口可以篩選出我們自己感興趣的變量加以觀察。觀察窗口中變量的值不僅可以觀察,還可以修改,以該程序?yàn)槔?,I須加10次才能到10,為快速驗(yàn)證是否可以正確執(zhí)行到P1_0=!P1_0行,點(diǎn)擊 I后面的值,再按F2,該值即可修改,將I的值改到9,再次按F10單步執(zhí)行,即可以很快執(zhí)行到P1_0=!P1_0程序行。該窗口顯示的變量值可以以十進(jìn)制或十六進(jìn)制形式顯示,方法是在顯示窗口點(diǎn)右鍵,在快捷菜單中選擇如圖5所示。
點(diǎn)擊View->Dissambly Window可以打開反匯編窗口,該窗口可以顯示反匯編后的代碼、源程序和相應(yīng)反匯編代碼的混合代碼,可以在該窗口進(jìn)行在線匯編、利用該窗口跟蹤已找行的代碼、在該窗口按匯編代碼的方式單步執(zhí)行,這也是一個(gè)重要的窗口。打開反匯編窗口,點(diǎn)擊鼠標(biāo)右鍵,出現(xiàn)快捷菜單,如圖6所示,其中Mixed Mode是以混合方式顯示,Assembly Mode是以反匯編碼方式顯示。
程序調(diào)試中常使用設(shè)置斷點(diǎn)然后全速運(yùn)行的方式,在斷點(diǎn)處可以獲得各變量值,但卻無法知道程序到達(dá)斷點(diǎn)以前究竟執(zhí)行了哪些代碼,而這往往是需要了解的,為此,Keil提供了跟蹤功能,在運(yùn)行程序之前打開調(diào)試工具條上的允許跟蹤代碼開關(guān),然后全速運(yùn)行程序,當(dāng)程序停止運(yùn)行后,點(diǎn)擊查看跟蹤代碼按鈕,自動(dòng)切換到反匯編窗口,如圖6所示,其中前面標(biāo)有“-”號(hào)的行就是中斷以前執(zhí)行的代碼,可以按窗口邊的上卷按鈕向上翻查看代碼執(zhí)行記錄。
利用工程窗口可以觀察程序執(zhí)行的時(shí)間,下面我們觀察一下該例中延時(shí)程序的延時(shí)時(shí)間是否滿足我們的要求,即是否確實(shí)延時(shí)10毫秒,展開工程窗口Regs頁中的Sys目錄樹,其中的Sec項(xiàng)記錄了從程序開始執(zhí)行到當(dāng)前程序流逝的秒數(shù)。點(diǎn)擊RST按鈕以復(fù)位程序,Sec 的值回零,按下F10鍵,程序窗口中的黃色箭頭指向mDelay(10)行,此時(shí),記錄下Sec值為0.00038900,然后再按F10執(zhí)行完該段程序,再次查看Sec的值為0.01051200,兩者相減大約是0.01秒,所以延時(shí)時(shí)間大致是正確的。讀者可以試著將延時(shí)程序中的unsigned int改為 unsigned char試試看時(shí)間是否仍正確。注意,使用這一功能的前提是在項(xiàng)目設(shè)置中正確設(shè)置晶振的數(shù)值。
Keil提供了串行窗口,我們可以直接在串行窗口中鍵入字符,該字符雖不會(huì)被顯示出來, 但卻能傳遞到仿真CPU中,如果仿真CPU通過串行口發(fā)送字符,那么這些字符會(huì)在串行窗口顯示出來,用該窗口可以在沒有硬件的情況下用鍵盤模擬串口通訊。下面通過一個(gè)例子說明Keil串行窗口的應(yīng)用。該程序?qū)崿F(xiàn)一個(gè)行編緝功能,每鍵入一個(gè)字母,會(huì)立即回顯到窗口中。編程的方法是通過檢測(cè)RI是否等于1來判斷串行口是否有字符輸入,如果有字符輸入,則將其送到SBUF,這個(gè)字符就會(huì)在串行窗口中顯示出來。其中ser_init是串行口初始化程序,要使用串行口,必須首先對(duì)串行口進(jìn)行初始化。
例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,
JBC TI,LOOP ;發(fā)送完成,轉(zhuǎn)LOOP
JMP SEND ;否則等待發(fā)送完
SER_INIT,;中斷初始化
MOV SCON,#50H
ORL TMOD,#20H
ORL PCON,#80H
MOV TH1,#0FDH ;設(shè)定波特率
SETB TR1 ;定時(shí)器1開始運(yùn)行
SETB REN ;允許接收
SETB SM2
RET
END
輸入源程序,并建立項(xiàng)目,正確編譯、連接,進(jìn)入調(diào)試后,全速運(yùn)行,點(diǎn)擊串行窗口1 按鈕,即在原源程序窗口位置出現(xiàn)一個(gè)空白窗口,擊鍵,相應(yīng)的字母就會(huì)出現(xiàn)在該窗口中。 在窗口中擊鼠標(biāo)右鍵,出現(xiàn)一個(gè)彈出式菜單,選擇“Ascii Mode”即以Ascii碼的方式顯示接收到的數(shù)據(jù);選擇“Hex Mode”以十六進(jìn)制碼方式顯示接收到的數(shù)據(jù);選擇“Clear Window” 可以清除窗口中顯示的內(nèi)容。
由于部份CPU具有雙串口,故Keil提供了兩個(gè)串行窗口,我們選用的芯片只有一個(gè)串行口,所以Serial 2串行窗口不起作用。
小技巧:凡是鼠標(biāo)單擊然后按F2的地方都可以用鼠標(biāo)連續(xù)單擊兩次(注意:不是雙擊) 來替代。
(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 第4章:程序編寫和調(diào)試環(huán)境簡(jiǎn)介PPT下載 13次下載
- Keil C51 V9.00開發(fā)環(huán)境程序下載 108次下載
- 串口調(diào)試助手V2.2軟件程序下載 47次下載
- keil軟件學(xué)習(xí)資料下載 20次下載
- Matlab系列之程序調(diào)試資料下載
- 總結(jié):這些Keil 軟件仿真的串口調(diào)試技巧,你都記熟了沒有?資料下載
- 你的單片機(jī)程序怎么調(diào)試?我教你用Keil uVision2軟件如何調(diào)試資料下載
- STM32 使用 Keil MDK 中的軟件邏輯分析儀參與硬件調(diào)試資料下載
- 看碼源總結(jié)Keil C 51單片機(jī)延時(shí)程序編寫資料下載
- keil調(diào)試工具Keil Array Visualization V1.0示波器工具軟件和教程 95次下載
- STM32的調(diào)試實(shí)例的項(xiàng)目程序庫和調(diào)試實(shí)例資料合集免費(fèi)下載 94次下載
- keil3程序調(diào)試窗口 7次下載
- keil調(diào)試各種窗口用途介紹 90次下載
- Keil程序調(diào)試窗口應(yīng)用
- Keil程序調(diào)試窗口
- 怎樣將keil中的程序導(dǎo)出 1884次閱讀
- keil實(shí)用技巧 956次閱讀
- keil5怎么把程序燒到板子上 2348次閱讀
- 如何用keil給單片機(jī)燒錄程序 3796次閱讀
- 在Keil中使用STM32CubeProgrammer 2778次閱讀
- 嵌入式程序基于源代碼仿真調(diào)試 1314次閱讀
- Xilinx FPGA獨(dú)立的下載和調(diào)試工具LabTools下載、安裝、使用教程 7014次閱讀
- 將Keil μVision調(diào)試器與DS89C4x0配合使用 1173次閱讀
- 使用Keil下載Hex文件進(jìn)STM32 8769次閱讀
- MATLAB程序調(diào)試的方法及工具介紹 6879次閱讀
- KEIL MDK簡(jiǎn)介,如何安裝KEIL MDK下載程序 2.7w次閱讀
- 介紹利用Keil的軟件仿真功能來實(shí)現(xiàn)51單片機(jī)串口調(diào)試用戶程序的方法 3w次閱讀
- keil uvision2中文版|keil uvision2漢化補(bǔ)丁下載 1w次閱讀
- keil uvision2下載|keil uvision2漢化免費(fèi)版下載 1.1w次閱讀
- 單片機(jī)Keil軟件仿真與調(diào)試技巧 6w次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論