keil調(diào)試經(jīng)驗_第1頁
keil調(diào)試經(jīng)驗_第2頁
keil調(diào)試經(jīng)驗_第3頁
keil調(diào)試經(jīng)驗_第4頁
keil調(diào)試經(jīng)驗_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、KEIL調(diào)試高級技巧在調(diào)試狀態(tài),Debug菜單項中的命令可以使用了,有關(guān)編譯的工具欄按鈕消 失了,出現(xiàn)了一個用于運(yùn)行和調(diào)試的工具欄,Debug菜單上的大部份命令都有相 應(yīng)的快捷按鈕。si H ? X)從 左到右依次是復(fù)位、運(yùn)行、暫停、單步跟蹤、單步、執(zhí)行完當(dāng)前子程序、 運(yùn)行到當(dāng)前行、下一狀態(tài)、打開跟蹤、觀察跟蹤、反匯編窗口、觀察窗口、代碼 作用范圍分析、1#串行窗口、內(nèi)存窗口、性能分析、工具按鈕命令; 然后按一下圖示第二個“運(yùn)行”按鈕。連接上相關(guān)的實驗資源,本實驗用一條 8PIN的數(shù)據(jù)排線把實驗儀的CPI部份的P1 口( JP44)連接到八路指示燈部份的 JP32。這時你會看到實驗儀的八個紅色

2、 LED輪流點(diǎn)亮,表示運(yùn)行成功,也可以 查看相關(guān)的變量和參數(shù),非常方便。1單步跟蹤運(yùn)行使用菜單Debug->Step或上圖第四個單步運(yùn)行按鈕或使用快捷鍵 F11可以單 步跟蹤執(zhí)行程序,在這里我們按下 F11鍵,即可執(zhí)行該箭頭所指程序行,每按 一次F11,可以看到源程序窗口的左邊黃色調(diào)試箭頭指向下一行,如果程序中有Delay延時子程序,則會進(jìn)入延時程序中運(yùn)行。2. 單步運(yùn)行如果Delay程序有錯誤,可以通過單步跟蹤執(zhí)行來查找錯誤,但是如果 Delay 程序已正確,每次進(jìn)行程序調(diào)試都要反復(fù)執(zhí)行這些程序行, 會使得調(diào)試效率很低, 為此,可以在調(diào)試時使用F10來替代F11 (也可使用菜單Step

3、 Over或相應(yīng)的命令按鈕),在main函數(shù)中執(zhí)行到Delay時將該行作為一條語句快速執(zhí)行完畢。為了更好的進(jìn)行對比,我們重新進(jìn)入仿真環(huán)境,將反匯編窗口關(guān)閉,不斷按F10鍵,可以看到在源程序窗口中的左邊黃色調(diào)試箭頭不會進(jìn)入到延時子程序。3. 全速運(yùn)行點(diǎn)擊工具欄上的“運(yùn)行”按鈕或按 F5鍵啟動全速運(yùn)行,全速執(zhí)行程序,此時用戶板上的P1 口所接LED以流水燈狀態(tài)顯示。4. 暫停點(diǎn)擊工具欄上的按鈕,此時用戶板上的P1 口所接LED停止以流水燈狀態(tài)顯示,只有一個LED燈點(diǎn)亮(取決于暫停前的P1的值)。5觀察/修改寄存器的值寄存器值r0rlOxffr2Oiffr3r<Oiffr5OiEfr£

