<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)Keil軟件仿真與調(diào)試技巧

          單片機(jī)Keil軟件仿真與調(diào)試技巧

          作者: 時(shí)間:2012-08-21 來(lái)源:網(wǎng)絡(luò) 收藏

          5.程序

          源程序編譯通過(guò),表明語(yǔ)法正確,卻并不能保證該程序能夠正確運(yùn)行。還需要對(duì)其邏輯功能進(jìn)行。具有很強(qiáng)的功能。

          鼠標(biāo)左擊主菜單Debug一>Sta№top DebugSession子菜單或/編輯模式切換按鈕。進(jìn)入調(diào)試程序工作模式,窗口如圖5所示。重復(fù)點(diǎn)擊該按鈕可以實(shí)現(xiàn)在編輯模式和調(diào)試模式之間進(jìn)行切換。

          圖5程序調(diào)試運(yùn)行
          圖5程序調(diào)試運(yùn)行。

          調(diào)試程序時(shí)的程序運(yùn)行控制按鈕從左到右依次為復(fù)位、連續(xù)運(yùn)行,暫停、單步、過(guò)程單步、執(zhí)行完當(dāng)前子程序、運(yùn)行到光標(biāo)當(dāng)前行。復(fù)位按鈕模擬芯片的復(fù)位,它將使程序回到最開(kāi)頭處執(zhí)行。當(dāng)程序處于停止?fàn)顟B(tài)時(shí)復(fù)位才有效,程序處于運(yùn)行狀態(tài)時(shí)停止按鈕才有效。

          ①為了方便觀察程序調(diào)試過(guò)程中各變量和RAM單元的中間結(jié)果。點(diǎn)擊主菜單View一>WatchCall Stack Window和View一>Memory Window打開(kāi)觀察變量窗13和存儲(chǔ)器窗1:3進(jìn)行顯示。由于本例還要觀察P1 13的輸出變化,可以點(diǎn)擊主菜單Peripherals一>I/O-Ports一>Port 1打開(kāi)I/O 13 P1的觀察窗13.

          ②程序調(diào)試。

          程序可以單步執(zhí)行或連續(xù)執(zhí)行。連續(xù)執(zhí)行是指一條指令執(zhí)行完后接著連續(xù)立即執(zhí)行下一條,中間不停止。這樣程序執(zhí)行的速度很快??梢钥吹匠绦驁?zhí)行的總體效果。即最終結(jié)果是正確或錯(cuò)誤。但如果程序有錯(cuò),則難以確認(rèn)具體出錯(cuò)地方。例如本例中點(diǎn)擊連續(xù)運(yùn)行按鈕后。P1口輸出01H后便始終保持不變。這顯然與花樣彩燈程序的循環(huán)顯示要求不符。程序運(yùn)行出錯(cuò),如圖6所示。

          圖6程序調(diào)試時(shí)的連續(xù)運(yùn)行
          圖6程序調(diào)試時(shí)的連續(xù)運(yùn)行。

          單步執(zhí)行指每執(zhí)行完一條指令后即停止。等待命令執(zhí)行下一行程序,此時(shí)可以觀察該條指令執(zhí)行后得到的實(shí)際結(jié)果。對(duì)比分析是否與預(yù)期結(jié)果一致。

          借此可以找到程序中的錯(cuò)誤原因所在。這種方式的缺點(diǎn)是需要時(shí)間長(zhǎng),排查錯(cuò)誤效率很低。尤其當(dāng)程序很大時(shí)。

          因此,對(duì)于用戶確認(rèn)沒(méi)有錯(cuò)誤的程序段可以采用連續(xù)運(yùn)行。對(duì)懷疑出錯(cuò)或容易出錯(cuò)的地方則單步執(zhí)行。對(duì)比排查錯(cuò)誤。這樣調(diào)試的效率將會(huì)高一些。

          本例通過(guò)單步執(zhí)行。發(fā)現(xiàn)程序運(yùn)行過(guò)程中循環(huán)變量R3的值總在250和249之間變化,而且R1、R2、R7均始終無(wú)變化,如圖7所示。對(duì)比程序分析,發(fā)現(xiàn)出現(xiàn)了死循環(huán)。原因在于第1條DJNZR3,DEL2的轉(zhuǎn)移目的地址為DEL2,應(yīng)該改為DEL3.

          圖7程序調(diào)試時(shí)的連續(xù)運(yùn)行
          圖7程序調(diào)試時(shí)的連續(xù)運(yùn)行。

          回到編輯狀態(tài),修改為DJNZ R3,DEL3,編譯后再次進(jìn)入調(diào)試工作模式時(shí),發(fā)現(xiàn)故障已經(jīng)排除。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();