資源描述:
《Keil軟件仿真調試.doc》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、51TRACER仿真調試高級技巧進入調試狀態(tài)后,Debug菜單項中的命令可以使用了,有關編譯的工具欄按鈕消失了,出現(xiàn)了一個用于運行和調試的工具欄,Debug菜單上的大部份命令都有相應的快捷按鈕。從左到右依次是復位、運行、暫停、單步跟蹤、單步、執(zhí)行完當前子程序、運行到當前行、下一狀態(tài)、打開跟蹤、觀察跟蹤、反匯編窗口、觀察窗口、代碼作用范圍分析、1#串行窗口、內存窗口、性能分析、工具按鈕命令;然后按一下圖示第二個“運行”按鈕。連接上相關的實驗資源,本實驗用一條8PIN的數據排線把實驗儀的CPU部份的P1口(JP44)連接到八路指示
2、燈部份的JP32。這時你會看到實驗儀的八個紅色LED,輪流點亮,表示運行成功,也可以查看相關的變量和參數,非常方便。⒈單步跟蹤運行使用菜單Debug->Step或上圖第四個單步運行按鈕或使用快捷鍵F11可以單步跟蹤執(zhí)行程序,在這里我們按下F11鍵,即可執(zhí)行該箭頭所指程序行,每按一次F11,可以看到源程序窗口的左邊黃色調試箭頭指向下一行,如果程序中有Delay延時子程序,則會進入延時程序中運行。?⒉單步運行如果Delay程序有錯誤,可以通過單步跟蹤執(zhí)行來查找錯誤,但是如果Delay程序已正確,每次進行程序調試都要反復執(zhí)行這些程序
3、行,會使得調試效率很低,為此,可以在調試時使用F10來替代F11(也可使用菜單StepOver或相應的命令按鈕),在main函數中執(zhí)行到Delay時將該行作為一條語句快速執(zhí)行完畢。為了更好的進行對比,我們重新進入仿真環(huán)境,將反匯編窗口關閉,不斷按F10鍵,可以看到在源程序窗口中的左邊黃色調試箭頭不會進入到延時子程序。⒊全速運行點擊工具欄上的“運行”按鈕或按F5鍵啟動全速運行,全速執(zhí)行程序,此時用戶板上的P1口所接LED以流水燈狀態(tài)顯示。⒋暫停點擊工具欄上的按鈕,此時用戶板上的P1口所接LED停止以流水燈狀態(tài)顯示,只有一個LED
4、燈點亮(取決于暫停前的P1的值)。⒌觀察/修改寄存器的值Project窗口在進入調試狀態(tài)后顯示Regs頁的內容,包括工作寄存器R0~R7的內容和累加器A、寄存器B、堆棧指針SP的內容。用戶除了可以觀察以外還可自行修改,例如將寄存器a的值0x62改為0x85。方法一:用鼠標點擊選中單元a,然后再單擊其數值位置,出現(xiàn)文字框后輸入0x85按回車鍵即可;方法二:在命令行窗口,輸入A=0x85,按回車鍵將把A的數值設置為0x856.觀察/修改存儲器的數據點擊菜單“視圖View->儲存器窗口MemoryWindows”,便會打開儲存器Me
5、mory窗口(如窗口已打開,則會關閉),Memory窗口可以同時顯示4個不同的存儲器區(qū)域,點擊窗口下部分的編號可以相互切換顯示。在儲存器1(Memory#1)的地址輸入欄內輸入“D:0e0h”,按回車鍵后,可以從內部可直接尋址RAM的e0H地址處開始顯示,e0H地址的值就是寄存器a的值,應與主寄存器窗口下的值相同。點擊窗口下部分的儲存器2(Memory#2),在Address輸入欄內輸入“D:0e0h”,按回車鍵后,可以從內部可間接尋址RAM的e0H地址處開始顯示。點擊窗口下部分的Memory#3,在Address輸入欄內輸入
6、“C:0x0021”,按回車鍵后,可以從代碼區(qū)域0000H地址處開始顯示,這時各地址值應與在反匯編窗口中的值相同。點擊窗口下部分的Memory#4,在Address輸入欄內輸入“X:00h”,按回車鍵后,可以從xdataRAM區(qū)域0000H地址處開始顯示。通過Memory窗口修改數據在Memory窗口中顯示的數據可以修改。例如,要改動data區(qū)域OXE0地址的數據內容:把鼠標移動到該數據的顯示位置,按動鼠標右鍵在彈出的菜單中選中:更新儲存器“ModifyMemoryatD:0xE0”,在彈出對話框的文本輸入欄內輸入相應數值,按
7、回車鍵或點擊OK,修改完成。通過命令行查看數據例如,我們想查看data空間從0x01到0x03地址的內容,可在命令輸入窗口輸入“dd:0x01,03H”,回車即可完成,d表示data空間,0x01表示起始地址,03H表示結束地址(注意兩種16進制的表示方法在這里都可以接受),輸出結果在信息輸出窗口中顯示出來。通過命令行修改數據例如,我們想把p1口的值從0x02數據修改成0x04,可在命令輸入窗口輸入p1=0x04”,回車即可完成,此時如果p1口接有l(wèi)ed,將立即看到led狀態(tài)改變。通過Memory窗口可以看到修改后的數據:在地
8、址欄輸入d:00H然后回車。儲存器1的d:0x90后的第一個數據就變成了04,這正是我們剛才修改的結果。?7.觀察/修改變量的值在暫停程序運行時,可以觀察到有關的變量值。在監(jiān)視/調用堆棧(Watch)窗口“局部”頁自動顯示當前正在使用的局部變量,不需要用戶自己添加。監(jiān)視(Wa