4、;打_0rd2OkjOObOkOO0x09dplrOxOOWPC $C:0mPST0x00Project窗口在進(jìn)入調(diào)試狀態(tài)后顯示Regs頁的內(nèi)容,包括工作寄存器R0R7的內(nèi)容和累加器 A、寄存 器B、堆棧指針SP的內(nèi)容。用戶除了可以觀察以外還可自行修改,例如將寄存器a的值0x62改為0x85方法一:用鼠標(biāo)點(diǎn)擊選中單元a,然后再單擊其數(shù)值位置,出現(xiàn)文字框后輸入 0x85按回車鍵即可;方法二:在命令行窗口,輸入 A=0x85,按回車鍵將把A的數(shù)值設(shè)置為0x856. 觀察/修改存儲器的數(shù)據(jù)點(diǎn)擊菜單“視圖 View-儲存器窗口 MemorWindows ,便會打開儲存器 Memory窗口(如窗口已打開

5、,則會關(guān)閉),Memory窗口可以同時顯示4個不同的存儲 器區(qū)域,點(diǎn)擊窗口下部分的編號可以相互切換顯示。在儲存器1(Memory#)的地址輸入欄內(nèi)輸入“ D:0e0h”,按回車鍵后,可以 從內(nèi)部可直接尋址RAM的e0H地址處開始顯示,e0H地址的值就是寄存器a 的值,應(yīng)與主寄存器窗口下的值相同。堆址:|D:O«QhD:OxEO:D :DsiEB: D:OxFO:D:0xF8:D : 0x00:D :0x08:DzOxlO; DiQxie:D:0x20:O1QFF7FFF nu_yoFF-UFFFp- o f o F o RI fofofofffF H UL -u F- F kLF D

6、 F 8 F F FFOFOFOFFFFGFOFGFFFFnuFnuFDFFF FOFOFnuFFF Ltj _m- Ltj nV tL FOFQFOFFFFFFFCFFFFFFFF9FFFFFQFOAOFFFFOFOFOFFFITTRk有儲器占擔(dān)誥町人存儲器常入襯點(diǎn)擊窗口下部分的儲存器 2(Memory#2,在Address輸入欄內(nèi)輸入“D:0e0h”,按回車鍵后,可以從內(nèi)部可間接尋址 RAM的e0H地址處開始顯示。點(diǎn)擊窗口下部分的 Memory#3在Address輸入欄內(nèi)輸入“ C:0x0021”,按 回車鍵后,可以從代碼區(qū)域0000H地址處開始顯示,這時各地址值應(yīng)與在反匯編 窗口中的值相

7、同。點(diǎn)擊窗口下部分的 Memory#4在Address輸入欄內(nèi)輸入“ X:00h”,按回 車鍵后,可以從xdata RAM區(qū)域0000H地址處開始顯示。通過Memory窗口修改數(shù)據(jù)在Memory窗口中顯示的數(shù)據(jù)可以修改。例如,要改動 data區(qū)域OXE0地址的數(shù)據(jù)內(nèi)容:把鼠標(biāo)移動到該數(shù)據(jù)的顯示位置,按動鼠標(biāo)右鍵在彈出的菜單中選中:更新儲存器“Modify Memoryat D:0xE0”,在彈出對話框的文本輸入欄內(nèi)輸入相應(yīng)數(shù)值按回車鍵或點(diǎn)擊0K,修改完成90FD:OxEO: D:0xE8: D:OxFO: D:0xF8;匸音 err re 百口 rr 口百 十進(jìn)制D:0x00: F0 F F

8、FD:0x08:D:010:D:Ox 18:D:0x20:心網(wǎng) 浮點(diǎn)3HEM愛暫存儲鶉D:OxEO一 J1L通過命令行查看數(shù)據(jù) 例如,我們想查看data空間從0x01到0x03地址的內(nèi)容,可在命令輸入窗口 輸入“ d d:0x01,03H ”, 回車即可完成,d表示data 空間,0x01表示起始地址,03H表示結(jié)束地址(注意兩種16進(jìn)制的表示方法在這里都可以接受),輸出結(jié)果在信息輸出窗口中顯示出來通過命令行修改數(shù)據(jù)例如,我們想把p1 口的值從0x02數(shù)據(jù)修改成0x04 ,可在命令輸入窗口輸入p1=0x04”,回車即可完成,此時如果p1 口接有l(wèi)ed,將立即看到led狀態(tài)改變通過Memory窗

9、口可以看到修改后的數(shù)據(jù):在地址欄輸入d:OOH然后回車。儲存器1的d:0x90后的第一個數(shù)據(jù)就變成了04 ,這正是我們剛才修改的結(jié)果S!亡口 口口 retfl-d to Men it dr-5 1 "宇上:pl-0x04P:0t70FF FF F? FF FF 注D: Dx 7EFF FF FF 07 GD D0n0x&4FF FF 00 10 0Q 00Dj DiEAJKl-CHJ OD LID CD FF:(J 1 FF FF FF FF FFF :恤宇&FT FF 00 FF FF FFn: :- 1FF FF FF FF FF FFD:OxAZE2 FF FF

10、 FF FF FFn: mm01 na Q0 FF FF FFD:&nAEFF fF FF FF 汗汀ri ; rikB*FF FF FF ff SD DODJUiEAFF Ff FF FF FF FF0- Dx.CQJ5 FF FF FF FF FID:DIC&Fr FF DO FC OD DCPTDjfCC0G 00 FF FF DQ FFD;0xD2FF FF FF J4 fF FFint p 址7. 觀察/修改變量的值在暫停程序運(yùn)行時,可以觀察到有關(guān)的變量值在 監(jiān)視/調(diào)用堆棧(Watch)窗口 “局部”頁自動顯示當(dāng)前正在使用的局部變量,不需要用戶自己添加。監(jiān)視(Watc

11、h)頁顯示用戶指定的程序變量。(先按 F2鍵,然后輸入變量的名稱例如“ delay ”然后回車)國範(fàn)口閃4&©DfiG OOOOH:LJHP HAIN;jiioxitni+nn i ni imof& ooaoff:MAINE MOV Pl.fODBHDE Lay :KUinected Ld陀小"T若芋一 f r 移動鼠標(biāo)光標(biāo)到要觀察的變量“ delay ”上停留大約一秒鐘,就彈出一個“變量 提示”塊出來xff xff xff Kff x45 x8?xOO xOO kOT xOOOO :D± xOOACALL DELay : KOV Pl,fO6DH

12、 ACALL DELay ; MOV Pl,fOB6H ACALL DE Lay .-T AJHP MATH ;IdehyXFOOOMl d2:djnz t6,d2djnt rTjdl retend;0L10110I;10110110;莊時子程序?qū)⑹髽?biāo)移動到一個變量名“ di”的上面,點(diǎn)擊鼠標(biāo)右鍵,出現(xiàn)快捷菜單,選中:“增加di到觀察窗口” ( Add “di” to Watch Windows,) 選項,子菜單中會出現(xiàn)#i和#2的選項,點(diǎn)擊后該變量就會加入對應(yīng)的監(jiān)視 /調(diào)用堆棧上 一 I:梓fMfTtf叢r .-hr.! hgI.JfPt Lif j時 ItP 1UIN!MBCMS ,:-J

13、ETf ,.ut*t口 Hnftt t# 11:-n»ltfr4ft ft若崩押甌ft d g 0 xi <n切用疔(Watch)窗口。增加di到觀察窗口” ( Add “di” to Watch Windows,)選項后 對應(yīng)的監(jiān)視窗口顯示了 di的值C .0x0093 修改變量的數(shù)值方法:用鼠標(biāo)左鍵點(diǎn)擊該行的變量數(shù)據(jù)欄,然后按 F2鍵出現(xiàn)文本輸入欄后,輸入修改的數(shù)據(jù),確認(rèn)正確后按回車鍵。8. 復(fù)位如果用戶想重新開始運(yùn)行用戶程序,可以點(diǎn)擊工具欄上的復(fù)位按鈕,對仿真器的 用戶程序進(jìn)行復(fù)位。仿真器復(fù)位后,程序計數(shù)器PC指針將復(fù)位成0000H,另外, 一些內(nèi)部特殊功能寄存器在復(fù)位期

14、間也將重新賦值,例如A將變?yōu)?0H, DPTR變?yōu)?000H,SP變?yōu)?7H, I/O 口變?yōu)?FFH,此時用戶板上的 P1 口所接LED 指示燈會全部熄滅。9. 設(shè)置斷點(diǎn)將光標(biāo)移至待設(shè)置斷點(diǎn)的源程序行,如“MOV P1,#0B6H行。點(diǎn)擊工具欄上的“斷點(diǎn)”圖標(biāo),可以看到源程序窗口中該行的左邊出現(xiàn)了一個紅色的斷點(diǎn)標(biāo)記。HOV Pl,#aB6H J10110I10(如果再點(diǎn)一下這個圖標(biāo)則清除這個斷點(diǎn))同樣的方法,您可以設(shè)置多個斷點(diǎn)1 0*MATH: MOV P1,#ODBHACALL DELay ;HOV PlQSDH ;Q1101101 也CALL DEL呵:ACALL DELay ;AJMP

15、 MAIN ;delay: Aov:逐時子柱10. 帶斷點(diǎn)的全速運(yùn)行按動F5啟動全速運(yùn)行,全速執(zhí)行程序,當(dāng)程序執(zhí)行到第一個斷點(diǎn)時,會暫停下來,這時你可以觀察程序中各變量的值及各端口的狀態(tài),如下圖:第一個斷點(diǎn)在movp1,#06dh 之后,此時在儲存器窗口 MemorWindowS ,儲存器 1( Memory#)的地址輸入欄內(nèi)輸入“ D:000h”,按回車鍵后,可以從內(nèi)部可直接尋址地址數(shù)據(jù)為6D和程序設(shè)計的相同!wv yvwn jIt.fotziiIb-.ALi REP RjU. wnr E:m”44eAj |Ji&&112c”ni. ifir4£Lt.'.

16、iffer rr紳呼ei 如00 SO DODOtrt F bf 1r.rxic :FTFTFFFFFFFFFFFTFFFFFFFFFFFFFFFTFTFT 1L r Bi&C :FfFTFfFFFFF臣FFF¥FfFFFFFFFFFFFFFFFTFT 1&UrrnFFITFFrrFFDOrrFFrrFFFFrrFFFfFf 1ritttiCD:3SFFFFFFFFvbtFFFTDOFC00加10FFFF0DFF 1p: GrFC* rDDFFFFFFFFFFFFFFFFDE!000000QOnoFFFIFT 1Dl HxZD :rrFFFFFFrrFFFFFTFTF

17、FFFFF*FrrrrrrrrFT 1T -H.;FfFFfFFFFFJT汗FF打FFFFFF并FF嚴(yán)FFwFF |a%®/Ff0?0000IFF?£0DID00000G00DOICFFeIf 1D.HXBLLFTFTFFFFFFFFFFFFBDGFFFFFFFFFFFFTSFT 1I?二護(hù)uE© r曲FTFFFFFFFFFFFT肌oc0000000agFFDiFF 1FrFf料fFffftFFFFFFFFFFfFFFrrtrFJfl 1此時用戶目標(biāo)板上會顯示當(dāng)前斷點(diǎn)的狀態(tài),繼續(xù)按動F5啟動全速運(yùn)行,程序執(zhí)行到第二個斷點(diǎn)時,會暫停下來,在變量觀察窗口中,RAM的值

18、應(yīng)為B6;繼續(xù)按動F5啟動全速運(yùn)行,程序又會執(zhí)行到第一個斷點(diǎn)處暫停, 此時用戶目標(biāo)板上的 燈又顯示相應(yīng)的狀態(tài)。斷點(diǎn)是仿真器調(diào)試的重要手段,請您仔細(xì)反復(fù)的練習(xí)直到 熟練。11清除程序中所有斷點(diǎn)如果想取消全部的斷點(diǎn)全速運(yùn)行時, 要是逐個取消將是很煩瑣的事,我們只要點(diǎn)擊工具欄相應(yīng)的圖標(biāo),就可清除程序中所有斷點(diǎn)。12執(zhí)行到光標(biāo)處在體驗“執(zhí)行到光標(biāo)處”之前,我們先點(diǎn)擊工具欄上復(fù)位的圖標(biāo),對仿真器的用戶程序進(jìn)行復(fù)位,把鼠標(biāo)放在想要停止的行點(diǎn)一下,再按“執(zhí)行到光標(biāo)處”程序全速執(zhí)行到光標(biāo)所在行,這與我們在前面看到的帶斷點(diǎn)的全速運(yùn)行相類似。13.退出仿真 先點(diǎn)擊調(diào)試工具欄“暫?!卑粹o,再點(diǎn)擊調(diào)試工具欄的“復(fù)位”

19、復(fù)位,再點(diǎn)擊 開 啟/關(guān)閉調(diào)試模式按鈕,則退出仿真狀態(tài),就又重新回到編輯模式。(如果不能正確退出,請按一下仿真器上的復(fù)位按鈕)此時可以對程序修改,然后重新編譯,再按開啟 /關(guān)閉調(diào)試模式按鈕,就又進(jìn)入 仿真模式了。請注意!由于KEIL軟件在仿真狀態(tài)時和仿真器始終保持通信聯(lián)系,為此退出仿 真的時候最好按照以上順序退出,不要強(qiáng)行退出,否則容易造成電腦死機(jī)。到這里也就完成了 keil軟件的標(biāo)準(zhǔn)操作過程,由于KEIL操作過程較復(fù)雜,請您 自行練習(xí)直到熟練!常見問題FAQ:為何仿真狀態(tài)不能正確的聯(lián)機(jī)?1您可能沒有正確的安裝好USB驅(qū)動,如果安裝正常,系統(tǒng)的:控制面板 系統(tǒng) 硬件 設(shè)備管理器中看到以下端口信

20、息,表示系統(tǒng)已經(jīng)正確的安裝了 USB驅(qū)動。 如果沒有顯示下面的信息,請你重新安裝 USB驅(qū)動或者換一臺電腦安裝USB驅(qū)動:有的時候如果您更換了 USB 口也可能需要重新安裝USB驅(qū)動。2 仿真需要 keil uv2 7.0 以及以上的版本軟件,(有些早期版本的 KEIL 不能兼容請謹(jǐn)慎) 并且注意這個軟件必須安裝在 c 盤的根目錄,不能安裝在其他的目錄!建立文件的時候,也不要保存在其他的目錄, 更不要使用中文的文件名和文件夾。3串口的選擇是否正確(如果是新系統(tǒng)沒有安裝其他 usb設(shè)備一般是com3) ?由于仿真/燒寫都需要用到 串口,為此:仿真操作時,必須關(guān)閉掉XLISP燒寫軟件,串口調(diào)試等可

21、能用串口的軟件。4 仿真器是否已經(jīng)復(fù)位?請按一下仿真器的復(fù)位鍵, 注意短按一下, 喇叭 “滴”的響一下表示復(fù)位 ok. 如果是長按 3 秒以上喇叭“滴滴”響兩下,是脫機(jī)運(yùn)行狀態(tài)并不是復(fù)位,需要重新按復(fù)位。您可能沒有把keil 的通信速度設(shè)置到 115200。所有的選項如果您沒有把握,必須嚴(yán)格按照上面說明的嚴(yán)格進(jìn)行。5 檢查一下晶體頻率設(shè)置,至少您要選擇一個晶體系統(tǒng)才能運(yùn)行,如果對此有疑問請您改一個晶體頻率。6檢查您的仿真頭的方向插入是否正確?特別注意,仿真頭的第一腳(紅色)對應(yīng)cpu的第一腳??梢杂萌f用表檢查一下。如果插入目標(biāo)板反了,則系統(tǒng)可能會發(fā)熱,燈變暗,請立即調(diào)換方向。7 您的目標(biāo)板可能本身不正常,沒有正確的時鐘和復(fù)位(雖然這些不是仿真器所必需的)您可以用直接燒 片的方式運(yùn)行,如果運(yùn)行正常,則表示目標(biāo)板正常。8 被仿真的目標(biāo)板需要另外供電嗎?仿真頭本身可以提供 5V500MA的電源供給外部目標(biāo)板使用, 一般情況下已經(jīng)足夠 51系統(tǒng)的使用,如果您感 覺不夠也可以在外部目標(biāo)板另外供給 5V 電源并聯(lián)運(yùn)行,系統(tǒng)設(shè)計了完善的保護(hù),不會

溫馨提示

  • 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

提交評論